- Renamed web-authn attrs
- Command-style events became native commands (2026-09-13):
provider-fetch-trigger→--fetch;super-form-trigger/web-authn-trigger→--submit;content-drawer-open/-close/-toggle→--open/--close/--toggle(per-open props from the invoker'sdata-*, notdetail);content-carousel-next/-back→--next/--back;include-content-reload/spa-route-reload/quark-sheet-reload→--reload;provider-geolocation-request/provider-orientation-request→--request;data-table-export→--export(options asdata-file-type/data-file-name/data-fullon the invoker);data-table-filterremoved — writefilter-value/filter-casing. Invoke with<button command="--verb" commandfor="id">,<event-handler command-name="--verb" target-ref="…">,<dismiss-watcher command-name="--close">, ornew CommandEvent(). content:stopped awaiting promises from module functions (2026-09-28): return a value or a node; for work that finishes later seeAsynchronous work handle:names the listener (2026-09-28):event/targetare not in scope inside ahandle:call, which runs on every event and returns the listener; the listener receives the eventmatch-nestedmatches its own path too (2026-09-29):route-href="/users" match-nestedis active at/users, so a separate route for that path renders beside it and a 404 fallback stays off there- A reload reports no move (2026-09-29): route data has
move: nullafter a reload (was the last move before it), as on any page load that is not back / forward; nospa-manager-<move>event fires and the saved scroll offset is restored - The outermost
spa-managerowns scroll (2026-09-29): the browser's own scroll restoration is off while it is connected; aspa-routewithout a manager no longer scrolls, andspa-route.setScroll()is gone - Scroll resets only when a route rendered (2026-09-29): a push / replace that renders nothing (a param change on a
reuseroute) keeps its position, and a#fragmenttarget wins over the reset - One View Transition per navigation (2026-09-29): nested managers join the outermost manager's; only that one fires
spa-manager-will-transition/spa-manager-transitionand carriesis-transitioning spa-manager-will-transitionandspa-manager-renderedalso fire without a View Transition (2026-09-29): reduced motion, no API,no-transition, first paint.preventDefault()onspa-manager-will-transitionholds the update, the first paint included, untilupdateRoutes(true)is called (updateRoutes()runs it without a View Transition); a nested manager'sspa-manager-rendereddoes not bubble- An update that only changes provisions runs no View Transition (2026-09-29): a
same-route="reuse"param change no longer animates - A query change provisions the route again (2026-09-29):
spa-route-provisionfires, the provision carriesquery, and asame-route="refresh"route renders again - A closed
content-drawerisvisibility: hiddenafter its slide-out (2026-09-29): a customtransitionon it must keepvisibility 0s <duration>; a closed drawer shown in the layout needsvisibility: visible - Only an
.absolutecontent-drawerstyles its parent (2026-09-29):position: relative; overflow: clip(was every drawer, withoverflow: hidden) - A failed request logs one line (2026-09-29): an error status logs a warning, which the default log level hides; a network or parse failure logs an error
- A template or sheet URL that answers with an error status gives
is-errorand paints nothing (2026-09-29): the error page is no longer rendered as content keycode-filterholding only spaces matches no key (2026-09-29): writespacefor the space barhas-renderedwaits for the first render (2026-09-29):spa-managersets it once the first update with a render has settled: rendered, failed or hitrender-timeout(was when that update started), so a loading shell hidden on it stays until thenparamsholds placeholders and named groups only (2026-09-29): a capture group in a path pattern no longer shifts the names (/(a|b)/:idgivesparams.idits own segment), and a placeholder that did not match is left out (was the string"undefined")- A template URL request outlives the element that started it (2026-09-29): an element that deactivates, reloads, disconnects or changes
template-refmid-load stops waiting; the request completes and fills the cache, and other elements on that URL finish loading (were leftis-loading) - The internal
content-carouselpropautoPlayIntervalIdis now_autoPlayIntervalId(2026-09-29): pause auto-play withauto-play-stopped is-fallbackdecides from the path (2026-09-30): it is on only when no other route in itsspa-managermatches the current path; without a manager it now checks its document (or shadow root) instead of always activating, and another fallback, its own layout or a route inside its template no longer hold it offspa-managerkeeps the fallback title indefault-title(2026-09-30): the attribute appears on the element once a route retitles the page, and may be authored; the internal_defaultTitleprop is gonerender-timeoutshows a route still waiting for itsready-onevent (2026-09-30): when it settles an update,delaying-readyis removed from that route and its ready waiters are released (the route stayed hidden until the event fired)- A first mount into a
host-refselector no longer clears the host (2026-09-30): what the host already holds stays until the first render replaces it, and nodid-unrenderfires for it - A rule no longer rewrites an attribute that already reads the same (2026-09-30): values are compared as written, so
data-n: 0;overdata-n="0"writes nothing: no mutation record, noattributeChangedCallback - A
preserverun no longer uses up@warn/@error(2026-09-30): the one report per element is left for a run with a value - A property set before upgrade is kept (2026-09-30): a declared Neutron prop assigned before the element's definition loaded is applied at upgrade (was dropped)
- Element authors (2026-09-30):
replaceNonTemplateChildrenfrom kit-utils is typedboolean | "adopted", and an override ofisResponsibleForReadygets two more callers to answertruefor:"adopted"(prerendered content kept) and, on a route,"render-timeout" scopeQueriesToDocumentis gone from@excom/nucleus-dom(2026-10-01):installShims()covers what it did; if you installed it on its own, callsupportSelectors(window)