Wie teilt man Code zwischen Next.js und Expo in einem Monorepo?
Es kommt auf die Modulgrenzen und Bundler-Konfiguration an. Die stabilste Architektur trennt Datenmodelle, Validierungen und API-Verträge mit pnpm und Turborepo in interne Headless-Pakete. Der Next.js 16 Server führt Drizzle ORM direkt gegen PostgreSQL aus, während die Expo-App über getypte Endpunkte kommuniziert und Auth-Tokens sicher via expo-secure-store speichert. supastack liefert dieses Setup schlüsselfertig ohne Konflikte zwischen Metro und Turbopack.
Die größte Hürde bei Cross-Platform-SaaS: Der Bundler-Konflikt
Jeder Gründer weiß, dass mobile Apps dank Push-Nachrichten und Präsenz auf dem Homescreen die Nutzerbindung und Aktivität drastisch steigern. Doch die Kombination von Next.js und React Native Expo in einem Monorepo birgt Fallstricke.
Next.js nutzt Turbopack oder Webpack für Node- und Edge-Runtimes, während Expo auf den Metro-Bundler für React Native setzt. Unbedachtes Code-Sharing scheitert schnell: Metro versucht Node-Module wie crypto zu laden, während Turbopack an mobilen JSX-Mustern scheitert. Die Lösung liegt in strikter Kapselung.
Einheitliche Authentifizierung: Cookies im Web, SecureStore auf Mobile
Web und Mobile benötigen unterschiedliche Sitzungsmechanismen. Im Web setzt Next.js HTTP-only-Cookies für automatischen CSRF-Schutz und serverseitiges Rendering.
Auf Mobilgeräten sind Cookies unzuverlässig. Stattdessen speichert die Expo-App nach dem OAuth-Flow einen sicheren Bearer-Token über expo-secure-store in Keychain oder Keystore. Mobile API-Aufrufe senden den Header Authorization: Bearer <token>, den die geteilte Better Auth Middleware prüft.
CI/CD und Release-Pipeline: Vercel, EAS Build und Versionsabgleich
Ein gemeinsames Repository ermöglicht synchronisierte Releases. Wird eine Migration in @supastack/db übernommen, aktualisiert sich das Next.js-Backend auf Vercel oder Cloud Run innerhalb von Sekunden.
Gleichzeitig kompiliert Expo Application Services (EAS Build) native Builds für Apple TestFlight und Google Play. Feste Paketversionen im Monorepo verhindern die gefürchteten Versionskonflikte getrennter Repositories.