Skip to main content

Command Palette

Search for a command to run...

How Instagram, WhatsApp, Uber & Netflix Would Be Built Today Using Expo Router

Updated
10 min read
S

Learning web development in public. Writing simple, real-world explanations about web development concepts. Helping beginners understand why things work, not just how.

Modern mobile apps are no longer just a collection of screens connected together.

Apps like Instagram, WhatsApp, Uber, and Netflix operate at massive scale with millions of users, real time systems, offline support, complex navigation, caching layers, analytics, feature flags, and production-grade performance optimization.

If these apps were architected today in React Native, one of the strongest choices for navigation and scalable structure would be:

  • Expo

  • Expo Router

  • TypeScript

  • Feature-based architecture

  • Modern state management

  • API abstraction layers

  • Realtime infrastructure

  • Offline-first patterns

In this article, we’ll explore how apps like Instagram, WhatsApp, Uber, and Netflix could be structured today using Expo Router.


Why Architecture Matters in React Native Applications

Small apps can survive messy codebases.

Large apps cannot.

As applications scale, problems start appearing everywhere:

  • Navigation becomes difficult to manage

  • Shared state becomes chaotic

  • API calls get duplicated

  • Teams conflict with each other

  • Performance starts dropping

  • Startup time increases

  • Offline support becomes painful

  • Realtime systems become unreliable

Architecture is what prevents a codebase from collapsing under scale.

A good architecture improves:

  • Developer productivity

  • App performance

  • Maintainability

  • Scalability

  • Team collaboration

  • Feature isolation

  • Testing

At scale, architecture becomes a business decision, not just a coding preference.


Why Expo Router Changes Large-Scale App Structure

Traditional React Navigation setups often become deeply nested and difficult to maintain in large apps.

Expo Router changes this with:

  • File-based routing

  • Nested layouts

  • Route groups

  • Shared layouts

  • Better modularity

  • Cleaner mental models

Instead of manually wiring huge navigation trees, routes become part of the filesystem.

Example:

app/
 ├── (auth)/
 │    ├── login.tsx
 │    └── signup.tsx
 │
 ├── (tabs)/
 │    ├── home.tsx
 │    ├── reels.tsx
 │    ├── messages.tsx
 │    └── profile.tsx
 │
 ├── chat/
 │    └── [id].tsx
 │
 └── _layout.tsx

This becomes extremely powerful as applications grow.


Folder Architecture for Large Applications

One of the biggest mistakes developers make is organizing apps by file type instead of by feature.

Bad structure:

components/
screens/
hooks/
utils/
services/

This works for small apps.

It becomes a nightmare for applications with hundreds of screens.

Modern large-scale apps prefer feature-based architecture.

Better structure:

src/
 ├── features/
 │    ├── auth/
 │    ├── chat/
 │    ├── feed/
 │    ├── rides/
 │    ├── payments/
 │    └── streaming/
 │
 ├── shared/
 │    ├── ui/
 │    ├── hooks/
 │    ├── utils/
 │    └── services/
 │
 ├── store/
 ├── api/
 ├── lib/
 └── app/

Each feature owns:

  • Components

  • Hooks

  • Services

  • Types

  • API logic

  • State

  • Tests

This allows teams to work independently without constantly interfering with each other.


How Instagram Would Be Structured

Instagram is heavily content-driven.

Its architecture would prioritize:

  • Feed rendering performance

  • Image caching

  • Realtime engagement updates

  • Story systems

  • Background uploads

  • Deep linking

  • Recommendation systems

Possible feature structure:

features/
 ├── feed/
 ├── reels/
 ├── stories/
 ├── profile/
 ├── notifications/
 ├── messaging/
 └── uploads/

Critical concerns would include:

  • FlatList optimization

  • Media preloading

  • Aggressive caching

  • Optimistic UI updates

  • Pagination systems

  • Skeleton loaders

Apps like Instagram depend heavily on rendering performance and perceived speed.


How WhatsApp Would Be Structured

WhatsApp is fundamentally a realtime communication system.

