Support Vite descriptors and Expo mobile hosts#73
Conversation
…t and configurable port` in `76d916a`. I left [`apps/vite-test/src/tic_tac_toe.tsx`](/var/tmp/vibe-kanban/worktrees/8100-fix-vite-dev-nod/springboard/apps/vite-test/src/tic_tac_toe.tsx) unstaged, since it was modified but not included in your list.
…es` in `6a8c1c4`. I left the untracked `.springboard/` directory out of the commit, as requested by your file list.
Deploying jamtools-docs-new with
|
| Latest commit: |
635ba86
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://74197178.jamtools-docs-new.pages.dev |
| Branch Preview URL: | https://vk-e560-vd-mobile-app.jamtools-docs-new.pages.dev |
|
Claude finished @mickmister's task —— View job PR Review: Continue vite migration for mobile app supportThis is a substantial PR that migrates springboard from esbuild to Vite while adding comprehensive mobile app support. I've completed a thorough review of the changes. Review Checklist:
Overall AssessmentStrong Points:
Areas of Concern: Detailed Findings🔒 Security IssuesHigh Priority:
⚡ Performance ConcernsMedium Priority:
🏗️ Architecture & Code QualityMedium Priority:
🧪 Test CoverageGood Coverage:
Missing Coverage:
📱 Mobile-Specific ConsiderationsWell Implemented:
🚀 Performance OptimizationsRecommendations:
Recommendations for Next StepsBefore Merge (Critical):
Post-Merge (Important):
SummaryThis PR represents excellent architectural progress toward Vite migration and mobile support. The code quality is generally high with good separation of concerns and comprehensive TypeScript support. However, security issues with WebView configuration and JavaScript injection must be addressed before merge to prevent potential vulnerabilities. The E2E testing approach is exemplary and the overall structure sets up the codebase well for multi-platform development. Recommendation: 🔄 Request Changes - Address security concerns before approval |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f2559ab4fa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| clearRegisteredSplashScreen(); | ||
| resetServerRegistry(); | ||
|
|
||
| await import('__USER_ENTRY__'); |
There was a problem hiding this comment.
Register exported descriptor in node dev bootstrap
The dev server bootstrap only executes await import('__USER_ENTRY__'), so descriptor-style entrypoints (export default springboard.defineModule(...) / springboard.entrypoint(...)) never get registered before engine.initialize(). In that case the Node dev app starts with no modules/routes despite the new descriptor API, which breaks the migration path in serve mode. Mirror the production bootstrap by reading module exports and calling engine.registerDescriptor(...).
Useful? React with 👍 / 👎.
| const rpc = new BrowserJsonRpcClientAndServer(`${WS_HOST}/ws`); | ||
| const remoteKvStore = new HttpKvStoreClient(DATA_HOST); | ||
| const userAgentKvStore = new BrowserKVStoreService(localStorage); | ||
| const applicationDescriptor = getApplicationDescriptorFromExports(applicationEntrypointModule, '__USER_ENTRY__'); |
There was a problem hiding this comment.
Allow legacy side-effect entrypoints in web bootstrap
This unconditionally requires a descriptor export and throws when the app entrypoint only uses side-effect registration (for example existing springboard.registerModule(...) files). The previous flow supported those modules by importing them directly; now browser startup fails at runtime for legacy apps that have no default/entrypoint export. Keep descriptor support, but fall back to side-effect initialization when no descriptor export is present.
Useful? React with 👍 / 👎.
Summary
This PR advances the Springboard Vite migration and adds the shared Expo/React Native building blocks needed by SongDrive and Vibe Dashboard mobile apps.
What changed
node_modulesand removes older unused plugin/config utilities.registerServerModule.springboard.defineModule(...)andspringboard.entrypoint(...)so apps can declare modules/entrypoints without manually typing registry objects.Why
SongDrive is migrating from esbuild to Vite while continuing to support browser, server, and mobile app entrypoints. Vibe Dashboard also uses Springboard and is adding an Expo mobile shell. These changes move the common Vite and React Native boilerplate into Springboard so both apps can share the same app framework conventions and avoid project-specific copies of mobile host logic.
Implementation notes