Snapshots all four versioned Docusaurus sections at v6.1.0, cut from master after the version-cutting tooling (#39837) and broken-internal- links fixes (#40102) landed. Captures fresh auto-generated content and freezes data dependencies so the historical snapshot stays correct. Versioning behavior: lastVersion stays at current for every section, so the canonical URLs (/docs/..., /admin-docs/..., /developer-docs/..., /components/...) continue to render content from master. The current version is consistently labeled "Next" with an unreleased banner, and 6.1.0 is a historical pin accessible only via its explicit version segment. Component playground: previously disabled: true in versions-config.json, now enabled and versioned. The plugin block in docusaurus.config.ts was already gated only by the disabled flag, so no other code changes were needed to bring it back online. Snapshot includes: - All MDX content for the four sections. - Auto-gen captured fresh: 74 database pages (engine spec metadata), ~1,800 API reference files (openapi.json), 59 component pages (Storybook stories). - Data imports frozen at cut time into snapshot-local _versioned_data/ dirs: versioned_docs/version-6.1.0/_versioned_data/src/data/databases.json (canonical 80-database diagnostics from master, preserved by the generator's input-hash cache) admin_docs_versioned_docs/version-6.1.0/_versioned_data/data/countries.json admin_docs_versioned_docs/version-6.1.0/_versioned_data/static/feature-flags.json developer_docs_versioned_docs/version-6.1.0/_versioned_data/static/data/components.json - Import paths in deeply-nested files rewritten so they still resolve from one directory deeper inside the snapshot. Verified via full yarn build: exit 0, no broken links surfaced by onBrokenLinks: throw. Anchor warnings present are pre-existing on master (community#superset-community-calendar) and unrelated.
This is the public documentation site for Superset, built using Docusaurus 3. See the Developer Docs for documentation on contributing to documentation.
Version Management
The Superset documentation site uses Docusaurus versioning with four independent sections:
- User Documentation (
/user-docs/) - End-user guides and tutorials - Admin Documentation (
/admin-docs/) - Installation, configuration, and security - Developer Docs (
/developer-docs/) - Developer guides, contributing, and extensions - Component Playground (
/components/) - Interactive component examples (currently disabled)
Each section maintains its own version history and can be versioned independently.
Creating a New Version
To create a new version for any section, use the Docusaurus version command with the appropriate plugin ID or use our automated scripts:
Before You Cut
The cut snapshots whatever's on disk into a frozen historical version, including auto-generated content (database pages from superset/db_engine_specs/, API reference from static/resources/openapi.json, component pages from Storybook stories). The cut script refreshes these via generate:smart before snapshotting, but the databases.json diagnostics file needs special care to capture full detail:
- Canonical release cut: download the
database-diagnosticsartifact from a greenPython-Integrationrun on master, place it atdocs/src/data/databases.json, then run the cut script with--skip-generateto preserve it. This is what the production deploy uses and includes full Flask-context diagnostics (driver versions, feature support matrix, etc.). - Local dev cut: just run the script normally.
generate:smartwill regeneratedatabases.jsonusing your local Flask environment — accurate to whatever drivers/extras you have installed, but typically less complete than the CI artifact. - No Flask available: also fine — the database generator falls back to AST parsing of engine spec files. The MDX pages are still correct; only the diagnostics JSON is leaner.
Also: confirm master CI is green, and that your local checkout matches the SHA you intend to cut from.
Using Automated Scripts (Required)
⚠️ Important: Always use these custom commands instead of the native Docusaurus commands. These scripts ensure that both the Docusaurus versioning system AND the versions-config.json file are updated correctly, AND that auto-generated content is refreshed before snapshotting.
# Main Documentation
yarn version:add:docs 1.2.0
# Admin Docs
yarn version:add:admin_docs 1.2.0
# Developer Docs
yarn version:add:developer_docs 1.2.0
# Component Playground
yarn version:add:components 1.2.0
What the script does:
- Refreshes auto-generated content via
generate:smart(database pages, API reference, component pages). - Calls
yarn docusaurus docs:version(or the per-section equivalent) to snapshot the section. - Freezes any data-file imports (
@site/static/*.json,../../data/*.json) into a snapshot-local_versioned_data/dir so the historical version doesn't silently mutate when the source files change. - Adjusts relative import paths (
../../src/...→../../../src/...) for files now one directory deeper. - Updates
versions-config.jsonand<section>_versions.json.
Do NOT use the native Docusaurus commands directly (yarn docusaurus docs:version), as they will:
- ❌ Create version files but NOT update
versions-config.json - ❌ Skip auto-gen refresh, freezing whatever was on disk
- ❌ Skip data-import freezing, leaving the snapshot pointed at live data
- ❌ Cause versions to not appear in dropdown menus
- ❌ Require manual fixes to synchronize the configuration
Managing Versions
With Automated Scripts
The automated scripts handle all configuration updates automatically. No manual editing required!
Manual Configuration
If creating versions manually, you'll need to:
-
Update
versions-config.json(ordocusaurus.config.tsif not using dynamic config):- Add version to
onlyIncludeVersionsarray - Add version metadata to
versionsobject - Update
lastVersionif needed
- Add version to
-
Files Created by Versioning: When a new version is created, Docusaurus generates:
- Versioned docs folder:
[section]_versioned_docs/version-X.X.X/ - Versioned sidebars:
[section]_versioned_sidebars/version-X.X.X-sidebars.json - Versions list:
[section]_versions.json
Note: For main docs, the prefix is omitted (e.g.,
versioned_docs/instead ofdocs_versioned_docs/) - Versioned docs folder:
-
Important: After adding a version, restart the development server to see changes:
yarn stop yarn start
Removing a Version
Using Automated Scripts (Recommended)
# Main Documentation
yarn version:remove:docs 1.0.0
# Admin Docs
yarn version:remove:admin_docs 1.0.0
# Developer Docs
yarn version:remove:developer_docs 1.0.0
# Component Playground
yarn version:remove:components 1.0.0
Manual Removal
To manually remove a version:
-
Delete the version folder from the appropriate location:
- Main docs:
versioned_docs/version-X.X.X/(no prefix for main) - Admin Docs:
admin_docs_versioned_docs/version-X.X.X/ - Developer Docs:
developer_docs_versioned_docs/version-X.X.X/ - Components:
components_versioned_docs/version-X.X.X/
- Main docs:
-
Delete the version metadata file:
- Main docs:
versioned_sidebars/version-X.X.X-sidebars.json(no prefix) - Admin Docs:
admin_docs_versioned_sidebars/version-X.X.X-sidebars.json - Developer Docs:
developer_docs_versioned_sidebars/version-X.X.X-sidebars.json - Components:
components_versioned_sidebars/version-X.X.X-sidebars.json
- Main docs:
-
Update the versions list file:
- Main docs:
versions.json - Admin Docs:
admin_docs_versions.json - Developer Docs:
developer_docs_versions.json - Components:
components_versions.json
- Main docs:
-
Update configuration:
- If using dynamic config: Update
versions-config.json - If using static config: Update
docusaurus.config.ts
- If using dynamic config: Update
-
Restart the server to see changes
Version Configuration Examples
Main Documentation (default plugin)
docs: {
includeCurrentVersion: true,
lastVersion: 'current', // Makes /docs/ show Next version
onlyIncludeVersions: ['current', '1.1.0', '1.0.0'],
versions: {
current: {
label: 'Next',
path: '', // Empty path for default routing
banner: 'unreleased',
},
'1.1.0': {
label: '1.1.0',
path: '1.1.0',
banner: 'none',
},
},
}
Developer Docs & Components (custom plugins)
{
id: 'developer_docs',
path: 'developer_docs',
routeBasePath: 'developer-docs',
includeCurrentVersion: true,
lastVersion: '1.1.0', // Default version
onlyIncludeVersions: ['current', '1.1.0', '1.0.0'],
versions: {
current: {
label: 'Next',
path: 'next',
banner: 'unreleased',
},
'1.1.0': {
label: '1.1.0',
path: '1.1.0',
banner: 'none',
},
},
}
Best Practices
- Version naming: Use semantic versioning (e.g., 1.0.0, 1.1.0, 2.0.0)
- Version banners: Use
'unreleased'for development versions,'none'for stable releases - Limit displayed versions: Use
onlyIncludeVersionsto show only relevant versions - Test locally: Always test version changes locally before deploying
- Independent versioning: Each section can have different version numbers and release cycles
Troubleshooting
Version Not Showing After Creation
If you accidentally used yarn docusaurus docs:version instead of yarn version:add:
- Problem: The version files were created but
versions-config.jsonwasn't updated - Solution: Either:
- Revert the changes:
git restore versions.json && rm -rf versioned_docs/ versioned_sidebars/ - Then use the correct command:
yarn version:add:docs <version>
- Revert the changes:
For other issues:
- Restart the server: Changes to version configuration require a server restart
- Check config file: Ensure
versions-config.jsonincludes the new version - Verify files exist: Check that versioned docs folder was created
Broken Links in Versioned Documentation
When creating a new version, links in the documentation are preserved as-is. Common issues:
- Cross-section links: Links between sections (e.g., from developer_docs to docs) need to be version-aware
- Absolute vs relative paths: Use relative paths within the same section
- Version-specific URLs: Update hardcoded URLs to use version variables
To fix broken links:
- Use
type: 'doc'withdocIdfor version-aware navigation in navbar - Use relative paths within the same documentation section
- Test all versions after creation to identify broken links