Skip to main content
PercherPercher

Migrating from Convex

Keep Convex or switch to PocketBase

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.
# Your existing Convex client, queries, and mutations keep working.

Option 2: Switch to PocketBase

Concept mapping:

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)

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.

← PrevMigrating from SupabaseNext →Migrating from Vercel
Percher — AI-native app hosting