Build Once, Reach Everywhere
A 3-Day Intensive in React Native with Expo, React Native Web, and Modern App Capabilities
Modern app teams are under pressure to move faster without lowering quality. That is why React Native with Expo remains such a practical choice: it lets teams build native mobile experiences with a strong developer workflow, broad device API access, and a path to web delivery through React Native Web and Expo’s universal app model. React Native Web remains the compatibility layer that lets React Native components render on the web, while Expo Router supports navigation across native and web in a unified way.
This course is designed as a focused 3-day industry workshop rather than an academic survey. It covers the foundations of React Native with Expo, introduces React Native Web as a practical extension of the same codebase, and then moves into the app capabilities teams routinely ask for in real projects: push notifications, deep linking, biometric authentication, file and document workflows, global state management, and TypeScript-first TSX development. Expo currently provides maintained support for notifications, document picking, file system access, biometric authentication, and TypeScript setup, which makes it a suitable training base for these topics.
The instructor for this course brings over 30 years of industry experience and will teach with real industry-demanded content, focusing on the way production teams actually structure apps, choose tooling, and balance speed with maintainability.
Learning Outcomes
By the end of this course, participants will be able to:
- Explain how React Native, Expo, and React Native Web fit together in a modern cross-platform app strategy.
- Create and structure a React Native application using Expo with TypeScript and TSX.
- Build core screens, components, layouts, and navigation flows for mobile and web using current React Native and Expo Router practices.
- Apply responsive and platform-aware techniques when sharing code between mobile and web through React Native Web.
- Implement push notification basics, including token flow, receiving notifications, and handling user interaction.
- Implement deep linking concepts for screen routing and app entry points.
- Add biometric authentication using Expo’s local authentication capabilities.
- Handle documents and files using document picker and file system APIs.
- Compare global state approaches and choose between Context, Redux Toolkit, and Zustand based on project needs. Redux Toolkit is still the standard Redux approach, while Zustand remains a lightweight hook-based alternative.
- Organize a small production-style app with cleaner state boundaries, typed props, typed navigation inputs, and maintainable feature structure.
Prerequisites
- Experienced with JavaScript fundamentals
- Good React knowledge, including components, props, state, hooks, and JSX
- Familiarity with HTML and CSS concepts
- Advanced command line usage
- Prior exposure to npm or yarn package management
- TypeScript basics
- Mobile app development concepts such as navigation, forms, and API calls
Detailed Training Outline
- Course foundation and cross-platform application strategy
- What React Native is and where it fits
- Why Expo is commonly chosen as the framework entry point
- The role of React Native Web in a shared-code architecture
- Mobile-first versus universal app thinking
- Native capabilities versus shared business logic
- Understanding where one codebase helps and where platform divergence still matters
- Current ecosystem direction
- Framework-first React Native setup
- Expo-managed workflows and development ergonomics
- React Native Web as a compatibility layer
- TypeScript-first development expectations
- Performance and runtime considerations
- Hermes direction in current React Native releases
- New Architecture awareness at a conceptual level
- Development environment and project setup
- Creating a new Expo project
- Project bootstrapping choices
- Understanding the generated project structure
- Running the app on
- Android
- iOS
- Web
- Development tools and workflows
- Expo CLI basics
- Local development and preview flows
- Device and simulator testing
- Web preview and debugging
- Core configuration files
- App configuration
- TypeScript configuration
- Babel and Metro awareness
- Environment variable awareness
- Working with dependencies
- Expo-managed packages
- Third-party React Native libraries
- Version compatibility awareness
- TypeScript and TSX for React Native
- Why TypeScript matters in application teams
- TSX syntax and component authoring
- Typing props
- Typing component state
- Typing hooks and event handlers
- Typing async functions and API responses
- Shared types across features
- Utility types for app development
- Safer patterns for
- Forms
- Lists
- Reusable UI components
- State stores
- Migration mindset
- Moving from JSX to TSX
- Incremental typing strategies
- Common mistakes and anti-patterns
- React Native fundamentals with Expo
- Core primitives
- View
- Text
- Image
- ScrollView
- TextInput
- Pressable
- FlatList
- Styling model
- StyleSheet
- Inline styles
- Composition patterns
- Platform-specific style handling
- Layout system
- Flexbox in React Native
- Sizing and spacing
- Alignment patterns
- Scroll and content organization
- Component architecture
- Presentational and container boundaries
- Reusable UI patterns
- Feature-based structure
- State and rendering model
- Local component state
- Derived state
- Controlled inputs
- Rendering performance awareness
- Hooks in application development
- useState
- useEffect
- useMemo
- useCallback
- Custom hooks
- Core primitives
- Navigation and routing in modern Expo apps
- Navigation concepts in mobile and web
- File-based routing with Expo Router
- Route organization
- Nested routes
- Dynamic routes
- Layout routes
- Tabs, stacks, and modal patterns
- Passing data and route parameters
- Navigation state awareness
- Web route behavior and URL alignment
- Guarded routes and authenticated flows
- Route-based code organization
- React Native Web fundamentals
- What code sharing really means
- How React Native Web maps components to the browser
- Shared UI versus platform-specialized UI
- Designing components that work across
- Touch devices
- Desktop browsers
- Different viewport sizes
- Styling considerations for web compatibility
- Responsive design patterns
- Interaction differences
- Touch
- Mouse
- Keyboard
- Accessibility awareness for universal apps
- Web-specific constraints and opportunities
- Handling web-only and native-only concerns cleanly
- Universal navigation and route consistency
- Data flow and state management strategy
- Understanding state layers
- Local UI state
- Shared feature state
- Server state awareness
- Session and auth state
- Choosing the right state tool
- When local state is enough
- When Context becomes difficult
- When Zustand is a good fit
- When Redux Toolkit is justified
- Zustand
- Store fundamentals
- Hook-based access patterns
- Slices and modular store structure
- Type-safe store definitions
- Actions and selectors
- Persisting lightweight app state awareness
- Redux Toolkit
- Store setup
- Slices
- Actions
- Reducers
- Middleware awareness
- Async logic concepts
- Typed hooks
- Feature-based Redux organization
- Comparative decision-making
- Boilerplate versus control
- Team scalability
- Debugging and traceability
- Learning curve
- Suitability for small, medium, and larger applications
- State management anti-patterns
- Over-globalizing state
- Duplicated state
- Mutable update mistakes
- Navigation and state coupling issues
- Understanding state layers
- Working with APIs and asynchronous application behavior
- Fetching data in Expo apps
- Organizing service layers
- Async patterns with TypeScript
- Loading, error, and empty states
- Caching awareness
- Optimistic UI awareness
- Authentication and session-aware requests
- Coordinating async data with global state
- Push notifications
- Notification concepts and app use cases
- Expo notifications capability overview
- Notification lifecycle
- Permission request flow
- Token acquisition
- Registration concepts
- Delivery concepts
- Foreground and background behavior awareness
- Local notifications versus push notifications
- Notification payload awareness
- Handling notification responses
- Routing users from notifications into screens
- Platform considerations
- Android awareness
- iOS awareness
- Device testing constraints
- UX and product considerations
- Permission timing
- Relevance and personalization
- Avoiding notification fatigue
- Debugging and validation workflow
- Deep linking
- Why deep linking matters in modern app journeys
- URL schemes and app entry concepts
- Deep linking versus universal links and app links awareness
- Linking fundamentals in React Native
- Route mapping with Expo Router
- Deep linking into
- Public screens
- Authenticated screens
- Content detail screens
- Marketing and onboarding flows
- Parameter handling and validation
- Handling cold start and warm start flows
- Notification-to-screen linking patterns
- Testing and troubleshooting deep links
- Security and misuse awareness
- Biometric authentication
- Authentication layers in mobile apps
- Biometrics as a local authentication capability
- Expo local authentication overview
- Platform support awareness
- Face ID
- Touch ID
- Fingerprint prompt
- Basic biometric flow
- Capability check
- Enrollment awareness
- Prompt invocation
- Success and failure handling
- Biometrics and session design
- Re-authentication patterns
- UX considerations
- Fallbacks
- Retry rules
- User trust and consent
- Security boundaries
- What biometrics do and do not secure
- Local auth versus server auth
- Sensitive action confirmation patterns
- File and document handling
- Common document workflows in business apps
- Using document picker in Expo
- Selecting files from device providers
- Understanding file metadata
- Reading and storing file references
- File system fundamentals with Expo
- Local storage concepts
- Reading files
- Writing files
- Downloading files
- Temporary versus persistent file awareness
- Import workflows
- Picking documents
- Validating file types
- Size awareness
- Error handling
- Export workflows awareness
- Creating downloadable content
- Sharing concepts
- File lifecycle concerns
- Cleanup
- Permissions awareness
- Cross-platform inconsistencies
- User experience considerations for document-driven mobile apps
- Authentication and protected app flows
- Authentication concepts in Expo applications
- Session handling awareness
- Protected routes with Expo Router
- Login flow structure
- Token storage awareness
- Re-entry and app resume considerations
- Combining auth flows with biometrics
- Redirect logic and guarded navigation
- Web and native parity considerations
- Platform awareness and app quality
- iOS, Android, and web differences that matter
- Input and interaction differences
- Permission handling patterns
- Error boundaries and resilience
- Offline and weak-network awareness
- Performance thinking
- Rendering discipline
- List performance awareness
- Memoization awareness
- Avoiding unnecessary re-renders
- Accessibility basics
- Labels
- Focus awareness
- Touch target sizing
- Screen reader awareness
- Debugging workflow
- Logs
- Device testing
- Cross-platform verification
- Release-readiness mindset
- Application architecture for maintainability
- Folder structures for real projects
- Feature-first organization
- Co-locating UI, hooks, services, and types
- Shared component libraries
- Separating domain logic from presentation
- Managing configuration and constants
- Error and status modeling
- Reusable utility modules
- Team conventions and code quality expectations
- Capstone-oriented integration topics
- Bringing routing, state, auth, notifications, and file handling together
- Designing a small production-style app shell
- Shared layout and navigation structure
- Feature composition strategy
- Typed data flow across screens
- Cross-platform testing checklist
- Common integration pitfalls
- Route-state mismatch
- Permission sequencing issues
- Platform-specific behavior drift
- Type mismatches in async flows
- Delivery, deployment, and next-step awareness
- Development build awareness
- Preview and internal distribution awareness
- Web deployment awareness
- App store preparation awareness
- Production configuration awareness
- Monitoring and maintenance mindset
- Evaluating when to stay managed and when to expand native customization
Suggested Positioning for the Course
This outline fits a 3-day intensive hands-on program for developers, web engineers, or internal app teams who want a practical entry into Expo-based React Native development while still touching the capabilities that usually appear in real delivery work. It is especially suitable for teams that want to build toward a shared Android, iOS, and web strategy using TypeScript and current Expo tooling.
Practical, connected learning
My wider training approach brings hands-on implementation and systems thinking together, connecting technology with real operational needs.