Switch from Convex

Bring your Convex app and its users. Add SQL when you want it.

One command reads your Convex snapshot: Convex Auth users with their passwords, every table as a live document collection with the same ids, and your file storage.

What moves

Users and passwords

Convex Auth password users sign in with the password they have; user ids in your documents point at the new accounts.

Every table

Each table becomes a document collection with the same ids, queryable live like useQuery.

File storage

Files land in a bucket named by their storage id, with their content type.

Still reactive

Live listeners re-run when documents change, each as its own user, under your rules.

Three commands

  1. 1

    Export from Convex

    A snapshot of your production deployment, files included.

    npx convex export --path snapshot.zip --include-file-storage --prod
  2. 2

    Check everything, write nothing

    A dry run reads the whole snapshot and lists what would move.

    sov import convex --snapshot snapshot.zip --dry-run
  3. 3

    Import

    Then add a rule per collection and check it with a simulation run.

    sov import convex --snapshot snapshot.zip
    sov sim run

Everything has a place

ConvexSovaria
Tables of documentsDocument collections, same names and ids
useQueryLive listeners (onSnapshot)
MutationsDocument writes and transactions
ActionsEdge Functions in TypeScript, JavaScript, Python or Go
Crons and scheduled functionsFunction schedules and triggers
Convex AuthAuth: passwords, magic links, social, MFA, passkeys
File storageStorage buckets with rules and signed URLs
Checks inside functionsRules on every request, tested by simulation
—Postgres in the same project, joinable with your documents

Questions

Do my users have to reset their passwords?

No. Convex Auth’s password hashes (Lucia scrypt) are checked by Sovaria and upgraded at the first sign-in. OAuth users sign in with the same provider; anonymous users aren’t moved.

What happens to my queries and mutations?

They become SDK calls: reads and live queries on collections, writes and transactions, and Edge Functions for logic that must stay on the server.

What isn’t moved?

Convex components’ tables, scheduled jobs in flight, and Convex Auth’s sessions and tokens. The report lists them.

Start building on Sovaria

A free project takes a minute. Your data stays behind rules from the first request.