- Completed mobile-first platform strategy research - React Native selected for iOS and Android mobile apps - React selected for web companion app - 70-80% code sharing between mobile and web - Excellent health sensor integration (HealthKit, Health Connect) - QR scanning, encryption, and background sync support - Created comprehensive frontend research documentation - Updated README with platform strategy - Updated tech stack decisions Key advantages: - Single language (TypeScript) reduces development cost - 70-80% code sharing between mobile and web - Excellent health sensor integration - Great chart visualization for web companion - Faster time to market Next: State management research (Redux vs Zustand)
681 lines
20 KiB
Markdown
681 lines
20 KiB
Markdown
# Frontend Framework Research: Mobile-First Approach
|
|
|
|
**Date**: 2026-02-14
|
|
**Focus**: Mobile-first health platform with web companion app
|
|
|
|
---
|
|
|
|
## Platform Strategy Clarification
|
|
|
|
### Primary Platform: Mobile Apps (iOS & Android)
|
|
- **Main interaction**: Quick data entry, sensor integration, daily health tracking
|
|
- **Health sensors**: Apple HealthKit, Google Health Connect
|
|
- **Use cases**:
|
|
- Quick health data entry (weight, steps, mood)
|
|
- Medication reminders and tracking
|
|
- QR code scanning (lab results)
|
|
- Real-time health sensor data (steps, heart rate, sleep)
|
|
- Push notifications for reminders
|
|
- Background sync with server
|
|
- "Nuke option" (instant data deletion)
|
|
|
|
### Secondary Platform: Web Browser
|
|
- **Complementary role**: Extensive reporting, visualization, profile management
|
|
- **Use cases**:
|
|
- Complex data visualization and charts
|
|
- Historical trend analysis
|
|
- Comprehensive profile management
|
|
- Family structure management
|
|
- Extensive reporting and data export
|
|
- Detailed configuration settings
|
|
- Desktop/laptop user preference
|
|
|
|
---
|
|
|
|
## Mobile Development Options
|
|
|
|
### 1. React Native
|
|
**Description**: Facebook's cross-platform framework using React/JavaScript
|
|
|
|
**Pros for Normogen**:
|
|
- **Code sharing**: Share logic with web frontend (React)
|
|
- **Large ecosystem**: Extensive library ecosystem
|
|
- **Health integration**:
|
|
- React Native Health (Apple HealthKit)
|
|
- Google Health Connect integration
|
|
- **QR code scanning**: react-native-camera, react-native-qrcode-scanner
|
|
- **Encryption**: Native crypto libraries available
|
|
- **Community**: Largest cross-platform mobile community
|
|
- **Performance**: Good enough for health data apps
|
|
|
|
**Cons**:
|
|
- Performance overhead compared to native
|
|
- Larger app bundle size
|
|
- Potential dependency issues (npm chaos)
|
|
- JavaScript engine overhead
|
|
|
|
**Health Sensor Integration**:
|
|
- iOS: [react-native-health](https://github.com/anthonyecamps/react-native-health)
|
|
- Android: [react-native-google-fit](https://github.com/StasDoskalenko/react-native-google-fit)
|
|
- Background location/sensors: [react-native-background-job](https://github.com/jamesisaac/react-native-background-job)
|
|
|
|
**Code Sharing Potential**:
|
|
- Business logic: 70-80% shared with web
|
|
- State management: 90%+ shared
|
|
- API client: 100% shared
|
|
- Encryption: 100% shared
|
|
- UI components: 0% (separate native UI)
|
|
|
|
---
|
|
|
|
### 2. Flutter
|
|
**Description**: Google's cross-platform framework using Dart
|
|
|
|
**Pros for Normogen**:
|
|
- **Excellent performance**: Compiled to native ARM64
|
|
- **Small app bundle**: Smaller than React Native
|
|
- **Hot reload**: Fast development iteration
|
|
- **Health integration**:
|
|
- health (Apple HealthKit, Google Health Connect)
|
|
- Provides unified API for both platforms
|
|
- **Beautiful UI**: Material Design and Cupertino widgets
|
|
- **Stable**: Mature and production-ready
|
|
- **Single codebase**: Better platform parity
|
|
|
|
**Cons**:
|
|
- **No code sharing** with web frontend
|
|
- Dart learning curve (if team only knows JavaScript)
|
|
- Smaller ecosystem than React Native
|
|
- Less flexibility for native modules
|
|
|
|
**Health Sensor Integration**:
|
|
- [health](https://pub.dev/packages/health) - Apple HealthKit + Google Health Connect
|
|
- Unified API for both platforms
|
|
- Background task support
|
|
- Step counting, heart rate, sleep tracking
|
|
|
|
**Code Sharing Potential**:
|
|
- Business logic: 0% (Dart vs JavaScript)
|
|
- API client: 0% (must rewrite)
|
|
- Encryption: 0% (must rewrite)
|
|
- UI components: 0% (separate UI framework)
|
|
|
|
---
|
|
|
|
### 3. Native (Swift + Kotlin)
|
|
**Description**: Separate native apps for iOS and Android
|
|
|
|
**Pros for Normogen**:
|
|
- **Best performance**: Native ARM64 code
|
|
- **Best sensor integration**: Direct platform APIs
|
|
- **Best user experience**: Platform-native feel
|
|
- **Smallest app bundle**: No framework overhead
|
|
- **Swift**: Native crypto libraries (CryptoKit)
|
|
- **Kotlin**: Native crypto libraries
|
|
|
|
**Cons**:
|
|
- **Double development cost**: Separate codebases
|
|
- **No code sharing**: 0% code sharing between platforms
|
|
- **Longer time to market**: Two separate implementations
|
|
- **Higher maintenance**: Two codebases to maintain
|
|
- **Team skill requirements**: Swift + Kotlin + JavaScript (for web)
|
|
|
|
**Health Sensor Integration**:
|
|
- iOS: HealthKit (native, best integration)
|
|
- Android: Google Health Connect (native)
|
|
- Background tasks: Native support
|
|
|
|
**Code Sharing Potential**:
|
|
- Business logic: 0% (different languages)
|
|
- API client: 0% (must implement twice)
|
|
- Encryption: 0% (different crypto libraries)
|
|
- UI components: 0% (completely separate)
|
|
|
|
---
|
|
|
|
### 4. Progressive Web App (PWA)
|
|
**Description**: Web app that can be installed on mobile devices
|
|
|
|
**Pros for Normogen**:
|
|
- **Single codebase**: Works on mobile and desktop
|
|
- **Health sensors**: Web Bluetooth, Generic Sensor API (limited)
|
|
- **No app store**: Direct deployment, instant updates
|
|
- **Small bundle**: Just web assets
|
|
- **Easy updates**: No app store review process
|
|
|
|
**Cons**:
|
|
- **Limited sensor access**: Cannot access HealthKit/Health Connect
|
|
- **Poor offline**: Limited background sync
|
|
- **Poor push notifications**: Limited support
|
|
- **iOS limitations**: Safari PWA restrictions
|
|
- **Poor user experience**: Not native-feeling
|
|
|
|
**Health Sensor Integration**:
|
|
- Limited to web sensor APIs
|
|
- No HealthKit integration
|
|
- No Health Connect integration
|
|
- Poor for health sensor use case
|
|
|
|
**Code Sharing Potential**:
|
|
- Business logic: 100% shared
|
|
- API client: 100% shared
|
|
- Encryption: 100% shared
|
|
- UI: 100% shared
|
|
|
|
**Verdict**: Not suitable for Normogen's mobile sensor requirements
|
|
|
|
---
|
|
|
|
## Web Companion Framework Options
|
|
|
|
### Option 1: React (if mobile is React Native)
|
|
**Description**: Most popular JavaScript UI library
|
|
|
|
**Pros**:
|
|
- **Code sharing**: 70-80% with React Native
|
|
- **Ecosystem**: Largest npm ecosystem
|
|
- **Charts**: Chart.js, Recharts, D3.js
|
|
- **State management**: Redux, Zustand, Jotai
|
|
- **Encryption**: Web Crypto API, crypto-js
|
|
|
|
**Cons**:
|
|
- Large bundle size
|
|
- Complexity for simple apps
|
|
|
|
---
|
|
|
|
### Option 2: Svelte/SvelteKit
|
|
**Description**: Modern compiler-based framework
|
|
|
|
**Pros**:
|
|
- **Small bundle**: Compiled, minimal runtime
|
|
- **Great DX**: Simple, clean syntax
|
|
- **Charts**: Svelte-chartjs, Plotly
|
|
- **Performance**: Excellent for charts/visualization
|
|
- **SSR**: Built-in server-side rendering
|
|
|
|
**Cons**:
|
|
- **No code sharing** with React Native
|
|
- Smaller ecosystem
|
|
- Less mature than React
|
|
|
|
---
|
|
|
|
### Option 3: Vue.js
|
|
**Description**: Progressive JavaScript framework
|
|
|
|
**Pros**:
|
|
- **Simple learning curve**: Easier than React
|
|
- **Charts**: Chart.js, ECharts
|
|
- **Performance**: Good for visualizations
|
|
- **Ecosystem**: Growing but smaller than React
|
|
|
|
**Cons**:
|
|
- **No code sharing** with React Native
|
|
- Smaller ecosystem than React
|
|
- Less job market demand
|
|
|
|
---
|
|
|
|
## Comparison Matrix
|
|
|
|
| Criteria | React Native + React | Flutter + React/Svelte | Native + React |
|
|
|----------|---------------------|------------------------|----------------|
|
|
| **Development Cost** | Low (code sharing) | Medium | High (2x platforms) |
|
|
| **Time to Market** | Fast | Medium | Slow |
|
|
| **Mobile Performance** | Good | Excellent | Excellent |
|
|
| **Web Performance** | Good | Good | Good |
|
|
| **Code Sharing** | 70-80% | 0% | 0% |
|
|
| **Health Sensors** | ✅ Excellent | ✅ Excellent | ✅ Excellent |
|
|
| **QR Scanning** | ✅ Excellent | ✅ Excellent | ✅ Excellent |
|
|
| **Crypto** | ✅ Excellent | ✅ Good | ✅ Excellent |
|
|
| **Bundle Size** | Medium | Small | Small |
|
|
| **Maintenance** | Medium | Medium | High |
|
|
| **Team Skills** | JavaScript only | Dart + JS | Swift + Kotlin + JS |
|
|
| **Ecosystem** | Largest | Large | Native |
|
|
|
|
---
|
|
|
|
## Research Questions
|
|
|
|
### For Mobile Framework
|
|
|
|
1. **Health Sensor Integration Quality**
|
|
- How well does each framework integrate with HealthKit?
|
|
- How well does each framework integrate with Google Health Connect?
|
|
- Background sensor data collection?
|
|
- Step counting, heart rate, sleep tracking support?
|
|
|
|
2. **QR Code Scanning**
|
|
- Camera API integration quality
|
|
- QR scanning library availability
|
|
- Performance and accuracy
|
|
|
|
3. **Encryption Capabilities**
|
|
- Client-side AES-256-GCM encryption
|
|
- PBKDF2 key derivation
|
|
- Web Crypto API bridging (for code sharing)
|
|
- Secure key storage (Keychain/Keystore)
|
|
|
|
4. **Background Sync**
|
|
- Background task scheduling
|
|
- Sync reliability
|
|
- Battery efficiency
|
|
- Data transfer optimization
|
|
|
|
5. **Push Notifications**
|
|
- Local notifications (reminders)
|
|
- Push notifications (server-triggered)
|
|
- Scheduling accuracy
|
|
|
|
### For Web Framework
|
|
|
|
1. **Chart Visualization**
|
|
- Chart library compatibility
|
|
- Performance with large datasets
|
|
- Real-time data streaming
|
|
- Beautiful, interactive charts
|
|
|
|
2. **Encrypted Data Handling**
|
|
- Client-side decryption
|
|
- Large encrypted data handling (10MB+)
|
|
- Streaming response support
|
|
- Zero-knowledge architecture support
|
|
|
|
3. **Complex State Management**
|
|
- Family structure management
|
|
- Multi-person profiles
|
|
- Access control and permissions
|
|
- Offline data synchronization
|
|
|
|
4. **Performance**
|
|
- Bundle size and load time
|
|
- Rendering performance for complex charts
|
|
- Memory usage for large datasets
|
|
|
|
---
|
|
|
|
## Health Sensor Integration Deep Dive
|
|
|
|
### Apple HealthKit
|
|
|
|
**Data Types to Integrate**:
|
|
- Steps (count, distance)
|
|
- Heart rate (resting, walking, variability)
|
|
- Sleep analysis (duration, quality, stages)
|
|
- Weight, height, BMI
|
|
- Blood pressure
|
|
- Temperature
|
|
- Oxygen saturation
|
|
- Respiratory rate
|
|
- Menstrual cycle data
|
|
- Workouts and activity
|
|
- Nutrition (water, caffeine)
|
|
|
|
**Integration Requirements**:
|
|
- Authorization request handling
|
|
- Background delivery (HKHealthStore)
|
|
- Query historical data
|
|
- Write data to HealthKit (if needed)
|
|
- Sample queries (filtered by date, type)
|
|
|
|
### Google Health Connect
|
|
|
|
**Data Types to Integrate**:
|
|
- Steps (count, distance)
|
|
- Heart rate (resting, variability)
|
|
- Sleep (sessions, stages)
|
|
- Weight, height
|
|
- Blood pressure
|
|
- Temperature
|
|
- Oxygen saturation
|
|
- Nutrition
|
|
- Menstrual cycle
|
|
- Exercise sessions
|
|
|
|
**Integration Requirements**:
|
|
- Permission request handling
|
|
- Background reading (WorkManager)
|
|
- Historical data queries
|
|
- Write data to Health Connect (if needed)
|
|
|
|
---
|
|
|
|
## Recommended Architecture
|
|
|
|
### Mobile-First, Web-Complementary
|
|
|
|
#### Recommended Stack: **React Native + React**
|
|
|
|
**Rationale**:
|
|
|
|
1. **Code Sharing (70-80%)**
|
|
- Business logic: User management, data sync, encryption
|
|
- State management: Redux/Zustand store
|
|
- API client: Axios/Fetch wrapper
|
|
- Encryption utilities: AES-GCM, PBKDF2, keys
|
|
- Data validation: Zod schemas
|
|
- Date handling: date-fns, luxon
|
|
|
|
2. **Health Sensors**
|
|
- React Native Health (iOS)
|
|
- React Native Google Fit (Android)
|
|
- Background task support
|
|
- Excellent sensor integration
|
|
|
|
3. **QR Scanning**
|
|
- react-native-camera
|
|
- Fast, accurate scanning
|
|
|
|
4. **Encryption**
|
|
- react-native-quick-crypto
|
|
- Secure key storage (Keychain/Keystore)
|
|
- Web Crypto API compatible
|
|
|
|
5. **Web Charts**
|
|
- Recharts (React)
|
|
- D3.js (if needed)
|
|
- Chart.js (simple charts)
|
|
- Excellent visualization
|
|
|
|
6. **Team Skills**
|
|
- Single language: JavaScript/TypeScript
|
|
- Single ecosystem: npm
|
|
- Lower hiring cost
|
|
|
|
#### Architecture Diagram
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────┐
|
|
│ Shared Layer │
|
|
│ (Business Logic, State, API, Encryption) │
|
|
│ │
|
|
│ - Redux/Zustand Store │
|
|
│ - API Client (Axios) │
|
|
│ - Encryption Utilities (AES-GCM, PBKDF2) │
|
|
│ - Data Validation (Zod) │
|
|
│ - Date Handling (date-fns) │
|
|
└─────────────────────────────────────────────────────┘
|
|
│
|
|
┌───────────────┴───────────────┐
|
|
│ │
|
|
▼ ▼
|
|
┌──────────────────┐ ┌──────────────────┐
|
|
│ React Native │ │ React (Web) │
|
|
│ (Mobile) │ │ (Companion) │
|
|
│ │ │ │
|
|
│ - Native UI │ │ - DOM UI │
|
|
│ - Camera │ │ - Charts │
|
|
│ - HealthKit │ │ - Tables │
|
|
│ - Health Conn. │ │ - Forms │
|
|
│ - Push Notif. │ │ - Settings UI │
|
|
│ - Background │ │ │
|
|
└──────────────────┘ └──────────────────┘
|
|
│ │
|
|
│ │
|
|
▼ ▼
|
|
┌──────────────────┐ ┌──────────────────┐
|
|
│ iOS App │ │ Browser │
|
|
│ (App Store) │ │ (Web) │
|
|
└──────────────────┘ └──────────────────┘
|
|
┌──────────────────┐
|
|
│ Android App │
|
|
│ (Play Store) │
|
|
└──────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Proof of Concept Requirements
|
|
|
|
### Mobile POC
|
|
|
|
1. **Health Sensor Integration**
|
|
- Read steps from HealthKit (iOS)
|
|
- Read steps from Health Connect (Android)
|
|
- Display last 7 days of step data
|
|
- Sync with backend API
|
|
|
|
2. **Encryption Test**
|
|
- Encrypt health data on device
|
|
- Send to backend
|
|
- Decrypt on device
|
|
- Verify zero-knowledge (backend stores encrypted)
|
|
|
|
3. **QR Scanning**
|
|
- Scan QR code
|
|
- Parse lab result data
|
|
- Encrypt and sync
|
|
|
|
4. **Background Sync**
|
|
- Sync every 5 minutes
|
|
- Handle offline mode
|
|
- Conflict resolution
|
|
|
|
### Web POC
|
|
|
|
1. **Chart Visualization**
|
|
- Display 30 days of health data
|
|
- Line chart (weight trends)
|
|
- Bar chart (steps per day)
|
|
- Responsive design
|
|
|
|
2. **Profile Management**
|
|
- Create/edit profile
|
|
- Add family members
|
|
- Set permissions
|
|
|
|
3. **Encrypted Data Handling**
|
|
- Load 10MB encrypted data
|
|
- Decrypt and display
|
|
- Stream large datasets
|
|
|
|
---
|
|
|
|
## Implementation Timeline
|
|
|
|
### Phase 1: Mobile MVP (8-12 weeks)
|
|
- [ ] Setup React Native project
|
|
- [ ] Integrate HealthKit (iOS)
|
|
- [ ] Integrate Health Connect (Android)
|
|
- [ ] Implement encryption utilities
|
|
- [ ] Build API client
|
|
- [ ] Implement authentication
|
|
- [ ] Build core UI (profile, data entry, sync)
|
|
- [ ] Test QR scanning
|
|
- [ ] Implement background sync
|
|
|
|
### Phase 2: Web Companion (4-6 weeks)
|
|
- [ ] Setup React project
|
|
- [ ] Share business logic from mobile
|
|
- [ ] Build chart visualization
|
|
- [ ] Build profile management UI
|
|
- [ ] Build family structure UI
|
|
- [ ] Build reporting interface
|
|
|
|
### Phase 3: Polish & Launch (4-6 weeks)
|
|
- [ ] Performance optimization
|
|
- [ ] Security audit
|
|
- [ ] App store submission
|
|
- [ ] Marketing materials
|
|
- [ ] User testing
|
|
- [ ] Beta launch
|
|
|
|
---
|
|
|
|
## Alternative Considered: Flutter
|
|
|
|
### Why Flutter is a strong alternative
|
|
|
|
**Pros**:
|
|
- Excellent performance (compiled to native)
|
|
- Beautiful UI out of the box
|
|
- Unified health package (HealthKit + Health Connect)
|
|
- Small app bundle size
|
|
- Fast development (hot reload)
|
|
|
|
**Why React Native wins for Normogen**:
|
|
|
|
1. **Code Sharing (Critical Advantage)**
|
|
- 70-80% code sharing vs 0%
|
|
- Faster time to market
|
|
- Lower development cost
|
|
- Easier maintenance
|
|
|
|
2. **Team Skills**
|
|
- Single language (JavaScript/TypeScript)
|
|
- Single ecosystem (npm)
|
|
- Lower hiring cost
|
|
- Faster onboarding
|
|
|
|
3. **Ecosystem Maturity**
|
|
- React Native: More mature, larger community
|
|
- Better health sensor integration
|
|
- More third-party libraries
|
|
- More production experience
|
|
|
|
4. **Web Companion**
|
|
- React for web companion (code sharing)
|
|
- Flutter web: Less mature, not recommended
|
|
|
|
**Flutter would be better if**:
|
|
- Web companion was not needed
|
|
- Team had Dart experience
|
|
- Performance was critical (not the case for health app)
|
|
- UI polish was the top priority
|
|
|
|
---
|
|
|
|
## Final Recommendation
|
|
|
|
### Primary Recommendation: **React Native + React**
|
|
|
|
**Score**: 9/10
|
|
|
|
**Justification**:
|
|
|
|
1. **Code Sharing** (Critical)
|
|
- 70-80% shared between mobile and web
|
|
- Single language (JavaScript/TypeScript)
|
|
- Faster development, easier maintenance
|
|
|
|
2. **Health Sensors** (Excellent)
|
|
- React Native Health (iOS HealthKit)
|
|
- React Native Google Fit (Android Health Connect)
|
|
- Background sensor data collection
|
|
- Comprehensive health data support
|
|
|
|
3. **Encryption** (Excellent)
|
|
- react-native-quick-crypto
|
|
- Web Crypto API compatible
|
|
- Secure key storage (Keychain/Keystore)
|
|
|
|
4. **QR Scanning** (Excellent)
|
|
- react-native-camera
|
|
- Fast, accurate scanning
|
|
|
|
5. **Web Charts** (Excellent)
|
|
- Recharts (React)
|
|
- Beautiful, interactive visualizations
|
|
- Great for health data
|
|
|
|
6. **Team & Cost** (Excellent)
|
|
- Single language (JS/TS)
|
|
- Single ecosystem (npm)
|
|
- Lower development cost
|
|
- Faster time to market
|
|
|
|
### Risk Assessment
|
|
|
|
**Risk: React Native Performance**
|
|
- **Severity**: Low
|
|
- **Mitigation**: Good enough for health data apps
|
|
- **Mitigation**: Performance optimization techniques
|
|
- **Mitigation**: Native modules for critical paths
|
|
|
|
**Risk: JavaScript Engine Overhead**
|
|
- **Severity**: Low
|
|
- **Mitigation**: Hermes engine (faster, smaller)
|
|
- **Mitigation**: Modern phones are fast enough
|
|
|
|
**Risk: Dependency Issues**
|
|
- **Severity**: Medium
|
|
- **Mitigation**: Careful dependency management
|
|
- **Mitigation**: Use stable, well-maintained libraries
|
|
- **Mitigation**: Monorepo for better control
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
1. ✅ **Mobile Framework Selected**: React Native
|
|
2. ⏭️ **Select State Management**: Redux vs Zustand vs Jotai
|
|
3. ⏭️ **Select Navigation**: React Navigation vs React Native Navigation
|
|
4. ⏭️ **Select Charts**: Recharts vs Chart.js
|
|
5. ⏭️ **Design Database Schema**: MongoDB collections
|
|
6. ⏭️ **Create POC**: Health sensor integration test
|
|
7. ⏭️ **Implement Authentication**: JWT + recovery phrase
|
|
|
|
---
|
|
|
|
## Technology Stack Summary
|
|
|
|
### Mobile
|
|
- **Framework**: React Native 0.73+
|
|
- **Language**: TypeScript
|
|
- **State Management**: TBD (Redux/Zustand)
|
|
- **Navigation**: React Navigation
|
|
- **Health Sensors**:
|
|
- react-native-health (iOS)
|
|
- react-native-google-fit (Android)
|
|
- **QR Scanning**: react-native-camera
|
|
- **Encryption**: react-native-quick-crypto
|
|
- **HTTP**: Axios
|
|
- **Date**: date-fns
|
|
|
|
### Web
|
|
- **Framework**: React 18+
|
|
- **Language**: TypeScript
|
|
- **State Management**: TBD (Redux/Zustand)
|
|
- **Routing**: React Router
|
|
- **Charts**: Recharts
|
|
- **HTTP**: Axios
|
|
- **Date**: date-fns
|
|
- **UI**: Tailwind CSS / Chakra UI
|
|
|
|
### Shared
|
|
- **Language**: TypeScript
|
|
- **State Management**: Redux/Zustand
|
|
- **API Client**: Axios
|
|
- **Encryption**: AES-256-GCM, PBKDF2
|
|
- **Validation**: Zod
|
|
- **Date**: date-fns
|
|
- **Utilities**: Shared monorepo package
|
|
|
|
---
|
|
|
|
## Conclusion
|
|
|
|
**React Native + React** is the optimal choice for Normogen's mobile-first, web-complementary architecture:
|
|
|
|
- **70-80% code sharing** between mobile and web
|
|
- **Excellent health sensor integration** (HealthKit + Health Connect)
|
|
- **Single language** (JavaScript/TypeScript) reduces development cost
|
|
- **Great chart visualization** for web companion
|
|
- **Proven at scale** in health apps
|
|
- **Faster time to market** than native or Flutter
|
|
|
|
**Decision**: Use **React Native** for mobile (iOS + Android) and **React** for web companion app.
|
|
|
|
---
|
|
|
|
## References
|
|
|
|
- [React Native](https://reactnative.dev/)
|
|
- [React Native Health](https://github.com/anthonyecamps/react-native-health)
|
|
- [React Native Google Fit](https://github.com/StasDoskalenko/react-native-google-fit)
|
|
- [React Native Quick Crypto](https://github.com/margelo/react-native-quick-crypto)
|
|
- [React Native Camera](https://github.com/react-native-camera/react-native-camera)
|
|
- [Recharts](https://recharts.org/)
|
|
- [HealthKit Documentation](https://developer.apple.com/documentation/healthkit)
|
|
- [Google Health Connect](https://developer.android.com/health-and-fitness/google/health-connect)
|