Migrate to 3va
This section covers moving a real project to 3va, whatever it runs on today. Each page records what happened when we actually tried it: project templates created with the official scaffolders, installed and run with 3va 2.9.0 on Linux x64 in September 2026.
Short version: 3va is a good fit today for backends, scripts, CLIs and test suites. Frontend build tooling (Vite, Next.js, Metro) and packages that build their binary in an install script don’t run under 3va yet. Keep Node.js for that part and move the rest.
Status at a glance
| Project / source | Status | Notes |
|---|---|---|
| Node.js + npm | ✅ Works | 3va migrate converts package-lock.json, and 3va ci installs it exactly |
| Yarn | ⚠️ Partial | Classic works end to end. Berry needs nodeLinker: node-modules, and its lockfile can’t be converted |
| pnpm | ✅ Works | pnpm-lock.yaml v9 converts, and versions are kept |
| Bun | ⚠️ Partial | bun.lock converts. Bun.* APIs and top-level await need rewriting |
| Deno | ⚠️ Manual | Needs a package.json. deno.json, npm:/jsr: and Deno.* aren’t supported |
| HTTP APIs (Express) | ✅ Works | Express 4 and 5 |
| Databases | ⚠️ Mixed | Redis and node:sqlite work. Postgres only with md5/trust auth. mysql2 fails |
| Vite | ❌ Not yet | Installs now, native binaries included. The Vite CLI still doesn’t run |
| Next.js | ❌ Not yet | Installs with SWC now. next build still fails |
| React Native / Expo | ⚠️ Logic only | Metro doesn’t start. Shared TS logic and tests work |
| Tauri | ⚠️ Partial | 3va bundle works. The Tauri CLI installs but doesn’t run under 3va |
| Monorepos | ✅ Works | workspace:* and npm-style "*" both link local members. file: isn’t supported |
Where to start
Migrate in layers, from lowest to highest risk:
- Run your existing code with
3va run, on thenode_modulesyour current package manager already installed. Nothing else changes, and you find out quickly which permissions the app really needs. - Test with
3va test. Jest-style suites for pure logic usually run unchanged. - Deploy the backend with
3va startin place of pm2/node. - Install with 3va:
3va migrateconverts your lockfile,3va installkeeps the versions it pins, and3va ciinstalls exactly those in CI. Check the scanner and other install factors first. - Build tooling (Vite, Next.js, Metro, the Tauri CLI) stays on Node.js for now.
The Migration Guide collects every factor to check before and during a migration: permissions, the malware scanner, native modules, lockfiles and Node API gaps.