The architecture focus would include:

  • Socket reliability

  • Message synchronization

  • Offline queues

  • Encryption layers

  • Background processing

  • Low memory usage

Feature structure:

features/
 ├── chats/
 ├── calls/
 ├── contacts/
 ├── status/
 ├── groups/
 └── media/

The biggest challenge is message consistency.

A modern architecture would likely include:

  • WebSocket layers

  • Local-first databases

  • Retry queues

  • Event synchronization

  • Optimistic delivery

  • Conflict resolution

WhatsApp-style apps are offline-first by design.

Messages must survive:

  • Poor internet

  • App restarts

  • Background kills

  • Device switching


How Uber Would Be Structured

Uber is a realtime location-based platform.

Its architecture priorities would include:

  • GPS streaming

  • Live ride tracking

  • Driver-rider synchronization

  • Payment reliability

  • Map rendering performance

Feature structure:

features/
 ├── maps/
 ├── rides/
 ├── drivers/
 ├── payments/
 ├── tracking/
 └── support/

Realtime systems become the biggest engineering challenge.

The app constantly handles:

  • Driver movement updates

  • ETA recalculations

  • Route changes

  • Trip status changes

  • Surge pricing updates

This requires:

  • WebSockets

  • Efficient polling

  • Background tasks

  • Geolocation optimization

  • Event-driven architecture


How Netflix Would Be Structured

Netflix prioritizes performance and content delivery.

Its architecture focuses on:

  • Video startup speed

  • Recommendation systems

  • Personalized feeds

  • Smart caching

  • Device optimization

Feature structure:

features/
 ├── home/
 ├── player/
 ├── search/
 ├── downloads/
 ├── recommendations/
 └── profiles/

Streaming apps optimize aggressively for:

  • Startup time

  • Rendering speed

  • Memory usage

  • Download management

  • Adaptive streaming

A modern Netflix-style app would likely include:

  • Offline download architecture

  • Progressive loading

  • Predictive prefetching

  • Analytics infrastructure


Navigation Architecture for Scalable Apps

Expo Router becomes extremely powerful in large apps because of nested layouts and route groups.

Example:

app/
 ├── (auth)/
 ├── (tabs)/
 ├── (modals)/
 ├── chat/
 └── rides/

Each section can have its own layout:

// app/(tabs)/_layout.tsx

export default function TabLayout() {
return <Tabs/>;
}

Benefits include:

  • Independent navigation flows

  • Shared layouts

  • Cleaner mental models

  • Easier scalability

This becomes essential in apps with:

  • Deep linking

  • Protected routes

  • Dynamic screens

  • Nested tabs

  • Modals


Authentication Flow Architecture

Authentication is rarely just “login/signup.”

Large apps handle:

  • Session persistence

  • Token refresh

  • Multi-device sessions

  • Role-based access

  • Protected routes

  • Secure storage

Modern auth architecture:

features/auth/
 ├── api/
 ├── hooks/
 ├── screens/
 ├── store/
 └── services/

Typical flow:

  1. App boots

  2. Restore token

  3. Validate session

  4. Load user profile

  5. Hydrate app state

  6. Route user correctly

Expo Router route groups help isolate authentication flows cleanly.


State Management Strategies for Large Apps

Small apps often overuse global state.

Large apps avoid it carefully.

Modern applications usually combine:

  • Zustand

  • React Query / TanStack Query

  • Context

  • Local component state

Typical separation:

Type Best Tool
Server state React Query
UI state Zustand
Form state React Hook Form
Navigation state Expo Router
Temporary state useState

The key principle is:

Keep server state separate from UI state.

This dramatically improves scalability and maintainability.


API Handling & Networking Layers

Large apps never scatter fetch calls everywhere.

Instead, they centralize networking logic.

Example:

api/
 ├── client.ts
 ├── auth.ts
 ├── feed.ts
 ├── rides.ts
 └── chat.ts

Benefits include:

  • Centralized error handling

  • Retry systems

  • Request cancellation

  • Token refresh management

  • Analytics

  • Logging

Most production apps also include:

  • Axios interceptors

  • Request deduplication

  • Caching layers

  • API versioning


