Releases and compatibility
Keep Ridu packages aligned, understand supported environments, and upgrade an application safely.
Ridu uses one version across its Go module, project-local CLI, npm packages, and official plugins. Keep them on the same exact release version. Mixing versions can fail during generation, plugin registration, or startup.
Supported matrix
| Surface | Supported environment |
|---|---|
| Go | Go 1.26 or newer |
| Initializer | Node.js 20 or newer for the launcher alone; generated admin tooling has stricter requirements below. |
| Generated admin | Node.js 20.19+ (20.x), 22.12+ (22.x), or 24+; use 24+ for a new project. |
| Source checkout | Bun 1.4.0 |
| PostgreSQL | PostgreSQL 17.x |
| SQLite | The bundled driver, using a local file on one application host |
| MongoDB | Community 8.2.9, SCRAM-SHA-256, verified TLS, and a writable three-member replica set on Linux x86-64 |
| Browser tests | Chromium |
PostgreSQL-compatible services must provide the PostgreSQL behavior Ridu depends on, including transaction semantics, migration locks, concurrent indexes, and TLS. Test a managed service before using it in production.
MongoDB support does not extend to Atlas, DocumentDB, Cosmos DB, standalone servers, other versions or topologies, or other operating systems and architectures. Follow the supported setup in MongoDB.
Versioning rules
Before v1.0.0, a release may change a public contract. Upgrade one project at a time and read its
release notes before updating. Only the latest pre-1 release is supported.
From v1.0.0, breaking changes to public Go, CLI, REST, SDK, and extension contracts require a major
version. Additions use a minor version and compatible fixes use a patch version.
Contracts fail mismatches early
Ridu checks related versions during generation and startup:
| Contract | What happens when versions do not match |
|---|---|
| Schema manifest | Readers reject an unsupported manifest version. |
| Project command | The CLI stops before reading config from an incompatible application. |
| Migration artifacts | The adapter rejects unsupported or altered migration history. |
| Backend plugins | Registration fails outside the plugin’s supported Ridu range. |
| Admin plugins | Generation fails when the browser package does not match its backend plugin. |
| REST and SDK | Stable envelopes and error codes allow compatible additive responses. |
Fix the package versions and regenerate. Do not copy generated files from another project or bypass plugin checks.
What counts as public
Compatibility covers documented exported Go packages, CLI commands, REST and protocol contracts, published TypeScript packages, generated application contracts, and documented plugin interfaces.
Go internal/ packages, .ridu/ intermediates, unexported symbols, and generated implementation
details are not customization surfaces. Change the executable config and regenerate instead of
editing generated output.
Upgrade a project
Read the release notes, then run the new release’s CLI with upgrade. Running the target version
means the upgrade itself always uses the new release’s rules:
npx @riducms/[email protected] upgrade X.Y.Zbunx @riducms/[email protected] upgrade X.Y.Zpnpm dlx @riducms/[email protected] upgrade X.Y.Zyarn dlx @riducms/[email protected] upgrade X.Y.ZThe command upgrades the project as one unit:
- It sets every
@riducms/*package in the project’spackage.jsonfiles, the official plugins inridu.plugins.json, and thegithub.com/riducms/riduGo module to the release. - It installs the new packages and runs
go mod tidy. - With the newly installed CLI, it runs
ridu generate,ridu agent syncwhen agent guidance is installed, andridu migrate create --name ridu-X-Y-Z. If the release does not change your schema, no migration is created.
Review the changed files and any new migration, then run ridu check,
ridu migrate verify, and your application’s tests. Rehearse the deployment on a recent restored
backup before production.
Pass --no-install to rewrite only the version pins; the command then prints the remaining steps.
It leaves linked packages, such as workspace: or file: dependencies, unchanged and warns when
a go.work file still points the Ridu module at a local checkout.
Never edit an applied migration. Add a forward migration to correct it.
Verify an installation
Check that the project resolves one Ridu version across its tools:
ridu version
go list -m github.com/riducms/riduCompare those versions with the @riducms/* versions in the project’s package files and lockfile.
ridu doctor checks basic prerequisites and structural project settings; it does not compare all
release versions, compile Go config, verify generated contracts, or test database connectivity.
Run ridu generate --check to resolve executable config and detect generated-contract drift, then
ridu check for the project’s Go and frontend checks.
Before production
Before sending traffic to an upgraded application:
- run
ridu migrate verifyagainst restored data; - restore the database and upload storage together and test representative media;
- confirm database transport, credentials, topology, and timeouts;
- monitor
/healthz,/readyz, request errors, tasks, latency, and storage health; - exercise authentication, writes, access-controlled reads, uploads, drafts, and rollback on a canary; and
- record who approves the traffic switch and who can roll it back.
See Production, Security, Migrations, and Troubleshooting for the complete operational paths.