Mejorando la Experiencia de Usuario en Next.js con la API Nativa de Transiciones de Vista

Julio Quintana
Julio Quintana
Posted underBlog

Introducci贸n

Una de las claves para una buena experiencia de usuario en aplicaciones web es la suavidad en las transiciones entre p谩ginas. Con la nueva API nativa de transiciones de vista (View Transitions API), los desarrolladores pueden crear transiciones m谩s fluidas y nativas entre p谩ginas. En este post, exploraremos c贸mo integrar esta API en una aplicaci贸n Next.js.

驴Qu茅 es la API de Transiciones de Vista?

La API de Transiciones de Vista es una nueva especificaci贸n que permite a los desarrolladores crear transiciones fluidas y nativas entre diferentes estados de la aplicaci贸n, mejorando la experiencia del usuario sin recurrir a bibliotecas pesadas o complejas.

Implementaci贸n en Next.js

1. Configuraci贸n Inicial

Primero, aseg煤rate de que tu entorno de desarrollo est谩 listo y que tienes una aplicaci贸n Next.js configurada.

2. Modificar _app.tsx para Utilizar la API de Transiciones de Vista

Vamos a utilizar el evento routeChangeStart para iniciar la transici贸n y routeChangeComplete para finalizarla.

import { AppProps } from 'next/app';
import { useRouter } from 'next/router';
import { useEffect } from 'react';
import '../styles/globals.css';

function MyApp({ Component, pageProps }: AppProps) {
const router = useRouter();

useEffect(() => {
const handleRouteChange = () => {
if (document.startViewTransition) {
document.startViewTransition(() => Promise.resolve());
}
};

router.events.on('routeChangeStart', handleRouteChange);
return () => {
router.events.off('routeChangeStart', handleRouteChange);
};
}, [router]);

return <Component {...pageProps} />;
}

export default MyApp;

3. Personalizar las Transiciones

Puedes personalizar las transiciones utilizando CSS para definir c贸mo se ver谩n las animaciones. Por ejemplo:

/* styles/globals.css */
body {
transition: opacity 0.3s ease-in-out;
}

body.transitioning {
opacity: 0.5;
}

4. Aplicar Estilos durante las Transiciones

Utiliza JavaScript para agregar y remover la clase transitioning durante las transiciones de p谩gina:

const handleRouteChange = () => {
document.body.classList.add('transitioning');
if (document.startViewTransition) {
document.startViewTransition(() => {
document.body.classList.remove('transitioning');
return Promise.resolve();
});
} else {
document.body.classList.remove('transitioning');
}
};

Ejemplo Completo de _app.tsx

import { AppProps } from 'next/app';
import { useRouter } from 'next/router';
import { useEffect } from 'react';
import '../styles/globals.css';

function MyApp({ Component, pageProps }: AppProps) {
const router = useRouter();

useEffect(() => {
const handleRouteChangeStart = () => {
document.body.classList.add('transitioning');
if (document.startViewTransition) {
document.startViewTransition(() => Promise.resolve());
}
};

const handleRouteChangeComplete = () => {
document.body.classList.remove('transitioning');
};

router.events.on('routeChangeStart', handleRouteChangeStart);
router.events.on('routeChangeComplete', handleRouteChangeComplete);

return () => {
router.events.off('routeChangeStart', handleRouteChangeStart);
router.events.off('routeChangeComplete', handleRouteChangeComplete);
};
}, [router]);

return <Component {...pageProps} />;
}

export default MyApp;

Conclusi贸n

La API de Transiciones de Vista proporciona una forma poderosa y nativa de mejorar la experiencia del usuario con transiciones fluidas entre p谩ginas. Implementarla en tu aplicaci贸n Next.js es sencillo y puede marcar una gran diferencia en la percepci贸n de calidad y rendimiento de tu sitio web.

Espero que este post te haya sido 煤til.

Deja un comentario


Mas historias

C贸mo Optimizar tu Sitio Web para los Core Web Vitals en 2024: LCP, INP y CLS

Introducci贸n Los Core Web Vitals son un conjunto de m茅tricas desarrolladas por Google para evaluar la experiencia de usuario en la web. Estas m茅tricas son esenciales para el […]

Julio Quintana
Julio Quintana

C贸mo Integrar Google Analytics 4 en una Aplicaci贸n Next.js

Introducci贸n Google Analytics 4 (GA4) es la 煤ltima versi贸n de la herramienta de an谩lisis web de Google. Ofrece una serie de mejoras y nuevas caracter铆sticas sobre Universal Analytics. […]

Julio Quintana
Julio Quintana