Shell React Native con 2 estrategias de microfrontends mobile:
WebView (embebido)Forma parte del POC de microfrontends junto con:
svelte-microfront — microfront Svelterepack-microfront — microfront RN con Repack┌─ react-native-microfronts (HOST) ───────────────┐
│ │
│ [ Abrir Svelte ] ── WebView(URL) ──→ svelte-microfront
│ (app web servida en :4173)
│ │
│ [ Abrir Repack ] ── Linking deep link ──→ com.repackmicrofront
│ (otra app RN instalada en el device)
│ │
└─────────────────────────────────────────────────┘
react-native-webview para embeber el SvelteLinking para abrir el Repack como app separadaadb en PATHcd ~/Documents/Project/Repos # o donde prefieras
git clone https://github.com/dev-ccazares/react-native-microfronts.git
git clone https://github.com/dev-ccazares/svelte-microfront.git
git clone https://github.com/dev-ccazares/repack-microfront.git
cd svelte-microfront
npm install
npm run build
npm run preview -- --host 0.0.0.0 --port 4173
Deja la terminal corriendo. Verás Local: http://localhost:4173/.
Sólo una vez (o cuando cambies código del microfront):
cd repack-microfront
npm install --legacy-peer-deps # necesita .npmrc privado de Deuna
cd android
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
Esto deja el APK com.repackmicrofront instalado en el emulador, listo para ser abierto por el deep link.
Más detalles en
repack-microfront/README.md.
cd react-native-microfronts
npm install --legacy-peer-deps
npm start # Metro en :8081
Deja Metro corriendo.
cd react-native-microfronts
npm run android # build + install + launch
Si todo va bien, se abre la app "Microfronts POC" automáticamente.
adb reverse tcp:8081 tcp:8081 # host Metro
adb reverse tcp:4173 tcp:4173 # Svelte preview
Reload la app (Cmd+M → Reload).
Como host y repack-microfront son ambas apps RN debug, ambas pelean por el puerto 8081. Para que el repack-microfront cargue su JS:
Ctrl+C en Terminal 3)cd repack-microfront
npm start # también en :8081
Sí, es engorroso — refleja que cada microfront RN debug es una app separada con sus propias deps de dev. En producción cada APK tendría su JS embebido y este conflicto no existe.
| Repo | Tech | Cómo lo carga el host |
|---|---|---|
react-native-microfronts (este) |
RN 0.80.3 + Metro | — |
svelte-microfront |
Svelte 5 + Vite | <WebView source={{ uri }} /> |
repack-microfront |
RN 0.80.3 + Repack + libs Deuna | Linking.openURL('repackmicrofront://launch') |
Un bundle de Repack es código React Native, no HTML. No puede ejecutarse adentro de un WebView. Las 2 opciones reales en mobile son:
repack-microfront y vimos issues con Hermes — viable a futuro pero no en este PoC.repack-microfront y poder compartir las libs Deuna en su ecosistema 0.80AndroidManifest.xml (main): removido ${usesCleartextTraffic} placeholder + agregado <queries> para Android 11+ (declarar qué schemes externos abre)AndroidManifest.xml (debug): agregado con usesCleartextTraffic="true" (necesario para conectar a Metro en HTTP)MainApplication.kt: refactor a la API de RN 0.80 (con ReactNativeHost)gradle-wrapper.properties: Gradle 9.3.1 → 8.14.1android/build.gradle: buildToolsVersion 36 → 35App.tsx: botón Repack usa Linking.openURL con Alert de aviso| Error | Causa | Fix |
|---|---|---|
| Pantalla roja "Unable to load script" | Metro no corriendo, o el device no llega a él | adb reverse tcp:8081 tcp:8081, verificar npm start arriba, reload |
CLEARTEXT communication not permitted |
Falta debug manifest | Verificar android/app/src/debug/AndroidManifest.xml |
| Alert "No está instalado" al tocar Abrir Repack | El APK del repack-microfront no está instalado | Ver Paso 2 |
| WebView del Svelte en blanco | SVELTE_URL apunta al host equivocado |
Confirmar que vite preview corre y que la URL es 10.0.2.2:4173 (emulador) o IP de la Mac (device físico) |