Documentation menu

Browser support

Shipped browser code targets Baseline widely available: features supported across the major browser engines for at least 30 months. The repository uses the Browserslist query baseline widely available; compatibility lint checks JavaScript and CSS. This is a moving feature floor, not a promise to support one permanently fixed browser version.

Custom elements, Shadow DOM, template cloning, constructable stylesheets and declarative shadow roots are part of that floor. Gyral renders with these native primitives. Node 24+ is the repository's server/build target; browser support and server-runtime support are separate questions.

What happens without newer APIs

Native enhancement Baseline behavior
URLPattern A constrained literal/parameter matcher with the same supported patterns
Navigation API Lazy History API implementation, popstate and link capture
command/commandfor Lazy component-scoped command shim
moveBefore() insertBefore(); test focus-sensitive moves in your app
requestIdleCallback() A short timer releases the island
startViewTransition() Ordinary rendering; reduced motion also skips the transition
:state() State enhancement is skipped; keep meaning in markup and ARIA
Popover API Model-driven toggling is skipped; provide an accessible inline alternative where needed
The gyral HTML policy Ordinary string parsing when the API is absent

Gyral never installs a global browser polyfill. Substantial fallbacks are internal modules loaded when needed; small fallbacks stay beside the native call. Capability checks for Node or workers, such as the absence of animation frames, remain even as browser support improves.

Removal dates

These dates follow the web-features 3.35.0 snapshot in ADR 0003, adding 30 months to newly available. They are scheduled review points, not claims that the fallback has already been removed:

Primitive Widely available date
Promise.withResolvers() 2026-09-05
AbortSignal.any() 2026-09-19
AbortSignal.timeout() 2026-10-18
Custom states 2026-11-17
Popover 2027-07-27
URLPattern 2028-03-15
View Transitions 2028-04-14
Invoker commands 2028-06-12
Navigation API 2028-07-13
Trusted Types 2028-08-24

moveBefore() and requestIdleCallback() have no Baseline removal date in that snapshot. The native-first audit records why cancellable and virtual-time timers remain useful even when native timeout signals become widely available.

Your application's features

Feature-detect newer JavaScript APIs and keep a working experience when they are absent. Guard newer CSS with @supports, preserving an accessible baseline layout. Do not make essential labels, errors or interactions depend on a skipped enhancement. Check current Baseline data before choosing a new primitive, and test your actual minimum browser versions.

SSR mounting in @gyral/testing uses setHTMLUnsafe() to reproduce declarative shadow roots, so choose a test browser that supports it. The repository runs real Chromium tests in development and production configurations. Those tests are not evidence that every app flow has also been tested in Firefox or Safari.