Matriz de versões vinculada ao Expo SDK 57. Reanimated 4 executa animações na thread da UI; Gesture Handler move o reconhecimento de toque para o nativo para que os arrastos permaneçam a 60fps. Instale-os como um par. Para valores compartilhados, molas e gestos compostos, consulte react-native-reanimated 4 e react-native-gesture-handler.
// babel.config.js - o plugin DEVE ser o últimomodule.exports = function (api) { api.cache(true); return { presets: ["babel-preset-expo"], plugins: ["react-native-reanimated/plugin"], };};
// app/_layout.tsx - GestureHandlerRootView na raizimport { Stack } from "expo-router";import { GestureHandlerRootView } from "react-native-gesture-handler";export default function RootLayout() { return ( <GestureHandlerRootView style={{ flex: 1 }}> <Stack /> </GestureHandlerRootView> );}
# Após a instalação ou alteração do babel - limpe o cache do Metronpx expo start --clear
Quando usar isso:
Arrastos com os dedos, pinças, painéis arrastáveis e ações de deslizar.
Animações que devem permanecer suaves durante a rolagem de listas ou trabalho pesado em JS.
Substituindo PanResponder ou Animated na thread JS para UI interativa.
## Verificação de instalação Reanimated + RNGH- [ ] npx expo install react-native-reanimated react-native-gesture-handler- [ ] package.json mostra ~4.0.0 e ~2.28.0 (via expo install)- [ ] babel.config.js - reanimated/plugin é o ÚLTIMO plugin- [ ] GestureHandlerRootView envolve o layout raiz- [ ] npx expo start --clear após alteração do babel- [ ] eas build --profile development após atualização da versão nativa- [ ] Gesto Pan testado em dispositivo físico (não apenas simulador)- [ ] npx expo-doctor passa
// ✅ Componentes e estilos Workletimport Animated, { useAnimatedStyle, useSharedValue } from "react-native-reanimated";// ❌ Não misture para UI controlada por gestosimport { Animated } from "react-native";
Plugin Babel não é o último - Worklets falham; animações travam na thread JS. Correção: Mova react-native-reanimated/plugin para o final da lista plugins; npx expo start --clear.
Fixar versões manualmente - npm install react-native-reanimated@latest quebra a ABI nativa. Correção: Sempre use npx expo install.
GestureHandlerRootView ausente - Gestos nunca disparam. Correção: Envolva a raiz de app/_layout.tsx.
Ler valores compartilhados no render do React - translateX.value no JSX não se inscreve. Correção: Leia apenas dentro de useAnimatedStyle.
Testar em Expo Go desatualizado - O cliente antigo não possui os bits nativos após a atualização. Correção: Reconstrua o cliente de desenvolvimento correspondente ao SDK 57.
Chamar setState dentro de useAnimatedStyle - Erros na thread do worklet. Correção: Use runOnJS(setState) apenas em onEnd do gesto.
react-native-reanimated~4.0.0 e react-native-gesture-handler~2.28.0. Execute npx expo install - não copie versões de posts de blog antigos.
Preciso de ambos os pacotes?
Instale ambos juntos. Gesture Handler é necessário para Gesture.Pan e conflitos de rolagem nativa; Reanimated gerencia valores da thread da UI a partir de callbacks de gestos.
Onde vai o plugin Babel?
Última entrada no array plugins de babel.config.js - após todos os outros plugins. Reinicie o Metro com --clear.
Reanimated requer a Nova Arquitetura?
Projetos do SDK 57 executam cada vez mais Fabric + Hermes por padrão. Reanimated 4 visa essa pilha.