Realtime Systems Architecture

Realtime systems are among the hardest engineering problems in mobile apps.

Chat Systems

Apps like WhatsApp need:

  • Instant delivery

  • Read receipts

  • Typing indicators

  • Sync reliability

  • Message ordering

Architecture often includes:

  • WebSockets

  • Event queues

  • Local persistence

  • Retry systems


Live Updates

Apps like Instagram rely heavily on realtime engagement updates:

  • Likes

  • Comments

  • Notifications

  • Stories

  • Live streams

One major challenge is preventing unnecessary rerenders.


Ride Tracking

Uber-style tracking requires:

  • High-frequency location updates

  • Battery optimization

  • Background processing

  • Precision mapping

Realtime location systems are computationally expensive and difficult to optimize.


Offline-First Support & Caching

Modern apps cannot assume stable internet connectivity.

Offline-first systems often include:

  • Local databases

  • Mutation queues

  • Cache hydration

  • Background synchronization

Tools commonly used:

  • SQLite

  • MMKV

  • AsyncStorage

  • React Query persistence

Critical principle:

The app should still feel functional without internet.


App Startup Optimization Techniques

Startup performance heavily affects user retention.

Large apps optimize:

  • Bundle size

  • Font loading

  • Image loading

  • Navigation initialization

  • API hydration

Common techniques include:

  • Code splitting

  • Lazy loading

  • Route-level loading

  • Deferred rendering

  • Skeleton UIs

Apps like Netflix obsess over startup performance because milliseconds directly impact engagement.


Performance Considerations in Production Apps

Production apps continuously optimize performance.

Key focus areas include:

  • JS thread usage

  • Memory leaks

  • Re-render prevention

  • Image optimization

  • List virtualization

  • Background task efficiency

Common tools:

  • FlashList

  • Reanimated

  • Hermes

  • Memoization

  • Profiling tools

Performance engineering becomes an entire discipline at scale.


Shared Layouts & Nested Routing in Expo Router

Expo Router layouts are one of its biggest strengths.

Example:

app/
 ├── (tabs)/
 │    ├── _layout.tsx
 │    ├── home.tsx
 │    └── profile.tsx

Shared layouts allow:

  • Persistent tab bars

  • Shared headers

  • Nested navigation

  • Feature isolation

This becomes extremely important in large multi-team applications.


Scalability Challenges in Apps Like Instagram, WhatsApp, Uber & Netflix

Every large-scale app faces different scalability challenges.

Instagram

  • Massive media delivery

  • Feed ranking systems

  • Infinite scrolling performance

  • Realtime engagement updates

WhatsApp

  • Reliable message delivery

  • Encryption

  • Offline synchronization

  • Multi-device consistency

Uber

  • Live GPS streaming

  • Dynamic pricing systems

  • Real-time trip updates

  • Battery optimization

Netflix

  • Video delivery optimization

  • Content recommendation systems

  • Streaming quality adaptation

  • Smart caching systems

Each app solves very different engineering problems despite sharing the same mobile platform.


Tradeoffs & Architectural Decisions at Scale

There is no perfect architecture.

Every decision introduces tradeoffs.

Decision Benefit Cost
More caching Faster UX Stale data
Realtime systems Better engagement Complexity
Offline support Reliability Sync challenges
Modular features Team scalability More abstraction
Aggressive optimization Better performance Harder debugging

Engineering at scale is mostly about choosing acceptable tradeoffs.


Final Thoughts

Modern apps like Instagram, WhatsApp, Uber, and Netflix are not just React Native projects with many screens.

They are distributed systems running inside mobile devices.

Using Expo Router today provides:

  • Cleaner navigation architecture

  • Better scalability

  • Feature modularity

  • Easier route management

  • Improved developer experience

  • Better team organization

But architecture alone is not enough.

The real challenge is designing systems that remain:

  • Fast

  • Reliable

  • Maintainable

  • Realtime

  • Offline-capable

  • Scalable

…even as millions of users interact with them simultaneously.

That is what separates production-scale mobile engineering from simply building apps.