Categorias do Site

Tutorial: Animações em React com View Transitions

Aprenda a usar as APIs View Transitions e Activity do React para animar um clone do AirBnB com técnicas modernas.

Imagem mostra o ícone azul abstrato de um átomo sobre um fundo texturizado que imita camadas de rocha em tons de marrom.

Neste tutorial, exploraremos as APIs ViewTransition e Activity do React, acompanhando passo a passo como utilizá-las em projetos reais. Os desenvolvedores aprenderão a aplicar essas novas funcionalidades em suas aplicações.

react view transitions and activity api tutorial

A equipe do React lançou as esperadas APIs View Transitions e Activity, ainda experimentais. A API View Transitions facilita a adição de animações a elementos no DOM com menos código JavaScript e CSS durante transições de páginas em aplicativos web.

A nova API React Activity oferece uma abordagem mais eficiente para pré-renderizar ou ocultar partes da UI enquanto preserva seu estado.

Como funciona a API React View Transition

A API React View Transition cuida das transições de visualização nos bastidores. Com ela, não é necessário interagir diretamente com a API de transição de visualização nativa. Ela aplica um view-transition-name ao nó DOM mais próximo dentro do componente .

Quando uma transição começa, o React executa métodos de ciclo de vida, aplica mutações no DOM, espera por fontes e navegação, mede alterações de layout e determina o que precisa ser animado.

Configurando suporte para recursos experimentais do React

Para explorar esses recursos experimentais, é necessário optar por uma versão experimental do React e configurar seu projeto conforme a documentação do React ou RFCs. Instale as versões experimentais para substituir os pacotes react e react-dom:

npm install react@experimental react-dom@experimental

Com esta configuração, você pode explorar a funcionalidade das APIs View Transitions e Activity e fornecer feedback antes de seus lançamentos oficiais.

Visão geral de nossa aplicação demo

Para tornar este tutorial o mais prático possível, trabalharemos com um projeto clone do AirBnB, explorando vários casos de uso para as APIs View Transitions e Activity.

O projeto abrange:

  • Animação de elementos em transições de página
  • Animação de um elemento compartilhado
  • Animação da reordenação de itens em uma lista
  • Animação a partir de conteúdo Suspense
  • Personalização de animações
  • Pré-renderização
  • Ocultar visualmente partes da UI enquanto preserva seu estado

Clone o projeto inicial para acompanhar este tutorial:

gif of air bnb starter project

Construindo roteadores habilitados para transições de visualização

Para trabalhar com a API React View Transitions, você deve configurar seus roteadores para permitir transições de visualização. A API suporta três gatilhos, startTransition, useDeferredValue e Suspense, para uma transição de visualização.

Adicione startTransition à configuração do seu roteador:

import {createContext, useTransition} from "react";
const RouterContext = createContext({ url: "/", params: {} });
export function Router({ children }) {
  const [isPending, startTransition] = useTransition();
  function navigate(url) {
    startTransition(() => {
      go(url);
    });
  }
  return (
      
        {children}
      
  )
}

Agora você pode adicionar ao componente App para animar entre transições de página:

import {useRouter} from './router';
import "./App.css";
import Listing from "./views/Listing";
import Home from './views/Home';
function App() {
  const { url } = useRouter();
  return (
    
      {url === "/" ?  : }
    
  )
}

Execute o aplicativo e você notará a animação de cross-fade sutil na transição de página entre a página inicial e a página de listagem.

Personalizando animações

Personalizar as animações padrão em transições de visualização é simples. Adicione a prop padrão ao componente e defina seu valor para a classe de transição (nome da classe CSS) aplicada pelo React durante a transição:

  {url === "/" ?  : }

Defina a transition-classname no CSS para controlar as transições de página usando CSS tradicional:

::view-transition-old(.transition-classname) {
    animation-duration: 1000ms;
}
::view-transition-new(.transition-classname) {
    animation-duration: 1000ms;
}

Com isso, você pode personalizar a animação padrão de cross-fade da transição de visualização.

Execute o aplicativo e você verá que o cross-fade é mais lento:

gif of slower cross fade view transitions api

Conclusão

Neste tutorial, exploramos as novas APIs View Transitions e Activity do React com exemplos práticos em um aplicativo do mundo real. Animamos elementos em transições de página, personalizamos animações e pré-renderizamos partes da UI enquanto preservamos seu estado.

