Skip to Content
Getting StartedMigrateOverview

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 / sourceStatusNotes
Node.js + npm✅ Works3va migrate converts package-lock.json, and 3va ci installs it exactly
Yarn⚠️ PartialClassic works end to end. Berry needs nodeLinker: node-modules, and its lockfile can’t be converted
pnpm✅ Workspnpm-lock.yaml v9 converts, and versions are kept
Bun⚠️ Partialbun.lock converts. Bun.* APIs and top-level await need rewriting
Deno⚠️ ManualNeeds a package.json. deno.json, npm:/jsr: and Deno.* aren’t supported
HTTP APIs (Express)✅ WorksExpress 4 and 5
Databases⚠️ MixedRedis and node:sqlite work. Postgres only with md5/trust auth. mysql2 fails
Vite❌ Not yetInstalls now, native binaries included. The Vite CLI still doesn’t run
Next.js❌ Not yetInstalls with SWC now. next build still fails
React Native / Expo⚠️ Logic onlyMetro doesn’t start. Shared TS logic and tests work
Tauri⚠️ Partial3va bundle works. The Tauri CLI installs but doesn’t run under 3va
Monorepos✅ Worksworkspace:* and npm-style "*" both link local members. file: isn’t supported

Where to start

Migrate in layers, from lowest to highest risk:

  1. Run your existing code with 3va run, on the node_modules your current package manager already installed. Nothing else changes, and you find out quickly which permissions the app really needs.
  2. Test with 3va test. Jest-style suites for pure logic usually run unchanged.
  3. Deploy the backend with 3va start in place of pm2/node.
  4. Install with 3va: 3va migrate converts your lockfile, 3va install keeps the versions it pins, and 3va ci installs exactly those in CI. Check the scanner and other install factors first.
  5. 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.