v1.21.0
Released to production on November 11, 2026 at 17:40 CST. See every commit in this release on GitHub
New
- Console: open Create site by itself on an empty workspace
- Sites: useSeedDraft keeps a row editor's draft as edits over the live row
- Domains: "Use Aglyn's nameservers" for a registered domain
- Native: the Apple Besigner opens in focus mode with its own back
- Native: the Kotlin Besigner opens in focus mode with its own back
- Console: in the apps the Besigner's own back is the way out
Fixed
- Native: plugin settings screens keep their server check when regenerated
- UI components: Select Option choices render their text on published sites
- Native: an empty Home card leaves no hole in the iPad grid
- Commerce: product import lists each reformatted cell once
- Media library: limit-access confirm says what the usage check found
- Native: plugin editors hold on a cached read and keep what was typed
- Native: the phone AI sheet says which area is on screen
- Native: an iPad window keeps its place across the app switcher
- Native: Android POS Day totals can share its CSV
- Media library: folder tree offers Shared with… like the folder card
- Dependencies: upgrade Next.js to 16.4.6 for seven moderate advisories
- UI components: MdiIcon draws a generated icon object, and its path prop is typechecked
- Domains: connect automatically hears an approval after five minutes
- Plugins: hold first-press saves on an unconfirmed seed in the other plugins
- Commerce: offline cards are read and captured at sync
- Native: iPhone lands on Sites after Delete site
- Plugins: a site's plugin page waits for the install pin before saying where it runs
- Native: setup and entry editors hold on a cached read and keep what was typed
- CRM: hold first-press saves on an unconfirmed seed and replay edits
- Native: a settings save holds on a cached read and keeps what was typed
- Marketplace: what's included reach row follows the Install to choice
- Variables: an unknown {{var:id}} renders empty on a site with no variables
- Commerce: hold first-press saves on an unconfirmed seed and replay edits
- Console: hold core editor saves on an unconfirmed seed and keep edits
- Commerce: cart page starts reading the stored cart while its HTML arrives
- Docs shots: the Data page shots open Team from the list; add the Install card shot
- Domains: nameserver move survives a reload; review findings
- Commerce: cart loads before saying empty, asks ship-to up front
- Console: form saves hold on an unconfirmed seed instead of refusing the first press
- Native: no system bar over the phone's Besigner; tablets keep the title bar
- Console: in the apps the Besigner's back leaves with no loading page
Reverted
- Dependencies: Next.js 16.4.6 back to 16.4.3 while the tenant wire weight is fixed
Documentation
- re-shoot the Install card with its What's included icons
- re-shoot the Install card, import Columns step and export dialog
- re-shoot the Data page and add the Selected sites install shot
- Domains: list Domain Chief for Connect automatically
Behind the scenes
- Console: the scope sweep refuses the stored visibleTo field, not the visibleToHost helper
- limit-access confirm and product import warning ready to merge
- Plugins: first-press holds ready for merge
- Commerce: first-press holds ready for merge
- CRM: type the held filing button in its spec
- Console: first-press holds on core editors ready to merge
- Console: announce refusals ride a failed read now that a cached one holds
- Console: first-press holds and edit replay on core editors
- skip ci
- Console: basic info's shape spec counts the hold's read of fromCache
- Commerce: cart loading and ship-to head
Share this article
We're building the open web platform. Follow along as we ship — and tell us what you need.