Updating Keel
Studio and Agency licenses come with read access to the private keelkit-dev/keel-template repo, and every update lands there on master. This page covers how to pull those updates into your own product without losing your changes. Solo is a snapshot of the code at checkout, so there's nothing to pull.
One-time setup: keep Keel as upstream
Your product should live in your own repo, with Keel's repo as a second remote you pull from. If you cloned the template directly, rename its remote and point origin at your own:
git remote rename origin upstream
git remote add origin https://github.com/<you>/<your-product>.git
git push -u origin mastergit remote -v should now list both. You push to origin, you only ever fetch from upstream.
Read-only on purpose
Buyer access to the template repo is read-only. Pushing to upstream will fail, which is the point: your code never ends up in anyone else's copy.
Pulling an update
-
Read the changelog first. It lists what changed in each update.
-
Start from a clean tree on a branch.
bashgit switch -c keel-update
git fetch upstream
git merge upstream/master -
Resolve conflicts (see the hotspots below), then run the checks:
bashbun install
bun run typecheck && bun run lint && bun run test -
Apply new migrations to your local database with
bun run db:migrate, click through the app, then merge the branch and deploy. Run the same migrate step against production before or during the deploy, the same way you ship your own schema changes.
Merging (not rebasing) keeps Keel's history intact, so the next update only brings in what's new since the last one.
Where conflicts usually happen
These are the files both you and Keel are likely to touch. Expect to resolve them by hand:
lib/db/schema/*andlib/db/migrations/. Keep every migration from both sides. If you generated your own migrations, Drizzle'smeta/_journal.jsonwill conflict: take Keel's entries, then re-runbun run db:generateso your schema changes get a fresh migration numbered after Keel's.app/globals.css. Your theme tokens versus any token Keel adds. Keep your values, add the new variables.- Marketing pages and
components/marketing/*. If you've replaced Keel's copy with your own (you should), keep yours. lib/billing/plans.ts. Your plans and prices win. Check whether Keel added a new field to the plan shape..env.example. Merge both, then copy any new variables into.env.localand your host's settings.
Smaller updates, fewer conflicts
Pulling every update as it lands is much easier than catching up on five at once. Watch the template repo on GitHub to get notified when one ships.
If a merge goes wrong
Nothing is lost until you merge the branch. git merge --abort puts you back where you started, and deleting the keel-update branch throws the attempt away.