Lembre-se de que recursos experimentais podem mudar ou ser removidos a qualquer momento. Evite utilizá-los em produção, pois podem quebrar seu aplicativo em futuras atualizações. Use-os apenas em ambientes de desenvolvimento e sempre verifique as notas de lançamento para alterações de compatibilidade.

  • 20 Mitos de Design de Rodapé e Como Corrigi-los

    Descubra como transformar o rodapé do seu site em uma ferramenta estratégica e envolvente. Desmitifique ideias ultrapassadas.

    Descubra como transformar o rodapé do seu site em uma ferramenta estratégica e envolvente. Desmitifique ideias ultrapassadas.

    Ler notícia completa
  • Perigos do BaaS e código vibe no backend

    Descubra os riscos escondidos do BaaS e código vibe no backend e como evitá-los para proteger sua aplicação.

    Descubra os riscos escondidos do BaaS e código vibe no backend e como evitá-los para proteger sua aplicação.

    Ler notícia completa
    Ícone de monitor com símbolo de interrogação e engrenagem sobre fundo de textura de mármore preto arranhado.
  • Redesign de Páginas de Suporte que Melhoraram a UX

    Transforme o suporte com redesigns inteligentes que melhoram a experiência do usuário e reduzem a necessidade de suporte ao vivo.

    Transforme o suporte com redesigns inteligentes que melhoram a experiência do usuário e reduzem a necessidade de suporte ao vivo.

    Ler notícia completa
    Ícone de janela de navegador com fones de ouvido roxos e um ponto de interrogação, sobre fundo colorido em movimento.
  • Nova identidade visual do cartão de Zurique

    A maioria dos passes de cidade parece algo que você guardaria na carteira e esqueceria. O Cartão de Zurique recebeu um tratamento oposto—graças ao Studio Marcus Kraft, agora parece uma peça de design que você realmente quer exibir. O redesign é centrado em uma forma estilizada de cartão, e é surpreendentemente versátil. Em um pôster, […]

    Cartão de Zurique ganha novo design flexível e atraente, oferecendo transporte gratuito e acesso a museus.

    Ler notícia completa
    Um folheto
  • Ferramentas de IA falham em contexto: soluções

    Atualmente, no desenvolvimento de software, muitos enfrentam um problema comum ao usarem ferramentas de IA para ajudar na codificação. Embora essas ferramentas possam sugerir soluções, frequentemente introduzem novos bugs, exigindo mais tempo de depuração. A pesquisa Stack Overflow 2025 indica que a confiança dos desenvolvedores na precisão da IA caiu para 33% devido à ineficiência […]

    Ferramentas de IA em programação falham em contexto. Descubra como contornar esse problema e otimizar seu uso.

    Ler notícia completa
    Ícone de rosto humano recortado em perfil com engrenagem e circuito integrado sobre fundo texturizado cinza, simbolizando tecnologia e inteligência.
  • Ações Photoshop para Efeitos de Esboço em 2025

    Transformar suas fotografias em esboços é uma excelente maneira de adicionar um toque artístico único ao seu trabalho. Mas como fazer isso sem desenhar manualmente cada imagem? A resposta está nas ações do Photoshop. Esta coleção de ações de Photoshop oferece várias opções para converter fotos em belos esboços. Elas simplificam o processo, garantindo que […]

    Descubra ações do Photoshop que transformam fotos em esboços artísticos de forma fácil e rápida.

    Ler notícia completa
    Desenho em azul de duas mulheres estilizadas, uma olhando de lado com expressão séria e a outra posando com um chapéu largo e um vestido justo. Logotipo do Photoshop no canto.
  • Erro ao Ignorar Pesquisa UX em Robo Advisor

    Às vezes, o sucesso do produto depende do comportamento do usuário. Nosso produto não estava quebrado, mas os usuários não estavam prontos para comprar. Nosso erro foi não entender os usuários. Criamos um robo advisor sem pesquisa de usuário, resultando em baixa adoção e zero impacto na receita. Após seis meses, implementamos um recurso de […]

    Descubra como a falta de pesquisa UX sabotou nosso projeto de robo advisor e a importância de ouvir os usuários.

    Ler notícia completa
    Ilustração estilizada de livros empilhados em tons de roxo, sobre fundo texturizado que imita papel envelhecido.
  • A transição silenciosa para Vite e seu impacto

    Este ano, Vite ultrapassou 140 milhões de downloads semanais, superando o Webpack e continuando sua tendência de crescimento. É surpreendente, considerando que Webpack foi o principal bundler para JavaScript por muito tempo. Com o Vite, os desenvolvedores agora desfrutam de tempos de construção mais rápidos e recargas automáticas instantâneas. Para entender essa mudança, vamos observar […]

    Vite é adotado em larga escala, ultrapassando Webpack com sua rapidez e simplicidade. Descubra o impacto dessa transição.

    Ler notícia completa
    Logo colorido em forma de raio sobre um fundo de folha verde com listras brancas.
  • O colapso do Stack Overflow e o impacto da IA

    A programação sempre foi um desafio complexo, e os desenvolvedores frequentemente recorrem a comunidades online, como o Stack Overflow, para encontrar soluções para problemas de desenvolvimento. No entanto, com o lançamento do ChatGPT no final de 2022, o uso do Stack Overflow começou a diminuir. Ferramentas de IA generativa passaram a oferecer respostas instantâneas para […]

    Stack Overflow em declínio com a ascensão da IA. Como a mudança afeta a programação e o futuro das comunidades de desenvolvedores.

    Ler notícia completa
    Logotipo estilizado de cor laranja sobre fundo texturizado preto que lembra uma superfície rochosa ou um muro descascado.