A demonstration project showing how to migrate native mobile app storage to React Native using MMKV.
This project is the base for two hands-on articles about migrating user data from native mobile storage to a cross-platform React Native solution. It is a follow-up to the original article: How to Migrate User Data from Native to Cross-Platform Apps.
Article 1 — Brownfield: uses react-native-brownfield to embed React Native incrementally inside the existing native apps.
Article 2 — Greenfield: migrates to a brand-new React Native app while preserving data stored in the native apps.
.
├── android/ # Native Android app (SharedPreferences)
├── ios/ # Native iOS app (Keychain / UserDefaults)
├── rn/ # React Native layer (MMKV)
├── poc/
│ ├── # Brownfield POC ios, android, and rn
│ └── # Greenfield POC ios, android, and rn
└── article/
│ ├── brownfield.md # Article 1 draft — brownfield approach
│ └── greenfield.md # Article 2 draft — greenfield approach
| Platform | Native Storage | Target Storage |
|---|---|---|
| iOS | Keychain / UserDefaults | MMKV (React Native) |
| Android | SharedPreferences | MMKV (React Native) |
Both articles start from the same native baseline (iOS + Android), then diverge:
Brownfield
- Embed React Native into the existing native apps via
react-native-brownfield. - Migrate stored data from native APIs to MMKV without replacing the native shell.
Greenfield
- Create a fresh React Native app from scratch.
- On first launch, read data from native storage and write it to MMKV.