Primeros pasos
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-transitions`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/transitions/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Instalación
Sección titulada “Instalación”Puedes usar nuestro setup asistido por IA para instalar el plugin. Añade las skills de Capgo a tu herramienta de IA con el siguiente comando:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsLuego usa el siguiente prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-transitions` plugin in my project.Si prefieres la configuración manual, instala el plugin ejecutando estos comandos y sigue las instrucciones de cada plataforma:
-
Instala el paquete
Ventana de terminal npm install @capgo/capacitor-transitions -
Registra los web components
import '@capgo/capacitor-transitions'; -
Envuelve las páginas con rutas
<cap-router-outlet platform="auto" swipe-gesture="auto"><cap-page><cap-header slot="header"><h1>Inbox</h1></cap-header><cap-content slot="content"><button>Open message</button></cap-content><cap-footer slot="footer"><nav>Tabs</nav></cap-footer></cap-page></cap-router-outlet> -
Define la dirección antes de que el router cambie de ruta
import { setDirection } from '@capgo/capacitor-transitions/react';setDirection('forward');router.push('/message/42');setDirection('back');router.back();
React Setup
Sección titulada “Configuración de React”import { useEffect, useRef } from 'react';import { useNavigate } from 'react-router-dom';import { initTransitions, setDirection, setupPage, setupRouterOutlet } from '@capgo/capacitor-transitions/react';import '@capgo/capacitor-transitions';
initTransitions({ platform: 'auto' });
export function AppShell() { const outletRef = useRef<HTMLElement>(null);
useEffect(() => { if (!outletRef.current) return;
setupRouterOutlet(outletRef.current, { platform: 'auto', swipeGesture: 'auto', }); }, []);
return ( <cap-router-outlet ref={outletRef}> {/* Your router renders cap-page children here. */} </cap-router-outlet> );}
export function InboxPage() { const navigate = useNavigate(); const pageRef = useRef<HTMLElement>(null);
useEffect(() => { if (!pageRef.current) return;
return setupPage(pageRef.current, { onDidEnter: () => console.log('Inbox visible'), }); }, []);
return ( <cap-page ref={pageRef}> <cap-header slot="header"> <h1>Inbox</h1> </cap-header>
<cap-content slot="content"> <button onClick={() => { setDirection('forward'); navigate('/message/42'); }} > Open message </button> </cap-content> </cap-page> );}React JSX TypeScript
Sección titulada “React JSX TypeScript”Importación desde @capgo/capacitor-transitions/react incluye los tipos JSX para cap-router-outlet, cap-page, cap-header, cap-content, y cap-footer. En la mayoría de los proyectos de React, esa importación hace que los custom elements sean válidos en TSX automáticamente.
Si TypeScript sigue reportando Property 'cap-router-outlet' does not exist on type 'JSX.IntrinsicElements', añade un archivo de declaración de proyecto:
import '@capgo/capacitor-transitions/react';Para Vite, Create React App y la mayoría de apps React con webpack, colocar ese archivo dentro de src/ es suficiente. Para Next.js, ponlo en src/ o en la raíz del proyecto y asegúrate de que tsconfig.json lo incluya:
{ "include": ["src", "src/capgo-transitions.d.ts"]}Para configuraciones personalizadas de TypeScript o webpack que usen una types/ carpeta separada, incluye esa carpeta en su lugar:
{ "include": ["src", "types"]}Deslizar atrás
Sección titulada “Deslizar hacia atrás”Habilita o deshabilita el gesto de borde de iOS desde el markup:
<cap-router-outlet swipe-gesture="auto"></cap-router-outlet><cap-router-outlet swipe-gesture="true"></cap-router-outlet><cap-router-outlet swipe-gesture="false"></cap-router-outlet>O desde JavaScript:
const outlet = document.querySelector('cap-router-outlet');
outlet?.setSwipeGesture('auto');outlet?.setSwipeGesture(true);outlet?.setSwipeGesture(false);auto activa el gesto solo cuando Capacitor reporta un runtime nativo de iOS. Durante el gesto, la transición de página sigue al dedo. Al soltar, la transición se completa y solicita al historial del navegador volver atrás, o se cancela y restaura la página actual.
Para evitar que un elemento inicie el gesto, añade data-swipe-gesture-ignore:
<button data-swipe-gesture-ignore>Open drawer</button>Con navegación nativa
Sección titulada “Con Native Navigation”Usa @capgo/capacitor-transitions con @capgo/native-navigation cuando las barras superior e inferior deben ser nativas mientras el contenido web mantiene el movimiento de página estilo Ionic.
-
Instala y sincroniza el paquete de native navigation:
Ventana de terminal npm install @capgo/native-navigationnpx cap sync -
Configura el chrome nativo:
import { NativeNavigation } from '@capgo/native-navigation';await NativeNavigation.configure({contentInsetMode: 'css',});await NativeNavigation.setNavbar({title: 'Inbox',backButton: { visible: false },}); -
Deja que el outlet de transición web gestione solo las páginas:
<cap-router-outlet platform="auto" swipe-gesture="auto"><cap-page><cap-content slot="content" fullscreen><main class="native-page">Inbox content</main></cap-content></cap-page></cap-router-outlet>.native-page {padding-top: var(--cap-native-navigation-top);padding-bottom: var(--cap-native-navigation-bottom);} -
Controla ambos sistemas con los mismos eventos del router:
import { NativeNavigation } from '@capgo/native-navigation';import { setDirection } from '@capgo/capacitor-transitions/react';import { router } from './router';await NativeNavigation.addListener('navbarBack', () => {setDirection('back');router.back();});async function openMessage(id: string) {setDirection('forward');router.push(`/message/${id}`);await NativeNavigation.setNavbar({title: 'Message',backButton: { visible: true, title: 'Inbox' },});}
No vuelvas a renderizar la barra superior nativa como un elemento móvil <cap-header>. Deja @capgo/native-navigation que la barra sea nativa y usa @capgo/capacitor-transitions para el contenido de la página WebView que se encuentra debajo.
Componentes
Sección titulada “Componentes”<cap-router-outlet>
Sección titulada “<cap-router-outlet>”| Atributo | Tipo | Predeterminado | Descripción |
|---|---|---|---|
platform | 'ios' | 'android' | 'auto' | 'auto' | Estilo de animación |
duration | number | Predeterminado de la plataforma | Duración de la animación en ms |
keep-in-dom | boolean | true | Mantener páginas inactivas en el DOM |
max-cached | number | 10 | Máximo de páginas en caché |
swipe-gesture | boolean | 'auto' | 'auto' | Habilita, deshabilita o detecta de forma nativa el gesto de borde en iOS |
Métodos:
push(element, config?)pop(config?)setRoot(element, config?)setSwipeGesture(true | false | 'auto')
<cap-page>
Sección titulada “<cap-page>”Envuelve una página y emite eventos de ciclo de vida:
cap-will-entercap-did-entercap-will-leavecap-did-leave
<cap-content>
Sección titulada “<cap-content>”| Atributo | Tipo | Predeterminado | Descripción |
|---|---|---|---|
fullscreen | boolean | false | Permitir scroll del contenido detrás del header |
scroll-x | boolean | true | Habilitar scroll horizontal |
scroll-y | boolean | true | Habilitar scroll vertical |
Helpers del framework
Sección titulada “Framework Helpers”Los entrypoints del framework exponen los mismos helpers principales:
import { initTransitions, setDirection, setupPage, setupRouterOutlet } from '@capgo/capacitor-transitions/react';
initTransitions({ platform: 'auto' });setDirection('forward');setupRouterOutlet(element, { platform: 'auto', swipeGesture: 'auto' });setupPage(element, { onWillEnter, onDidEnter, onWillLeave, onDidLeave });Entrypoints disponibles:
@capgo/capacitor-transitions/react@capgo/capacitor-transitions/vue@capgo/capacitor-transitions/angular@capgo/capacitor-transitions/svelte@capgo/capacitor-transitions/solid
Continúa desde Getting Started
Sección titulada “Continúa desde Primeros pasos”Si estás usando Primeros pasos para planificar la migración y las operaciones enterprise, conéctalo con Uso de @capgo/capacitor-transitions para la capacidad nativa en Uso de @capgo/capacitor-transitions, Capgo Enterprise para el flujo de trabajo del producto en Capgo Enterprise, Alternativas a plugins de Ionic Enterprise para el flujo de trabajo del producto en Alternativas de Plugins de Ionic Enterprise, Alternativas a Capgo para el flujo de trabajo del producto en Alternativas a Capgo, y Consultoría de Capgo para el flujo de trabajo de productos en Capgo Consulting.