Skip to content

Tech Stack ​

Core Technologies ​

React Native & Expo ​

  • React Native
  • Expo - Managed workflow with OTA updates enabled, and EAS as default for builds
  • Expo Router - File-based routing with type-safe navigation

State Management ​

  • Vanilla redux - Legacy state management with custom middleware and manual action creators

    WARNING

    Slowly moving away from vanilla redux and custom middleware to redux toolkit

  • Redux Toolkit - Centralized state management with simplified boilerplate
  • Redux Toolkit Query - API data fetching with automatic caching, deduplication, and background refetching
  • Redux Persist - Persists Redux state to AsyncStorage for offline support and session continuity

UI & Styling ​

  • react-native-unistyles - Type-safe styling with theme support (light/dark mode) and runtime switching
  • React Native Reanimated - Smooth 60fps animations running on the UI thread

    WARNING

    Reduced usage currently as known to cause crashes on Android with the New Architecture enabled

UI Components ​

  • @gorhom/bottom-sheet - Performant bottom sheet with gesture support and snap points

    TIP

    We have a custom wrapper around this - src/contexts/drawer/context.tsx

  • react-native-calendars - Calendar views for scheduling and date selection
  • react-native-modal - Customizable modal dialogs

Forms & Validation ​

  • Formik - Form state management with validation, error handling, and submission
  • Yup - Schema-based validation that integrates with Formik

Camera & Media ​

  • react-native-vision-camera - Full camera control for photo capture and barcode scanning
  • expo-image-picker - Simple image/video selection from camera roll or camera
  • expo-media-library - Save and access photos in the device media library
  • react-native-awesome-gallery - Image gallery viewer with pinch-to-zoom

File & Document Handling ​

  • expo-file-system - Read, write, and manage files on device storage
  • expo-document-picker - Select documents from device or cloud storage
  • react-native-pdf - Display PDF documents within the app
  • react-native-blob-util - Handle binary data and file downloads

Analytics & Monitoring ​

  • Sentry - Error tracking, crash reporting, and performance monitoring
  • Firebase Analytics - User behavior and event tracking
  • Firebase Crashlytics - Native crash reporting with stack traces
  • Segment - Customer data platform for unified analytics routing

    WARNING

    Deprecating soon

  • Intercom - In-app customer support and messaging
  • PostHog - Product analytics with feature flags and session replay

Notifications & Messaging ​

  • Firebase Cloud Messaging - Push notification delivery service
  • Notifee - Advanced local notification features (scheduling, channels, actions)

Development Tools ​

TypeScript & Linting ​

  • TypeScript - Static type checking for safer refactoring and better IDE support
  • ESLint - Code linting to enforce consistent patterns
  • Prettier - Automatic code formatting

Testing ​

  • Jest - JavaScript testing framework
  • React Native Testing Library - Component testing with user-centric queries
  • WebdriverIO + Appium - E2E testing on real devices and simulators
  • MSW - Mock Service Worker for API mocking in tests
  • Fishery - Factory library for generating test data
  • Faker - Realistic fake data generation for tests

Development Experience ​

  • Storybook - Component development and documentation in isolation
  • expo-dev-client - Custom development client with native module support
  • Patch Package - Apply fixes to node_modules without waiting for upstream releases

Build & Deployment ​

  • EAS Build - Cloud-based iOS and Android builds without local native toolchains
  • EAS Update - Over-the-air JavaScript updates without app store review
  • EAS Submit - Automated app store submission