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