用途:在 Expo/React Native 应用中构建或评审动效,涵盖 iOS、Android 与 Web。默认推荐 Reanimated 4,动画通过 worklets 在 UI 线程运行;手势与滚动驱动效果、进入/退出与重排动画、可中断的弹簧过渡、Expo Router/native-stack 页面转场均适用。自定义矢量/画布/着色器/粒子动画用 Skia,设计稿资产用 Lottie/Rive,仅当 3D 是产品主界面时用 R3F。
主要能力:Reanimated 共享值(useSharedValue)、useAnimatedStyle、with* 构建器、useDerivedValue、interpolate;react-native-gesture-handler 手势;布局动画(FadeIn/FadeOut/LinearTransition);useAnimatedScrollHandler 实现折叠/视差头部;Expo Router 转场;NativeWind 样式边界;Skia Canvas 与共享值互操作;无障碍与性能实践。
使用方式:先读取目标应用的 package.json、lockfile/包管理器声明与 app.json/app.config.*,确认架构与版本。安装命令(按目标仓库的包管理器执行): <repo-expo> install react-native-reanimated react-native-worklets react-native-gesture-handler(Reanimated 4 + 新架构);旧架构用 <repo-expo> install react-native-reanimated react-native-gesture-handler;Skia 可选装 @shopify/react-native-skia;最后执行 <repo-expo> install --check。Expo 的 babel-preset-expo 会自动配置 Worklets 插件;裸 React Native 需把 react-native-worklets/plugin 放在最后且不重复。应用根节点包 GestureHandlerRootView。跨运行时用 scheduleOnRN/scheduleOnUI,runOnJS/runOnUI 已弃用。
审计 CLI(可选):cargo install --path crates/expo-motion-audit --locked --force 安装;expo-motion-audit scan --root . --format json;expo-motion-audit scan --root . --categories worklets-threading,config。
限制:Reanimated 4 要求新架构;不要在渲染期或 JS 线程读写 sharedValue.value;不要动画宽度/高度等布局属性;高频回调中不要调 runOnJS/scheduleOnRN;必须提供 reduced motion 路径;Expo Go 不支持的包需用开发构建验证;不要混用 Reanimated 3 与 4 的模式。未提供具体收费与价格信息。