Versioning and migrations
Releases
Section titled “Releases”@bison-lab/payload-blocks releases in step with @bison-lab/ui, @bison-lab/tokens, @bison-lab/tailwind-preset and @bison-lab/create-theme: a release that touches one bumps the others that changed to the same version, and leaves untouched packages alone. @bison-lab/payload-core releases on its own line.
@bison-lab/payload-blocks names @bison-lab/ui as a peer on a caret range of the current major. A minor of ui does not force a major of payload-blocks; only a major does.
A field change is a schema change
Section titled “A field change is a schema change”Every block field is a column in every consuming site. When a release changes one, its changelog says run payload migrate:create. Treat that line as part of the upgrade:
pnpm add @bison-lab/payload-blocks@latestpnpm payload generate:typespnpm payload generate:importmappnpm payload migrate:createThe same holds for noIndexField and the SEO plugin’s own fields in @bison-lab/payload-core.
What stays compatible
Section titled “What stays compatible”- A row saved against a block that has since left the config is dropped by
RenderBlocks, not rendered broken. - A site that forgets
generate:importmapgets a logged miss and an empty field where the custom one should be (the array field, and since the link picker every link row), not a crash; the stock field does not come back until the entry exists. - Row types are structural and optional-and-nullable, so a site’s regenerated types keep assigning to them.