- Existing unversioned routes and the older private
/v1/authand/v1/projectsroutes remain registered. - Embedded button script URLs and legacy slugs stay valid.
- Existing records receive UUIDs without changing primary keys.
- Existing lists default to
content_kind: listing. - Existing subscriber rows are retained; programmatic subscriptions add confirmation metadata.
- Existing browser form submissions and integrations are unchanged; verified agent form requests use a separate table, inbox route, and feature flag.
button.contact/{slug}remains available when a custom domain is attached.- New public and protocol routes are ordered before legacy catch-all rendering.
Backwards compatibility
See how API-first UUIDs, feature flags, and additive tables let existing buttons, forms, lists, pages, embed scripts, and custom domains keep working.
The pivot is additive: