Skip to content

@tank/react-native-expo

1.0.0

Description

Production React Native development with Expo. Covers Expo Router, EAS Build/Submit/Update, New Architecture, Reanimated animations, styling (NativeWind, Unistyles), state management (Zustand, TanStack Query), native modules, performance, testing, push notifications, and app store publishing..

Download
Verified
tank install @tank/react-native-expo

React Native Expo

Core Philosophy

  1. Expo-managed by default — Start every project with Expo managed workflow. Eject to bare only when a specific native requirement demands it. Development builds bridge the gap without full ejection.
  2. File-based routing is the standard — Expo Router replaces manual navigation configuration with file-system conventions. Layouts, typed routes, and deep linking come for free.
  3. OTA updates separate deploy from release — Ship JavaScript changes instantly via EAS Update without app store review. Reserve native builds for native code changes only.
  4. Animations on the UI thread — Never animate on the JS thread. Use Reanimated worklets and Gesture Handler for 60fps interactions that survive heavy JS computation.
  5. New Architecture is mandatory — SDK 55+ runs entirely on the New Architecture (Fabric, TurboModules, bridgeless). Legacy architecture is frozen. Build for New Architecture from day one.

Quick-Start: Common Problems

"How do I structure navigation?"

PatternImplementation
Stack screens_layout.tsx returning <Stack />
Bottom tabs(tabs)/_layout.tsx returning <Tabs />
Drawer_layout.tsx with expo-router/drawer
Auth gateRoot layout with redirect logic
ModalRoute group with presentation: 'modal'

-> See references/expo-router.md

"How do I deploy updates without app store review?"

  1. Configure eas update:configure in the project
  2. Build with a channel: eas build --profile production
  3. Push updates: eas update --channel production
  4. Updates apply on second app launch by default
  5. Use expo-updates API for immediate apply on launch

-> See references/eas-build-deploy.md

"My animations are janky"

  1. Confirm animation runs on UI thread — use useAnimatedStyle with worklets
  2. Replace Animated API with Reanimated useSharedValue + withSpring/withTiming
  3. Combine with Gesture Handler for gesture-driven animations
  4. Use entering/exiting props for layout animations
  5. Profile with React DevTools and Perf Monitor

-> See references/animations-gestures.md

"Which styling approach should I use?"

NeedRecommendation
Tailwind familiarity, web parityNativeWind v4
Maximum performance, type-safeUnistyles 2
Component library with themesTamagui
Simple, no depsStyleSheet.create

-> See references/styling-patterns.md

"How do I manage state?"

  1. Server state: TanStack Query (caching, refetch, optimistic updates)
  2. Client state: Zustand (lightweight, no boilerplate, middleware)
  3. Persistence: MMKV for synchronous storage (replaces AsyncStorage)
  4. Forms: React Hook Form with Zod validation

-> See references/state-management.md

Decision Trees

Project Setup

SignalRecommendation
New projectnpx create-expo-app@latest (managed workflow)
Need custom native codeDevelopment build + config plugins
Existing bare RN projectAdd Expo with npx install-expo-modules@latest
Must use specific native SDKExpo Modules API or config plugin

Build Strategy

Change TypeDeploy Method
JS/TS code, assets, stylesEAS Update (OTA, instant)
New native module or SDK versionEAS Build (full binary)
App store metadataEAS Metadata
Testing/previewEAS Build --profile preview

Navigation Pattern

Screen RelationshipNavigator
Linear forward/back flowStack
Persistent bottom barTabs (or NativeTabs)
Side menuDrawer
Overlay preserving contextModal (presentation: 'modal')
Auth-gated sectionsRoute groups with redirect

Reference Index

FileContents
references/expo-router.mdFile-based routing, layouts (Stack/Tabs/Drawer), typed routes, deep linking, authentication patterns, API routes, platform-specific modules
references/eas-build-deploy.mdEAS Build profiles, EAS Submit, EAS Update (OTA), code signing, eas.json configuration, CI/CD workflows, development builds vs Expo Go
references/new-architecture.mdFabric renderer, TurboModules, JSI, bridgeless mode, migration guide, library compatibility, Expo Modules API
references/animations-gestures.mdReanimated 3 (worklets, shared values, layout animations), Gesture Handler v2, spring/timing configs, gesture composition, performance patterns
references/styling-patterns.mdNativeWind v4, Unistyles 2, Tamagui, StyleSheet API, responsive design, dark mode, platform-specific styling, safe areas
references/state-management.mdZustand, TanStack Query, MMKV, React Hook Form, offline-first patterns, secure storage, context patterns
references/testing-debugging.mdJest + RNTL unit/component tests, Detox E2E, Maestro, debugging tools, Hermes profiling, React DevTools, common crash patterns
references/platform-features.mdPush notifications (expo-notifications, FCM/APNs), deep linking, universal links, biometric auth, camera/media, file system, splash screen, app icons
references/performance.mdFlashList vs FlatList, Hermes engine, bundle optimization, image caching (expo-image), memory management, startup time, New Architecture performance gains

Command Palette

Search skills, docs, and navigate Tank