In a real app
In a project, the install is checked at three points: react-native-reanimated and react-native-worklets in the dependencies at compatible versions (the compatibility table is in the docs), the react-native-worklets/plugin Babel plugin last in babel.config.js, and a native rebuild after installing. The “Native part of Reanimated doesn’t seem to be initialized” error almost always comes from a Metro cache or a skipped native build.
The API to know: useSharedValue, useAnimatedStyle, withTiming, withSpring, withDecay, the withDelay, withRepeat, withSequence modifiers, and useAnimatedScrollHandler for anything driven by scroll. The most common pitfall is reading a shared value’s .value during React render: you get the JS-thread value, not the one of the animation in flight. The second is doing heavy work inside a worklet, which then blocks the UI thread instead of the JS thread.
Reanimated 4 requires the New Architecture; a project still on the old one has to stay on 3.x. CSS animations (animationName, transitionProperty on an Animated.View) cover the simple cases with less code and are a good entry point for a team coming from the web. To measure, the Performance panel in React Native DevTools shows whether an animation is falling back onto the JS thread.
Related terms
Worklet
A small JavaScript function the Reanimated Babel plugin extracts to run on the UI thread, in a separate runtime.
Gesture Handler
Software Mansion’s library that recognizes gestures (pan, tap, pinch, and more) natively and composes them, with callbacks on the UI thread.
New Architecture
The rewrite of React Native internals (Fabric, Turbo Modules, JSI), on by default since 0.76 and the only architecture since 0.82.
JSI (JavaScript Interface)
The C++ API that lets JavaScript hold direct references to native objects with no serialization: the foundation of the New Architecture.
Fabric
The New Architecture renderer: a C++ core shared by iOS and Android that computes layout synchronously.