<MAJOR>.<MINOR>.<PATCH> of the app matches the version this docs site documents. The shipped version today is 0.1.2, and the docs site is single-version — it always reflects main. Nothing has been archived yet.
This page is the recipe for the first time that changes. The v1.1 / v1.2 version numbers in the examples below are illustrative placeholders for previous minor and new minor; substitute the real pair when you cut one.
This page is for the docs maintainer cutting a new version, not the casual contributor. Day-to-day editing flows through CONTRIBUTING.md.
Versioning strategy
Three rules:- One docs version per app major.minor. Major version
2.xand minor1.2each get their own version slot. Patch versions (1.1.1,1.1.2, …) ride along on the parent minor’s docs — patches don’t change docs by definition. - The default version is always the latest. Visitors land on the most-recent version unless they pick an older one from the version switcher.
- Old versions are read-only. Once
v1.1is archived becausev1.2shipped, we don’t backport docs fixes tov1.1unless the fix addresses behaviour specific to the v1.1 codepath. Typos and broken links on archived versions stay there.
When to cut a new version
Cut a new docs version when:- The app ships a new minor (
v1.1→v1.2) and something in the docs is now wrong for the previous minor. If the new minor only adds features without breaking previous behaviour, cutting a new version is optional — current docs cover both. - A breaking config change lands. If
AUDITOR_ADMIN_TOKENsemantics change, the previous version’s docs need to stay accurate for the people on the previous release. - A breaking API change lands. Same reason — integrators on the old API need the old reference.
- Patch releases.
- Doc-only improvements.
- Changes that are strictly additive (a new feature, a new endpoint).
Adding a version in Mintlify
Mintlify supports per-version navigation vianavigation.versions. The current docs.json uses the simpler navigation.tabs shape — adding a second version means migrating into the versions array.
1
Create the archive folder
Copy every page that should be frozen for the previous version into a top-level folder named after that version:Inside
v1.1/, leave the content alone — it’s a snapshot.2
Migrate docs.json into the versions shape
navigation.versions has more than one entry.3
Add a Note callout to archived pages
At the top of each Use a small script rather than editing each file by hand:
v1.1/*.mdx page, add:4
Run npm run check
The smoke check follows links across all versions. If any cross-version reference is broken, fix it now — old versions linking to new content is fine, new versions linking back into archived versions is usually a bug.
5
Update CONTRIBUTING.md
Add a Don’t edit
v1.1/ line to the contributing guide so future contributors don’t try to update archived pages.Removing an old version
We don’t remove old versions — visitors with bookmarks to/v1.1/configuration should still land on real content, even if it’s stale. Disk cost is negligible (a few MB per version).
The exception is if a version is misleading in a way that hurts users — e.g., it documents a security pattern that’s since been found insecure. In that case:
- Add a
<Warning>to every page in the affected version pointing at the current version. - Update the version’s
changelog.mdxto call out the issue. - Don’t delete; deletion breaks search-engine results that lead to the stale page.
URL shape
Default version:/configuration, /develop/architecture, etc.
Archived version: /v1.1/configuration, /v1.1/develop/architecture.
The version dropdown in the topbar handles switching automatically — readers don’t have to remember the URL prefix.
Search across versions
Mintlify’s built-in search indexes only the active version by default. To index all versions (so a search for AUDITOR_ADMIN_TOKEN finds matches inv1.1 and v1.2), add to docs.json:
Sync-changelog implications
The changelog automation writes tochangelog.mdx (the default-version path). After cutting v1.1 as an archived version:
- Archived
v1.1/changelog.mdxshould be frozen in time — don’t let the sync workflow overwrite it. The workflow already only writes to the top-level path, so this is automatic. - The current
changelog.mdxcontinues to receive new release entries.