Pular para o conteúdo

Animações a 60fps no React Native com Reanimated

Animações que engasgam no Android e fluem no iPhone têm causa conhecida. Veja como o Reanimated leva animações para a thread de interface.

Por Equipe We Codex3 min de leitura

Uma animação a 60 quadros por segundo tem 16 milissegundos para calcular cada quadro. Se a thread de JavaScript estiver ocupada carregando dados ou renderizando uma lista, quadros são perdidos e a animação engasga — especialmente em aparelhos Android mais simples.

Por que o Animated antigo sofre

A API Animated padrão pode delegar algumas animações ao nativo, mas qualquer lógica (seguir o dedo, reagir a rolagem) volta para o JavaScript.

O que o Reanimated muda

O Reanimated executa a lógica da animação diretamente na thread de interface, em funções chamadas *worklets*. A animação continua fluida mesmo se o JavaScript estiver ocupado.

tsx
const offset = useSharedValue(0)
const estilo = useAnimatedStyle(() => ({ transform: [{ translateY: offset.value }] }))
offset.value = withSpring(0, { damping: 18 })

Boas práticas

Teste no aparelho certo

O iPhone recente esconde problemas que o Android intermediário revela. Veja Testar em dispositivos reais: por que o emulador engana.

A We Codex desenvolve apps com animações nativas. Veja aplicativos nativos ou fale com a gente.

  • React Native
  • Reanimated
  • Animação
  • Performance
CompartilharWhatsAppLinkedIn

Resolver de vez, com quem faz isso todo dia

Tem um app em mente ou um app que precisa ficar mais rápido?

Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.