Skip to main content
Percher is still being built and account creation is paused — get notified when it opens.

Migrating from Convex

Keep Convex or switch to PocketBase

Ask your agent
Plan how to move my Convex app to Percher. Inventory the data model, functions, auth, and secrets first; do not delete or overwrite anything without my approval.Read the guide at percher.app/docs/migrate-convex
Keep my Convex, but host the app on Percher.Read the guide at percher.app/docs/migrate-convex
How it works, with exact details

Two options: keep your Convex deployment, or switch to Percher's managed PocketBase. Keeping Convex is the easiest — your app moves to Percher, your data doesn't move at all.

Option 1: Keep Convex (easiest)

# percher.toml
[data]
mode = "convex"

[data.convex]
deployment_url = "https://your-project.convex.cloud"

# CONVEX_URL and VITE_CONVEX_URL are injected automatically.
# Deploy your Convex functions separately through Convex.

Match the variable names your app reads and configure authentication for its final URL. Publishing to Percher does not deploy your Convex functions. Follow the connection guide for setup and verification.

Option 2: Switch to PocketBase

Key difference: Convex runs server functions in their cloud. With PocketBase, your API routes run in your app container. Move Convex functions to Express/Hono/Next.js API routes.

Concept mapping: Convex → PocketBase
useQuery(api.tasks.list)pb.collection('tasks').getList()
useMutation(api.tasks.create)pb.collection('tasks').create({})
Convex schema (schema.ts)PocketBase collections (admin UI or API)
Convex functions (convex/)API routes in your app
Convex auth (clerk/auth0)PocketBase built-in auth
Convex file storagePocketBase file fields
Realtime (automatic)pb.collection('x').subscribe('*', fn)