What's Included
- TypeScript source (Container.tsx)
- Configurable props (text, speedMs, cyclesPerFix, onComplete)
- Deterministic per-tick scramble worklet
- Demo screen
- README with install + usage
About the Project
Built with react-native-reanimated v4. A single shared value `progress` animates 0 to 1 with withTiming/Easing.linear; a useDerivedValue worklet maps that to a discrete tick, locks one more character per `cyclesPerFix` ticks, and fills the rest with a deterministic sin-based pseudo-random letter so the scramble is stable within a tick but changes as it advances. The text is pushed onto an Animated.createAnimatedComponent(TextInput) through useAnimatedProps, which keeps every frame on the UI thread with no JS bridge churn. The onComplete callback is marshalled back to JS with scheduleOnRN from react-native-worklets, and cancelAnimation cleans up on unmount. No native code beyond the standard Reanimated/Gesture Handler setup, so it runs in a dev client or bare Expo project. Tested on Expo SDK 56 (React Native 0.85, iOS + Android). Uses a monospace font (Inconsolata) for even character widths, swap fontFamily in the style for your own.