Steven's Knowledge

React Native

Engineering guide for React Native — best practices, pitfalls, performance, state management, native modules

React Native

Engineering knowledge for building production-grade React Native apps. Skips React/JSX basics in favor of what determines project quality: bridge cost, list virtualization, navigation lifecycle, native module authoring, and the New Architecture (Fabric + TurboModules).

Topics

Engineering Layers

React Native App
├── Presentation        Screen tree / Theme / Navigation
│   ├── Screen          Screen-level components, orchestrate business flow
│   ├── Component       Reusable UI components, no business dependencies
│   └── Layout          SafeArea, responsive layout, keyboard handling
├── State               State management (Redux / Zustand / Jotai / TanStack Query)
│   ├── Store           Cross-screen application state
│   ├── Query           Server state cache (TanStack Query / SWR / RTK Query)
│   └── Repository      Data access abstraction
├── Data                Data sources
│   ├── Remote          REST / GraphQL / WebSocket
│   ├── Local           MMKV / SQLite / AsyncStorage
│   └── Cache           Memory cache, query cache
└── Native              Platform integration
    ├── TurboModule     Sync/async typed native methods (New Architecture)
    ├── Fabric          Native components rendered by the new renderer
    └── Codegen         JS↔native binding generation from TS specs
StageFocusKey Outcome
Post-basicsComponents, Hooks, navigationReadable, reusable screens
IntermediateState management, querying, persistenceDecoupled UI and data
PerformanceMemoization, list virtualization, image cacheStable 60 fps on mid-tier Android
NativeNative modules, gesture handler, reanimatedBypass the bridge for animations
ArchitectureNew Architecture (Fabric + TurboModules)Modern interop, Codegen-driven

Flutter or React Native?

If your team already runs a React/web stack and wants code reuse, React Native lowers the entry cost. If you need pixel-identical UI across platforms and tight rendering control, Flutter has the edge. The cross-platform comparison covers this in depth.

Why Focus on Practice Over Syntax

The React docs and React Native website already cover components and APIs. What actually determines whether a React Native project ships smoothly is:

  • Bridge cost awareness — every JS↔native call serializes. Animations and gestures must live on the UI thread.
  • List virtualization correctness — wrong keyExtractor / getItemLayout / removeClippedSubviews settings tank scroll performance.
  • Re-render scope — Context misuse causes whole-tree re-renders; selectors and memo matter more than in web React.
  • Platform behavior differences — keyboard avoidance, status bar, safe areas, back button — each has Android/iOS quirks.

These pages consolidate the production lessons usually learned only by shipping and debugging real apps.

On this page