Skip to content

feat: React Native Web migration with Expo — iOS/Android + web parity#32

Open
theAlexPatin wants to merge 6 commits intomainfrom
alex/react-native-web-plan
Open

feat: React Native Web migration with Expo — iOS/Android + web parity#32
theAlexPatin wants to merge 6 commits intomainfrom
alex/react-native-web-plan

Conversation

@theAlexPatin
Copy link
Owner

Summary

  • Adds a full React Native + Expo app (packages/app) targeting iOS, Android, and web, replacing the existing Astro frontend
  • Ports all screens (file browser, admin panel, settings, login, setup) and components to React Native using StyleSheet.create() + Tamagui hybrid styling
  • Implements platform-specific passkey auth (WebAuthn on web, native stubs), TUS resumable uploads, and cross-platform UI primitives (Button, Badge, Tabs, Toast, Skeleton)
  • Includes Metro config with API proxy, shared theme system (colors, typography, sizing, outlines), and 8 React Query hooks for server state

Test plan

  • Run pnpm install and verify no dependency conflicts
  • Run pnpm --filter @mininas/app dev:web and verify web build loads
  • Test passkey registration/login flow on web
  • Test file browsing, upload, preview, and share dialogs
  • Test admin panel (volumes, users, system tabs)
  • Verify Biome CI passes on new code

Scaffold new packages/app Expo project targeting iOS, Android, and web platforms using React Native Web. Implements full feature parity with existing web app using Tamagui 2.0 + StyleSheet.create() theme system for styling consistency across platforms.

- Core: Expo 53, React Native 0.79.6, Expo Router file-based navigation
- Theme: Hestia-style design tokens (colors, sizing, outlines, typography)
- Lib: Platform-agnostic API client, passkey auth (web via WebAuthn, native stub)
- Hooks: 8 shared hooks ported from web (useAuth, useFiles, useUpload, etc.)
- UI: 6 primitives with StyleSheet (Button, Badge, Tabs, Toast, EmptyState, Skeleton)
- Components: 10 file browser components (FileList, FileGrid, Breadcrumbs, SearchBar, etc.)
- Screens: 7 screens (home, login, setup, file browser, admin, settings)
- Config: Metro proxy for dev API, web mocks for native modules, Turbo pipeline update
- Remove old Astro frontend (packages/web)
- Update static middleware SPA fallback for Expo Router (single root index.html)
- Add BASE_PATH and APP_NAME runtime injection support to app config
- Update Homebrew formula to use packages/app/dist
- Update root start script to serve app via API's static middleware
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant