v1.0.0-beta.103
Released to production on September 9, 2026 at 15:11 UTC. See every commit in this release on GitHub
New
- Tooling: gate the seven besigner editors against the namespace too
- Tooling: gate the shells against holding the core namespace
Fixed
- Themes: measure the ink a surface filled with the accent-text shade carries
- Sites: defer the core splits by relative path, not by package
- Sites: point the attribution-guard laziness spec at the moved renderer
- Sites: follow the scheme segment in the attribution-guard spec
- Themes: re-point the guards the scheme segment moved
- Shared libraries: escape the apostrophe, and split ink at the luminance that ties
- Themes: resolve the visitor's scheme in the middleware, not the render
Performance
- Console: fetch the help excerpts when a tooltip opens
- Console: let each shell carry the wordmark it draws
- Besigner: name what the editor reads instead of pinning the barrel
- Console: fetch the command palette when it opens
- Console: stop building two Firebase products nothing reads
- Sites: split the legacy collection renderer off the page
- Build: ship a name, not a library, for two browser-only dead ends
- Sites: fetch the attribution guard only where there is attribution
- Console: defer the core namespace so app-utils leaves the shell
- Shared libraries: take computedFn from its own module, not the mobx-utils bundle
- Sites: the 404 boundary defers the renderer it may never use
- Console: the assist panel loads when its gate says yes
- Platform: the screen-link context leaves the resolver that reads it
- Console: the root not-found boundary reaches its chrome lazily
- Console: the global 404 stops shipping a second copy of the chrome
- UI components: the console and besigner wordmarks leave the six-logo module
- Platform: the palette-token readers get their own module
- UI components: the navigation overlay loads when a navigation starts
- Platform: the page's hidden-class rule and rendered alt get their own modules
- Shared libraries: declare which library modules do work at import time
- Console: the report-issue dialog arrives with the first reporter
- Sites: the consent surfaces load when they are drawn
- Sites: the built-in auth forms leave the first-paint bundle
- Sites: the 404 boundary reaches the renderer lazily
- Sites: the error and not-found boundaries stop shipping their screens
Changed
- Console: keep the besigner flag where it is read
- Besigner: take the one escaper for a link's href
- Email: take the one escaper instead of a four-character copy
- Platform: one re-dispatch for every error boundary
Documentation
- Tooling: the published page no longer opens the core barrel
- Platform: say why the author-HTML serializer is not the shared escaper
- Build: what the sideEffects sweep bought, and four levers that did not
Behind the scenes
- Releases: carry the ratchet-row move into the v1.0.0-beta.103 notes
- Tooling: move the color ratchet row with the code it counts
- Performance: re-baseline the tenant page budget, and say the wire figure is stale
- Tooling: raise the Linear ceiling to the newest issue that exists
- Platform: record the front-door canaries in the self-host ratchet
- Dependencies: drop resize-observer-polyfill, which nothing imports
- Platform: follow the tenant markdown renderer to its own module
- Tooling: raise the Linear ceiling to the issue Linear actually holds
- UI components: delete the Pages Router loading layout
- Monitoring: grade the 5xx rate by route, so a cached 200 stops standing in for a render
- UI components: delete nineteen hooks nothing has ever called
- Build checks: gate a promotion on the tenant production smoke, and probe the front door
- Sites: the 404 boundary's fallback may be lazy too
- Platform: drop the FontWeight enum nothing reads
Share this article
We're building the open web platform. Follow along as we ship — and tell us what you need.