Skip to main content

πŸ—ΊοΈ 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.

React Native Ecosystem Stack πŸ“± Your Application UI & Feature Libraries React Navigation β€’ React Query β€’ Zustand β€’ NativeWind Expo SDK & Services expo-camera β€’ expo-location β€’ expo-notifications β€’ EAS Build React Native Core View β€’ Text β€’ Image β€’ FlatList β€’ StyleSheet β€’ Animated iOS (UIKit) Swift β€’ Objective-C πŸ€– Android Kotlin β€’ Java You write Community Expo Team Meta Apple/Google

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

reactnative.dev

Core components, APIs, and guides. The source of truth for React Native itself.

πŸš€ Expo Documentation

docs.expo.dev

Expo SDK, EAS services, and tutorials. Extremely well-written and comprehensive.

🧭 Expo Router Docs

docs.expo.dev/router

File-based routing documentation. Essential for navigation.

πŸ“± React Navigation

reactnavigation.org

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
Reddit 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

  1. Is it maintained? β€” Check last commit date, open issues, release frequency
  2. Is it popular? β€” npm downloads, GitHub stars (not everything, but a signal)
  3. Does it work with Expo? β€” Check docs or React Native Directory
  4. What's the bundle size impact? β€” Use bundlephobia.com to check
  5. Is the API well-documented? β€” Poor docs = pain later
  6. Does it support the New Architecture? β€” Increasingly important
  7. 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!