ObjectStackObjectStack

v18

The v18 line, in prerelease on npm's `next` tag. It carries ADR-0131 (organization ownership is total, with no NULL `organization_id`) and lands its breaking changes in stages, each with its own migration. `latest` stays on 17.x until the line reaches GA.

Release status: v18 has no GA release yet. The line publishes as 18.0.0-next.N prereleases on npm's next dist-tag. The latest tag stays on the 17.x line, so a plain install keeps resolving 17.x, and a ^17 dependency range never moves to 18. You get a v18 prerelease only by asking for one: @next on every @objectstack/* dependency together, or an exact 18.0.0-next.N. There is no GA date.

The v18 line exists for one decision whose changes do not fit in a 17.x minor: ADR-0131, organization ownership is total — no NULL organization_id; declared metadata stays in code; a row exists only when an organization authored it. Its changes reshape stored data and narrow what the runtime accepts, so the ADR stages them in one major (its D14) instead of spreading them across 17.x minors. While the line is open, every other breaking change that lands on main ships on it too, under the same rules.

How a breaking stage lands on this line

  • Through next before latest. Every major is published to the next dist-tag for at least one RC cycle before latest (ADR-0087 D6). Changesets is in pre mode with the tag next, so every release cut from main is the next 18.0.0-next.N, carrying everything merged since the cut before it.
  • One stage, one changeset, one migration. ADR-0131 lands in stages, in the order the ADR records, and each stage that breaks something says so in its own changeset: what breaks, and how to move from the old shape to the new one. Those changesets become the CHANGELOG.md entries shipped inside each 18.0.0-next.N package, so read the CHANGELOG of every prerelease you move to — moving from one 18.0.0-next.N to the next can break you.
  • Protocol 18 comes with it. PROTOCOL_VERSION is 18.0.0 on main, so a v18 prerelease's handshake admits engines.protocol: '^18' and refuses '^17'. Read Upgrading before you move an app's declared range.
  • GA ends the prerelease. Reaching GA exits pre mode and publishes the line to latest. Curated notes for the line's releases are compiled at release time and are not written yet; until then, the changesets are the record.

On this page