Upgrade
setup.md is one-time. This is the recurring part: keeping a fork current without breaking it. The stack tracks the latest releases (SvelteKit 3, Vite 8), as soon as pnpm's one-day wait has passed, so bumps land often.
The rhythm
- Monthly — run
pnpm outdated, then bump SvelteKit deliberately and smoke-test. Vite+ and the workflow actions aren't bumped here. They move in every repository at once, from craftz, whose survey flags a repository that's behind. Vite+'s override inpnpm-workspace.yamlmoves with it. - Every bump — CI must be green before merge. Strict branch protection on
mainenforces this and auto-rebases the other open PRs after each merge.
There's no Dependabot: every pull request it opened duplicated craftz's survey. A fork that doesn't follow craftz can add a .github/dependabot.yml of its own.
Smoke-test = pnpm install && pnpm dev, click through / and one doc page, then pnpm build.
Manual bumps
pnpm outdated
pnpm up --latest <pkg> # or edit package.json + pnpm install
Every tool is a plain devDependency, so there are no overrides or catalog entries to keep in step.
After any bump
pnpm install
pnpm verify
pnpm install regenerates worker-configuration.d.ts via prepare, so a wrangler bump needs nothing extra. Workers Builds deploys on merge to main, so confirm base.<subdomain>.workers.dev and the custom domain still serve.
Node & pnpm
Bump package.json — devEngines, engines.node and packageManager together. CI reads engines.node and packageManager (via pnpm/action-setup). A newer global pnpm doesn't matter: devEngines downloads and runs the pinned one.
Re-syncing a fork with upstream
git remote add upstream https://github.com/amitkaps/base
git fetch upstream
Periodically diff the toolchain files against upstream and cherry-pick fixes:
vite.config.tspackage.jsonscriptspnpm-workspace.yaml.github/workflows/ci.ymlsrc/lib/docs.ts
New gotchas land in upstream lessons.md — worth re-reading after a big bump.