You were getting this error:
WorkletsError: [Worklets] Mismatch between JavaScript part and native part of Worklets (0.7.2 vs 0.5.1)
This happened because:
- Expo Go has a pre-built native module with Worklets 0.5.1
- Your JavaScript code was trying to use Worklets 0.7.2 (from react-native-reanimated)
- These versions don't match, causing a crash
I've replaced react-native-reanimated with React Native's built-in Animated API in all components:
- LessonCarousel.tsx - Progress bar animation now uses
Animated.Value - MobileSyllabus.tsx - Section expand/collapse uses simple state (no animation needed)
- BookmarkButton.tsx - Button animations use
Animated.springandAnimated.sequence - babel.config.js - Removed reanimated plugin
import Animated, { useSharedValue, withSpring } from 'react-native-reanimated';
const progress = useSharedValue(0);
progress.value = withSpring(100);import { Animated } from 'react-native';
const progress = useRef(new Animated.Value(0)).current;
Animated.spring(progress, { toValue: 100 }).start();-
Stop your current Metro bundler (Ctrl+C)
-
Clear cache and restart:
npx expo start --clear
-
Reload your app on your phone (shake device → Reload, or press
rin terminal) -
The error should be gone! 🎉
✅ Works with Expo Go (no native build needed) ✅ No version mismatches ✅ Smooth animations still work ✅ All features intact (swipeable lessons, progress tracking, bookmarks, etc.)
If you want to use react-native-reanimated in the future, you'll need to:
- Create a development build (not Expo Go)
- Run:
npx expo install react-native-reanimated - Rebuild the native app:
npx expo run:androidornpx expo run:ios
But for now, the built-in Animated API works perfectly! 🚀