Documentation Index
Fetch the complete documentation index at: https://resources.devweekends.com/llms.txt
Use this file to discover all available pages before exploring further.
Welcome to React Native Enterprise Mastery
This is the most comprehensive React Native course available—designed to transform you from a beginner into a senior mobile engineer capable of building and shipping enterprise-grade applications. With 51 in-depth modules, real-world projects, and battle-tested patterns used by companies like Meta, Shopify, and Discord, you’ll master everything needed to build professional iOS and Android apps.51 Comprehensive Modules
100+ Hours of Content
10+ Real Projects
Enterprise Patterns
Interview Ready
Lifetime Updates
Who Is This Course For?
React Developers
Mobile Developers
Full Stack Engineers
Tech Leads
Startup Founders
Career Changers
What You’ll Master
Course Curriculum
Part 1: Foundations (Modules 1-7)
Module 1: Introduction & Architecture
Module 1: Introduction & Architecture
01. Introduction & Architecture
- What is React Native and why use it
- React Native vs Native vs Flutter vs Ionic
- The JavaScript-to-Native bridge
- New Architecture: Fabric, TurboModules, JSI
- Hermes JavaScript engine
- When to choose React Native
Module 2: Environment Setup
Module 2: Environment Setup
02. Environment Setup
- Node.js and package managers
- Expo vs React Native CLI
- iOS setup (Xcode, CocoaPods, simulators)
- Android setup (Android Studio, SDK, emulators)
- VS Code configuration and extensions
- Debugging tools setup
Module 3: Project Structure & Best Practices
Module 3: Project Structure & Best Practices
03. Project Structure
- Feature-based folder structure
- Barrel exports and module organization
- Configuration management
- Environment variables
- Path aliases and absolute imports
- Monorepo considerations
Module 4: TypeScript in React Native
Module 4: TypeScript in React Native
04. TypeScript
- TypeScript configuration for React Native
- Typing components and props
- Navigation type safety
- API response typing
- Generic components
- Advanced TypeScript patterns
Module 5: Core Components Deep Dive
Module 5: Core Components Deep Dive
05. Core Components
- View and SafeAreaView
- Text and typography
- Image optimization and caching
- TextInput and keyboard handling
- Pressable and touch handling
- Platform-specific components
Module 6: Styling & Theming
Module 6: Styling & Theming
06. Styling & Theming
- StyleSheet API deep dive
- Dynamic styling patterns
- Dark mode implementation
- Theme providers and context
- Styled-components and Tamagui
- Design tokens
Module 7: Flexbox Mastery
Module 7: Flexbox Mastery
07. Flexbox Mastery
- Flexbox fundamentals
- Main axis vs cross axis
- Flex grow, shrink, and basis
- Absolute and relative positioning
- Responsive layouts
- Common layout patterns
Part 2: Navigation & State (Modules 8-12)
Module 8: Navigation Fundamentals
Module 8: Navigation Fundamentals
Module 9: Advanced Navigation
Module 9: Advanced Navigation
Module 10: State Management
Module 10: State Management
10. State Management
- useState and useReducer
- Context API patterns
- State lifting and prop drilling
- When to use global state
- State persistence
- State machine patterns
Module 11: Redux & Zustand
Module 11: Redux & Zustand
11. Redux & Zustand
- Redux Toolkit setup
- Slices and reducers
- RTK Query for data fetching
- Zustand for lightweight state
- Jotai and Recoil alternatives
- State persistence with MMKV
Module 12: Lists & Virtualization
Module 12: Lists & Virtualization
12. Lists & Virtualization
- FlatList optimization
- SectionList for grouped data
- FlashList for maximum performance
- Pull-to-refresh
- Infinite scrolling
- List item optimization
Part 3: Data & Networking (Modules 13-17)
Module 13: Forms & Validation
Module 13: Forms & Validation
13. Forms & Validation
- React Hook Form integration
- Zod and Yup validation
- Custom input components
- Form state management
- Multi-step forms
- File uploads
Module 14: Networking & APIs
Module 14: Networking & APIs
14. Networking & APIs
- Fetch API and Axios
- Request/response interceptors
- Error handling patterns
- Retry logic
- Request cancellation
- API client architecture
Module 15: React Query & Data Fetching
Module 15: React Query & Data Fetching
15. React Query
- React Query setup
- Queries and mutations
- Caching strategies
- Optimistic updates
- Infinite queries
- Prefetching and background refetch
Module 16: Local Storage & Databases
Module 16: Local Storage & Databases
16. Local Storage
- AsyncStorage basics
- MMKV for high-performance storage
- SQLite with Expo
- WatermelonDB for complex data
- Realm database
- Data migration strategies
Module 17: Authentication Patterns
Module 17: Authentication Patterns
17. Authentication
- JWT authentication
- OAuth and social login
- Biometric authentication
- Token refresh strategies
- Secure token storage
- Session management
Part 4: Native Features (Modules 18-21)
Module 18: Native Modules & APIs
Module 18: Native Modules & APIs
18. Native Modules
- Expo modules overview
- Device information
- Clipboard and sharing
- Haptic feedback
- App state and lifecycle
- Linking and deep links
Module 19: Camera & Media
Module 19: Camera & Media
19. Camera & Media
- Expo Camera
- Image picker
- Video recording
- Image manipulation
- Media library access
- Audio recording and playback
Module 20: Maps & Location
Module 20: Maps & Location
20. Maps & Location
- React Native Maps
- Expo Location
- Geofencing
- Background location
- Geocoding
- Custom map markers
Module 21: Push Notifications
Module 21: Push Notifications
21. Push Notifications
- Expo Notifications
- Firebase Cloud Messaging
- Local notifications
- Notification channels
- Rich notifications
- Background handling
Part 5: Animations & Performance (Modules 22-26)
Module 22: Animation Fundamentals
Module 22: Animation Fundamentals
22. Animation Fundamentals
- Animated API basics
- Timing and spring animations
- Interpolation
- Combining animations
- Layout animations
- Performance considerations
Module 23: Reanimated & Gestures
Module 23: Reanimated & Gestures
23. Reanimated & Gestures
- Reanimated 3 setup
- Worklets and shared values
- Gesture Handler integration
- Pan, pinch, and rotation gestures
- Animated styles
- Complex gesture interactions
Module 24: Performance Optimization
Module 24: Performance Optimization
24. Performance
- JS thread vs UI thread
- Memoization strategies
- Image optimization
- Bundle size reduction
- Hermes optimization
- Lazy loading
Module 25: Memory Management
Module 25: Memory Management
25. Memory Management
- Memory leak detection
- Cleanup patterns
- Image memory management
- Large list optimization
- Garbage collection
- Memory profiling
Module 26: Debugging & DevTools
Module 26: Debugging & DevTools
26. Debugging
- React DevTools
- Flipper integration
- Network inspection
- Performance profiling
- Native debugging
- Common issues and solutions
Part 6: Testing (Modules 27-29)
Module 27: Unit Testing
Module 27: Unit Testing
27. Unit Testing
- Jest configuration
- Testing components
- Mocking native modules
- Snapshot testing
- Testing hooks
- Code coverage
Module 28: Integration Testing
Module 28: Integration Testing
28. Integration Testing
- React Native Testing Library
- Testing navigation
- Testing forms
- API mocking
- Testing state management
- Async testing patterns
Module 29: E2E Testing with Detox
Module 29: E2E Testing with Detox
29. E2E Testing
- Detox setup
- Writing E2E tests
- Device interactions
- CI/CD integration
- Test artifacts
- Maestro alternative
Part 7: Production Readiness (Modules 30-36)
Module 30: Accessibility
Module 30: Accessibility
30. Accessibility
- Accessibility props
- Screen reader support
- Focus management
- Color contrast
- Testing accessibility
- WCAG compliance
Module 31: Security Best Practices
Module 31: Security Best Practices
31. Security
- Secure storage
- Certificate pinning
- Code obfuscation
- Jailbreak/root detection
- Data encryption
- Security auditing
Module 32: Offline-First Architecture
Module 32: Offline-First Architecture
32. Offline-First
- Offline-first patterns
- Network state detection
- Data synchronization
- Conflict resolution
- Queue management
- Optimistic UI
Module 33: Real-time Features
Module 33: Real-time Features
33. Real-time
- WebSocket implementation
- Socket.io integration
- Real-time state updates
- Presence indicators
- Live notifications
- Connection management
Module 34: Internationalization
Module 34: Internationalization
34. Internationalization
- i18next setup
- Translation management
- RTL support
- Date and number formatting
- Dynamic language switching
- Pluralization
Module 35: Profiling & Monitoring
Module 35: Profiling & Monitoring
35. Profiling
- Performance profiling
- Systrace and Perfetto
- Custom metrics
- APM integration
- User experience monitoring
- Performance budgets
Module 36: Error Handling & Crash Reporting
Module 36: Error Handling & Crash Reporting
36. Error Handling
- Error boundaries
- Global error handling
- Sentry integration
- Crash reporting
- Error recovery
- User feedback collection
Part 8: Architecture & Scaling (Modules 37-39)
Module 37: App Architecture Patterns
Module 37: App Architecture Patterns
37. Architecture Patterns
- Clean architecture
- Feature-based architecture
- Domain-driven design
- Dependency injection
- SOLID principles
- Architecture decision records
Module 38: Monorepo & Code Sharing
Module 38: Monorepo & Code Sharing
38. Monorepo
- Monorepo setup with Nx/Turborepo
- Shared packages
- React Native Web
- Code sharing strategies
- Build optimization
- Versioning strategies
Module 39: Expo Deep Dive
Module 39: Expo Deep Dive
39. Expo Deep Dive
- Expo modules
- Development builds
- Config plugins
- Custom native code
- EAS Build
- Expo updates
Part 9: DevOps & Deployment (Modules 40-45)
Module 40: CI/CD Pipelines
Module 40: CI/CD Pipelines
40. CI/CD
- GitHub Actions setup
- EAS Build integration
- Automated testing
- Code signing automation
- Release management
- Environment management
Module 41: App Store Deployment
Module 41: App Store Deployment
41. Deployment
- iOS build configuration
- Android build configuration
- App Store Connect
- Google Play Console
- App review guidelines
- Release strategies
Module 42: OTA Updates
Module 42: OTA Updates
42. OTA Updates
- EAS Update setup
- CodePush integration
- Update strategies
- Rollback mechanisms
- Version management
- Update analytics
Module 43: Analytics & Tracking
Module 43: Analytics & Tracking
43. Analytics
- Analytics architecture
- Firebase Analytics
- Mixpanel/Amplitude
- Custom events
- User properties
- Privacy compliance
Module 44: Feature Flags
Module 44: Feature Flags
44. Feature Flags
- Feature flag architecture
- LaunchDarkly integration
- Remote config
- Gradual rollouts
- Kill switches
- Experimentation
Module 45: A/B Testing
Module 45: A/B Testing
45. A/B Testing
- A/B testing fundamentals
- Firebase A/B Testing
- Experiment design
- Statistical significance
- Result analysis
- Iteration strategies
Part 10: Advanced Topics (Modules 46-51)
Module 46: Design Systems
Module 46: Design Systems
46. Design Systems
- Design system architecture
- Token-based design
- Component documentation
- Storybook for React Native
- Design-dev handoff
- Maintaining consistency
Module 47: Component Libraries
Module 47: Component Libraries
47. Component Libraries
- React Native Paper
- NativeBase
- Tamagui
- Gluestack UI
- Custom component libraries
- Library selection criteria
Module 48: Native Code Integration
Module 48: Native Code Integration
48. Native Integration
- Native module architecture
- iOS native modules (Swift)
- Android native modules (Kotlin)
- Native UI components
- Bridging patterns
- Third-party SDK integration
Module 49: New Architecture
Module 49: New Architecture
49. New Architecture
- New architecture overview
- Fabric renderer
- TurboModules
- JavaScript Interface (JSI)
- Codegen
- Migration strategies
Module 50: Interview Preparation
Module 50: Interview Preparation
50. Interview Prep
- React Native fundamentals
- Architecture questions
- Performance optimization
- System design
- Coding challenges
- Behavioral questions
Module 51: Capstone Project
Module 51: Capstone Project
51. Capstone Project
- User authentication
- Product catalog with search
- Shopping cart and checkout
- Payment integration
- Push notifications
- Analytics and monitoring
- App Store deployment
Prerequisites
Development Environment
- Required
- iOS Development
- Android Development
- Node.js 18+ - JavaScript runtime
- npm, yarn, or pnpm - Package manager
- VS Code - Recommended editor with extensions
- Expo Go - Mobile app for testing
Learning Path
Projects You’ll Build
1. Task Manager App
2. Weather App
3. Social Media Feed
4. Chat Application
5. E-Commerce App
6. Fitness Tracker
7. Photo Sharing App
8. Maps & Delivery App
9. Banking App
10. Enterprise Dashboard
Ready to Start?
Begin Your Journey
Interview Deep-Dive
You are a tech lead evaluating React Native for a fintech startup that needs to ship on iOS and Android within 4 months. What factors drive your decision, and what risks would you flag to the CTO?
You are a tech lead evaluating React Native for a fintech startup that needs to ship on iOS and Android within 4 months. What factors drive your decision, and what risks would you flag to the CTO?
- React Native is a strong fit here. A fintech startup with a 4-month timeline cannot afford separate iOS and Android teams (that is 8-12 engineers minimum). React Native lets 3-4 full-stack engineers ship both platforms from a single TypeScript codebase, with 90%+ code reuse.
- Key advantages for fintech specifically: over-the-air updates via EAS Update mean you can push compliance fixes and critical bug patches without waiting for App Store review (which can take 1-7 days). For a financial app, this is operationally significant.
- Risks to flag: performance-sensitive screens like real-time stock charts or complex financial calculators may need native modules. Plan for this upfront by choosing a modular architecture where these components can be swapped from JS to native without rewriting the surrounding screens. Also, fintech apps face stricter App Store review scrutiny — ensure biometric authentication, certificate pinning, and secure storage are implemented from day one, not bolted on later.
- The Hermes engine should be enabled (it is the default now), which gives 53% faster startup and 26% less memory usage compared to JSC. On budget Android phones (common in emerging markets), this is the difference between a usable app and one that gets uninstalled.
- This is a textbook case for a native module. Write the AR check scanning in Swift (using Apple Vision framework on iOS) and Kotlin (using ML Kit on Android). Expose a single
scanCheck()function to the JS layer via a TurboModule that returns the extracted check data (routing number, account number, amount). - The rest of the flow — confirmation screen, submission to your API, success/error handling — stays in React Native. The native module handles only the camera and ML inference, which need to run at native speed.
- Use Expo Modules if you are on Expo, or the standard TurboModule spec if on bare CLI. Either way, the JS-side API is a simple async function call. The 50 existing screens are completely untouched.
- At 200K DAU, also invest in a proper CI/CD pipeline with EAS Build for automated builds, Detox for E2E testing of the check scanning flow, and Sentry for crash monitoring specific to the native module.
Compare the old React Native bridge architecture with the new architecture (JSI, Fabric, TurboModules). Why does the difference matter for production apps?
Compare the old React Native bridge architecture with the new architecture (JSI, Fabric, TurboModules). Why does the difference matter for production apps?
- The old bridge was an asynchronous, JSON-serialized message queue between the JS thread and the native thread. Every interaction — layout measurements, native module calls, event dispatching — was serialized to JSON, put in a queue, and deserialized on the other side. This worked for most cases, but created three categories of problems: animation jank (each frame needed a round-trip), layout measurement delays (you could not synchronously measure a native view from JS), and startup overhead (all native modules loaded eagerly at launch).
- JSI (JavaScript Interface) replaces the bridge with direct C++ bindings. JavaScript can hold references to native C++ objects and call methods on them directly — no serialization, no async queue. This enables synchronous calls when needed (like measuring a view’s dimensions before rendering) while still supporting async calls for non-blocking operations.
- Fabric replaces the old UI Manager with a new renderer that creates a shared C++ shadow tree accessible from both JS and native threads simultaneously. This enables concurrent React features (Suspense, Transitions) and synchronous layout, which eliminates the “layout flash” where a component would briefly render with wrong dimensions.
- TurboModules replace the old NativeModules system with lazy-loaded, type-safe modules. Instead of loading every native module at startup (even those the user may never use), TurboModules load on first access. For an app with 30 native modules where the user only touches 5 in a typical session, this significantly reduces cold start time.
- In production, the aggregate impact is measurable: apps on the new architecture report 10-30% faster startup, smoother animations, and reduced memory usage. Meta’s own apps were the first to migrate, validating the improvements at scale.
- Migrate incrementally, not all at once. The new architecture supports interop mode where old-style native modules and Fabric components coexist with new-style ones. Start by enabling the new architecture in your app config, which activates JSI and the interop layer.
- Migrate native modules to TurboModules one at a time, starting with the simplest ones (pure data modules with no UI). Write Codegen specs in TypeScript, generate the native interfaces, and implement them. Test each module in isolation before moving to the next.
- The biggest risk is third-party library compatibility. Many popular libraries (Reanimated, React Native Screens, Gesture Handler) already support the new architecture, but check every dependency. Libraries that directly access the old bridge API will break. Audit your
package.jsonagainst the React Native New Architecture compatibility tracker. - Run performance benchmarks before and after each migration step. The new architecture should improve performance, but regressions can happen if a library’s interop path is slower than its old direct bridge path. Have rollback capability by maintaining a feature flag that switches between old and new architecture builds during the transition period.
A product manager asks you to guarantee 60fps scrolling performance on all supported devices, including 3-year-old budget Android phones. How do you approach this?
A product manager asks you to guarantee 60fps scrolling performance on all supported devices, including 3-year-old budget Android phones. How do you approach this?
- First, reframe the conversation: guaranteeing 60fps on every device is not realistic, but you can guarantee it on 95th-percentile devices and ensure graceful degradation on the rest. The key is defining a “minimum supported device” (e.g., Android devices with 3GB+ RAM, released 2021 or later) and testing against that baseline.
- For list performance specifically, use FlashList instead of FlatList. FlashList is Shopify’s drop-in replacement that uses a RecyclerView-inspired architecture — it recycles views aggressively, which matters enormously on memory-constrained Android devices. Set
estimatedItemSizeaccurately to avoid layout thrashing. - Optimize list items: wrap each item in
React.memowith a custom comparison function, avoid inline styles and arrow functions inrenderItem, useexpo-imagewith memory-disk caching for images (the built-in Image component does not cache on Android by default), and ensure images are served at the correct resolution (do not load a 2000px image into a 100px thumbnail). - Move expensive computations off the JS thread. Use
InteractionManager.runAfterInteractions()for non-urgent work,requestAnimationFramefor frame-aligned updates, and Reanimated worklets for animation-related calculations that must run on the UI thread. - Set up automated performance testing in CI. Use Detox to scroll through representative lists and capture frame timing metrics. Alert the team when a PR causes the p95 frame time to exceed 16ms. Without automated enforcement, performance regressions will creep in with every feature addition.
- Profile with Android Studio’s CPU Profiler to identify whether the bottleneck is the JS thread (React reconciliation) or the UI thread (native view operations). If it is the JS thread, the React Profiler will show which components are re-rendering unnecessarily.
- Consider simplifying the card layout for low-end devices. Use a
Platformcheck combined with a device tier detection (based on available RAM) to render a simplified card variant that removes the animated progress bar and uses a static placeholder. This is the same approach Instagram uses — they serve simpler UI to lower-end devices. - For the animated progress bars specifically, ensure they use Reanimated shared values (not React state) and
useAnimatedStylewithuseNativeDriver. If the animations are still costly, batch them — only animate progress bars for items currently visible on screen, not for items in the buffer zone. - As a last resort, reduce the
windowSizeandmaxToRenderPerBatchprops on FlashList to lower the number of items rendered outside the viewport. This trades scroll smoothness (more blank areas during fast scrolling) for frame rate stability.