πΊοΈ The React Native Ecosystem
Your map to navigating tools, libraries, and resources
π― Learning Objectives
By the end of this lesson, you will be able to:
- Distinguish between React Native core and community packages
- Explain what Expo is and why it's the recommended starting point
- Identify popular libraries for common mobile development tasks
- Navigate documentation and community resources effectively
- Make informed decisions about which tools to use for your projects
β±οΈ Estimated Time: 30-40 minutes
π In This Lesson
The Ecosystem Layers
The React Native ecosystem can feel overwhelming at first β there are so many packages, tools, and options. Let's break it down into layers so you can understand where everything fits.
Think of it like a city. At the foundation, you have the infrastructure (roads, utilities). Then you have different neighborhoods (frameworks), each with their own shops and services (libraries). Understanding the layout helps you navigate efficiently.
The React Native ecosystem as a layered stack
Layer by Layer
ποΈ Native Platforms (Foundation)
At the bottom, we have iOS and Android β the actual operating systems your app runs on. You rarely interact with this layer directly when using Expo, but it's good to know it's there.
βοΈ React Native Core
Maintained by Meta, this is the framework itself. It provides the fundamental components (View, Text, Image) and APIs (StyleSheet, Animated). This is what makes React Native... React Native.
π Expo SDK & Services
A layer of convenience and power on top of React Native. Expo provides pre-built native modules (camera, location, notifications) and cloud services (builds, updates, push notifications). This is where we'll spend most of our time in this course.
π UI & Feature Libraries
The broader community ecosystem. These are third-party packages for navigation, state management, UI components, and more. Some are essential (like navigation); others are optional conveniences.
π± Your Application
Everything comes together here β your components, your business logic, your styles. This is what you're building.
Expo: Your Development Superpower
If React Native is the engine, Expo is the fully-loaded vehicle that comes with GPS, air conditioning, and roadside assistance included. You could drive with just the engine, but why would you?
π What is Expo?
Expo is a platform built around React Native that helps you develop, build, deploy, and iterate on iOS, Android, and web apps from the same JavaScript/TypeScript codebase. It's maintained by Expo (the company), and it's now the officially recommended way to start React Native projects β even in the React Native docs.
What Expo Gives You
mindmap
root((Expo Platform))
Development
Expo Go App
Hot Reloading
Dev Client
Error Overlay
SDK Modules
Camera
Location
Notifications
File System
Sensors
Auth
Build Services
EAS Build
iOS without Mac
Cloud Builds
App Signing
Updates
OTA Updates
Update Channels
Rollbacks
Routing
Expo Router
File-based
Deep Linking
The Expo platform provides tools across the entire development lifecycle
Expo Go vs Development Builds
Expo offers two ways to run your app during development:
| Feature | Expo Go | Development Build |
|---|---|---|
| Setup | Download app, scan QR | Build custom app once |
| Speed to start | β‘ Instant | π Initial build takes time |
| Native modules | Only Expo SDK | Any native code |
| Best for | Learning, prototyping | Production apps |
| Custom native code | β Not supported | β Full support |
β Our Approach in This Course
We'll start with Expo Go for rapid learning and prototyping. Later, when we need custom native modules or prepare for production, we'll switch to Development Builds. This is the recommended path β it lets you move fast early and scale up when needed.
EAS: Expo Application Services
EAS is Expo's cloud service suite. The three main services are:
π¨ EAS Build
Build your app in the cloud. Get iOS builds without owning a Mac. Handles code signing automatically.
π€ EAS Submit
Submit to App Store and Google Play directly from the command line.
π EAS Update
Push JavaScript updates instantly without app store review (over-the-air updates).
The "Ejecting" Question
You might have heard old advice about "ejecting" from Expo. This is outdated. The modern Expo workflow rarely requires ejecting. Here's why:
β οΈ Myths vs Reality
- Myth: "Expo is limiting" β Reality: Expo supports custom native code via Development Builds
- Myth: "You'll have to eject eventually" β Reality: Most apps never need to eject
- Myth: "Expo apps are bigger" β Reality: Modern Expo apps are comparable in size
- Myth: "Expo is just for beginners" β Reality: Major companies use Expo in production
Essential Libraries by Category
The React Native ecosystem has a library for almost everything. Here's your curated guide to the most important ones, organized by what you're trying to accomplish.
π§ Navigation
How users move between screens. This is fundamental to any app.
| Library | Description | When to Use |
|---|---|---|
| Expo Router | File-based routing (like Next.js) | Default choice for new Expo projects β |
| React Navigation | The most popular navigation library | When you need more control, or existing projects |
π‘ Our Choice
This course uses Expo Router. It's built on React Navigation but offers a simpler, file-based approach that will feel familiar if you've used Next.js or Remix.
ποΈ State Management
Managing data across your application.
| Library | Description | Best For |
|---|---|---|
| React Context | Built into React | Simple global state, themes, auth |
| Zustand | Lightweight, hooks-based | Most apps β simple API, great DX β |
| Redux Toolkit | The classic, now modernized | Large teams, complex state, time travel |
| Jotai | Atomic state management | Fine-grained reactivity needs |
| TanStack Query | Server state management | API data fetching and caching β |
π¨ UI Components & Styling
Building your interface.
| Library | Description | Notes |
|---|---|---|
| StyleSheet | Built-in styling API | Default choice, always available β |
| NativeWind | Tailwind CSS for React Native | If you love Tailwind |
| Tamagui | Universal UI kit | Cross-platform (web + native) |
| React Native Paper | Material Design components | Quick Material UI |
| React Native Elements | Cross-platform UI toolkit | Pre-built common components |
β¨ Animations
Making things move smoothly.
| Library | Description | When to Use |
|---|---|---|
| Animated | Built-in animation API | Simple animations |
| React Native Reanimated | High-performance animations | Complex/gesture-driven animations β |
| Moti | Declarative animations | Simple API on top of Reanimated |
| Lottie | After Effects animations | Designer-created animations |
π Gestures
Handling touch interactions.
| Library | Description |
|---|---|
| React Native Gesture Handler | The standard for gesture handling. Works with Reanimated. β |
π Forms
Handling user input.
| Library | Description |
|---|---|
| React Hook Form | Performant, flexible form handling β |
| Formik | Popular form library (more verbose) |
| Zod | Schema validation (pairs well with React Hook Form) |
π Lists
Rendering large amounts of data efficiently.
| Component | Description |
|---|---|
| FlatList | Built-in virtualized list β |
| FlashList | Shopify's faster alternative for very long lists |
The Library Landscape
flowchart TB
subgraph Core["What You Get Built-in"]
A[View, Text, Image]
B[FlatList, ScrollView]
C[StyleSheet]
D[Animated API]
end
subgraph Essential["Almost Always Need"]
E[Navigation
Expo Router]
F[Gestures
Gesture Handler]
end
subgraph Common["Very Common Additions"]
G[Server State
TanStack Query]
H[Client State
Zustand]
I[Animations
Reanimated]
J[Forms
React Hook Form]
end
subgraph Optional["Nice to Have"]
K[UI Kit
Paper/Elements]
L[Styling
NativeWind]
M[Icons
expo/vector-icons]
end
Core --> Essential
Essential --> Common
Common --> Optional
style Core fill:#e8f5e9,stroke:#4caf50
style Essential fill:#fff3e0,stroke:#ff9800
style Common fill:#e3f2fd,stroke:#1976d2
style Optional fill:#f5f5f5,stroke:#9e9e9e
Library adoption typically follows this pattern from core to optional
Documentation and Community Resources
Knowing where to find help is half the battle. Here's your resource guide:
π Official Documentation
βοΈ React Native Docs
Core components, APIs, and guides. The source of truth for React Native itself.
π Expo Documentation
Expo SDK, EAS services, and tutorials. Extremely well-written and comprehensive.
π§ Expo Router Docs
File-based routing documentation. Essential for navigation.
π± React Navigation
Detailed navigation patterns and APIs. Expo Router is built on this.
π¬ Community & Help
| Resource | Best For | Link |
|---|---|---|
| Expo Discord | Real-time help, active community | chat.expo.dev |
| Stack Overflow | Searchable Q&A archive | react-native tag |
| GitHub Discussions | Feature requests, detailed discussions | RN Discussions |
| Community discussion, news | r/reactnative | |
| X (Twitter) | News, tips, community figures | Follow @expo, @reactnative |
π Learning Resources
| Resource | Type | Description |
|---|---|---|
| Expo Blog | Articles | Official updates, tutorials, best practices |
| React Native Radio | Podcast | Weekly podcast covering RN ecosystem |
| Infinite Red Academy | Course | Free video course by RN consultancy |
| React Native Directory | Index | reactnative.directory β searchable library index |
β Pro Tip: Check Expo Compatibility First
When evaluating a library, check if it works with Expo. Many libraries now have first-class Expo support. The React Native Directory shows Expo compatibility for each package.
Choosing the Right Tools
With so many options, how do you decide what to use? Here's a decision framework:
The Decision Framework
flowchart TD
A[Need to solve a problem] --> B{Is it built into
React Native or Expo?}
B -->|Yes| C[Use the built-in solution]
B -->|No| D{Is there an
Expo SDK module?}
D -->|Yes| E[Use the Expo module]
D -->|No| F{Is it a common need?}
F -->|Yes| G[Use a popular
community library]
F -->|No| H[Build custom or
find niche solution]
style C fill:#e8f5e9,stroke:#4caf50
style E fill:#fff3e0,stroke:#ff9800
style G fill:#e3f2fd,stroke:#1976d2
style H fill:#f5f5f5,stroke:#9e9e9e
When choosing tools, prefer built-in solutions, then Expo SDK, then community packages
Library Evaluation Checklist
When evaluating a third-party library, ask:
β Before Adding a Library
- Is it maintained? β Check last commit date, open issues, release frequency
- Is it popular? β npm downloads, GitHub stars (not everything, but a signal)
- Does it work with Expo? β Check docs or React Native Directory
- What's the bundle size impact? β Use bundlephobia.com to check
- Is the API well-documented? β Poor docs = pain later
- Does it support the New Architecture? β Increasingly important
- Are there alternatives? β Sometimes built-in or simpler solutions exist
The "Minimal Dependencies" Philosophy
β οΈ Resist the Urge to Over-Install
Every dependency is a liability β it can break, become unmaintained, or cause version conflicts. Before adding a library, ask: "Can I reasonably build this myself in under an hour?" If yes, consider doing so. Your future self will thank you.
Our Recommended Stack for This Course
Here's what we'll use throughout this course:
| Need | Solution | Why |
|---|---|---|
| Framework | Expo (SDK 52+) | Best DX, officially recommended |
| Navigation | Expo Router | File-based, intuitive, modern |
| Styling | StyleSheet | Built-in, no extra dependencies |
| Server State | TanStack Query | Industry standard for data fetching |
| Client State | Context + Zustand | Simple, effective, minimal |
| Animations | Reanimated | Performance, gesture integration |
| Forms | React Hook Form + Zod | Performant, type-safe |
Summary
π Key Takeaways
- The ecosystem has layers β Native platforms β React Native Core β Expo SDK β Community Libraries β Your App
- Expo is the recommended starting point β It provides tools, services, and conveniences that accelerate development
- You don't need to "eject" β Modern Expo supports custom native code via Development Builds
- Essential libraries exist for common needs β Navigation, state, animations, and forms all have battle-tested solutions
- Documentation is excellent β Both React Native and Expo have comprehensive, well-maintained docs
- Be selective with dependencies β Prefer built-in solutions, evaluate libraries carefully
π What's Next?
You've completed Module 1! You now understand why React Native exists, how it differs from web development, what knowledge transfers from React, and the ecosystem landscape.
In Module 2, we'll get hands-on: setting up your development environment, creating your first project, and running an app on your device. The theory is done β it's time to build!
π Module 1 Complete!
You've built the mental foundation for React Native development. Now let's turn that knowledge into running code!