A hands-on learning template for teaching React web developers how to build React Native apps. Students build a functional Bucket List app in 40 minutes!
This workshop teaches React web developers React Native through a progressive, hands-on project. Students build a real app while learning mobile-specific concepts.
App Features:
- ✅ Add bucket list items with descriptions
- ✅ Mark items as complete/incomplete
- ✅ View active and completed items in separate tabs
- ✅ Data persists using AsyncStorage
- ✅ Clean, polished UI with empty states
Complete these steps BEFORE the workshop:
-
Install Node.js (v16+)
node --version # Should be 16.x or higher -
Install Expo Go on your phone/tablet
- iOS: App Store
- Android: Play Store
-
Clone and setup project
git clone [YOUR-REPO-URL] cd react-next-template npm install -
Test the app
npx expo start
Scan QR code with Expo Go app
react-next-template/
├── app/(tabs)/
│ ├── index.tsx # "My List" tab (active items)
│ └── explore.tsx # "Completed" tab
├── components/
│ ├── bucket-list-item.tsx # Individual item component
│ └── add-item-modal.tsx # Add item modal
├── hooks/
│ └── use-bucket-storage.ts # AsyncStorage hook
├── types/
│ └── bucket-item.ts # TypeScript interfaces
Each step includes:
- 🎯 Challenge: "Try implementing this yourself!"
- 💡 Hints: Comments guiding the approach
- ✅ Solution: Commented-out working code
Extensive comments comparing to React web:
/**
* 🌐 React Web Comparison:
* - <Pressable> is like <button> or onClick
* - Use onPress instead of onClick
* - Styling works like CSS-in-JS
*/- State Management (familiar territory - same as web!)
- Component Structure (same React patterns)
- Native Primitives (View, Text, FlatList)
- Mobile-Specific (AsyncStorage, Modal, Platform)
- Expo SDK 54 - React Native development platform
- Expo Router - File-based navigation
- TypeScript - Type safety
- AsyncStorage - Data persistence
- Expo Go - Testing on real devices
✅ React concepts transfer directly to React Native ✅ Different UI primitives (View vs div, Text vs span) ✅ Mobile-optimized components (FlatList) ✅ Touch interactions (onPress vs onClick) ✅ Styling with StyleSheet (vs CSS) ✅ Data persistence on mobile (AsyncStorage) ✅ Navigation patterns with tabs
After this workshop, students can:
- Build basic React Native apps using Expo
- Understand React Native vs React web differences
- Use core RN components (View, Text, FlatList, Pressable)
- Implement state management with hooks
- Persist data with AsyncStorage
- Navigate between screens
- Style components with StyleSheet
npx expo startnpx expo start -cnpx expo start --ios
npx expo start --android
npx expo start --webnpx tsc --noEmitFor quick learners who finish early:
- Edit existing items
- Add photos with expo-image-picker
- Custom completion dates
- Notes/comments on items
- Categories and tags
- Search/filter functionality
- Ensure phone and computer on same WiFi
- Try tunnel mode:
npx expo start --tunnel - Use web version: Press
win terminal
npx expo start -c # Clear cacherm -rf node_modules
npm installBuilt as a teaching template for React web developers learning React Native. Uses Expo SDK 54 with Expo Router for navigation.
Feel free to use this template for your workshops and courses!