convex/. Upgrade both from the same release tag.
Before you start
- Read the release notes in
CHANGELOG.mdfor the tag you are moving to. - Back up the Convex backend with
npx convex export. - Pin versions. Never run a floating
latesttag in production, for the app or the Convex backend.
Upgrade
1
Check out the release
2
Deploy the Convex functions
From the checkout, against your backend:Deploy the functions and update the app one right after the other: until both are on the new release, some requests can fail.
3
Update the web app
With the installer:With Docker Compose, set
OVERLAY_WEB_IMAGE to the new tag, then:4
Verify
Sign in, open a chat and send a message, upload a file, and open Settings. Check
/api/v1/capabilities and the app and backend logs.Upgrading the Convex backend itself
Theconvex-backend image has its own version, separate from Overlay’s.
- Export first:
npx convex export --env-file convex.env.local. - Change
CONVEX_BACKEND_IMAGEinconvex.envto the new pinned tag, thendocker compose -f docker-compose.convex.yml --env-file convex.env up -d. - Watch the backend logs for
Executing Migration n/mand thenMigrationComplete.
Roll back
- Web app and functions: set the previous image tag and restart, then check out the previous tag and run
npx convex deployagain, so both sides match. - Data: if a release changed data in a way you need to undo, restore the export you took first:
npx convex import --replace-all <export.zip>. This needs downtime; take a final export after traffic stops.