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.

  • Design Web Não-Linear: Futuro da Experiência do Usuário

    Descubra como o design web não-linear está revolucionando a experiência do usuário e trazendo mais dinamismo e interatividade.

    Descubra como o design web não-linear está revolucionando a experiência do usuário e trazendo mais dinamismo e interatividade.

    Ler notícia completa
    Mãos de pessoas trabalhando com esboços de interfaces de usuário, marcadores e um smartphone sobre a mesa.
  • Redesign de Produto: Estratégias de Sucesso

    Descubra como Tyler Stone liderou o redesign completo de produto na Sensor Tower, aprimorando a experiência do usuário.

    Descubra como Tyler Stone liderou o redesign completo de produto na Sensor Tower, aprimorando a experiência do usuário.

    Ler notícia completa
    Imagem promocional de Tyler Stone, associado diretor de produto na Sensor Tower, com ícones dos logos da LogRocket e Sensor Tower, fundo gráfico azul.
  • NVIDIA: Futuro da Potência de IA de $4 Trilhões

    Descubra como a liderança de Jensen Huang levou a NVIDIA ao auge da IA e o que vem a seguir.

    Descubra como a liderança de Jensen Huang levou a NVIDIA ao auge da IA e o que vem a seguir.

    Ler notícia completa
    Homem careca em banner de podcast da UX Magazine sobre o futuro da NVIDIA em IA, titulado
  • Desenvolva apps de IA com React e MediaPipe

    MediaPipe é um framework do Google para executar modelos de IA em dispositivos, focado em tarefas de visão, como detecção de rosto e rastreamento de mãos. Agora, ele funciona como um framework de código aberto, construído com TensorFlow, ajudando desenvolvedores a criar aplicações robustas de IA para mídias em tempo real e estáticas em diferentes […]

    Aprenda a criar apps de IA em React usando APIs mais recentes do MediaPipe para detecção de objetos em tempo real.

    Ler notícia completa
    Ícone azul com a palavra
  • Como prosperar no mundo assistido por IA

    Como designer de produto, meu fluxo de trabalho era linear: abria o Figma, Photoshop, Keynote e seguia em frente. Hoje, no mundo assistido por IA, meu fluxo é não-linear, envolvendo múltiplas ferramentas e colaboração remota. A mudança nos hábitos de trabalho, acompanhando a aceleração da IA, transformou meu processo criativo. Produzo trabalhos melhores com menos […]

    Descubra como otimizar seu fluxo criativo no ambiente assistido por IA, aprimorando produtividade e criatividade.

    Ler notícia completa
    Ilustração gráfica de uma interface de usuário com painéis, um foguete 3D e texto sobre pensamento criativo no mundo da IA.
  • 12 exemplos de UX para evitar erros de usuário

    Erros de usuário são comuns, como senhas digitadas incorretamente ou botões mal rotulados. No entanto, muitos desses erros podem ser evitados com um design eficaz. Em vez de culpar os usuários, designers de UX buscam prevenir esses erros. Vamos explorar 12 exemplos reais de design UX que reduzem erros e melhoram a experiência do usuário, […]

    Descubra 12 exemplos de design UX que evitam erros de usuários, melhorando a experiência e a usabilidade.

    Ler notícia completa
    Ilustração de um navegador de internet estilizado com um coelho azul derrubado, uma flor e ícone de alerta em um fundo degradê verde-amarelo.
  • Impactos da IA na Próxima Geração de Designers

    Modelos de IA como ChatGPT e Gemini existem há poucos anos, mas já são parte essencial da vida cotidiana. Para gerações futuras, essas ferramentas sempre farão parte do cotidiano, assim como smartphones para adolescentes de hoje. Acredito que o impacto a longo prazo da IA será ainda maior que o dos smartphones. Já vemos a […]

    Descubra como a IA pode alterar a criatividade e o mercado de trabalho dos designers do futuro.

    Ler notícia completa
    Imagem de tela de um software de edição com o retrato de um homem com iluminação bicolor, azul e vermelho, sobre um fundo escuro.
  • Melhores Bibliotecas React UI para 2025

    Sem uma Interface de Usuário (UI), seria difícil trabalhar com a maioria dos aplicativos na web. No entanto, os desenvolvedores precisam de maneiras rápidas de construir essas UIs, aderindo às diretrizes de desenvolvimento. O React.js é uma maneira moderna de conseguir isso. Com nossa lista das melhores bibliotecas de componentes e frameworks React UI, você […]

    Descubra as 8 melhores bibliotecas e frameworks de componentes React UI para otimizar seus projetos em 2025.

    Ler notícia completa
    Ícone branco de um átomo com três órbitas entrelaçadas, centralizado em um fundo azul claro.
  • Melhores fontes numéricas para logos e designs 2025

    A maioria das fontes padrão inclui números, mas muitos designers focam em caracteres alfabéticos, negligenciando os números. Se números são um elemento-chave no seu design, é importante escolher uma fonte com números bem desenhados. Esta lista traz fontes onde os números são um destaque e funcionam bem em diversos projetos tipográficos. Essas fontes são ideais […]

    Descubra as melhores fontes numéricas para logos, tatuagens e infográficos em 2025.

    Ler notícia completa
    Ícones representando uma lista numerada de um a três em fundo roxo claro. Cada número é seguido por linhas horizontais que simulam texto.