Baseline coverage skews heavily toward one half of the model. A feature lands in all three engines, gets written up as Newly Available, and the posts appear within days. The second milestone — Widely Available, roughly 30 months later — arrives without announcement, and it is the one that actually changes what you can ship without a fallback.

The first half of 2026 was unusually significant on that second tier. Several features that have been in everyday use for years formally stopped needing hedging.

The Headline: :has() and Nesting Are Widely Available

June 2026 moved both the :has() pseudo-class and the & nesting selector to Baseline Widely Available.

Neither is news as a capability. Both have been usable across engines since 2023, and plenty of production stylesheets already assume them. What changed is the support floor: Widely Available means the feature has been interoperable long enough that the browsers lacking it are outside the range any mainstream project targets. The @supports selector(:has(a)) guard, the PostCSS nesting plugin retained “just in case” — those can go.

June’s Widely Available list ran to sixteen entries and included several more worth noting:

  • mask — the shorthand, not the prefixed WebKit-era subset
  • :dir() — direction-based selection for bidirectional layouts
  • pow() — alongside the rest of the CSS math functions
  • <easing-function> as a formal data type
  • counter-set and the cap length unit
  • @media (scripting) — styling for the scripting-unavailable case without JavaScript detection

March Was the Other Big Month

March moved eleven features to Widely Available, and the CSS entries in that batch have a common theme — they are the ones people kept postponing:

subgrid is the significant one. Nested grids inheriting their parent’s tracks is the piece that made CSS Grid fully compositional, and it was the last major grid capability with a support caveat attached.

hyphens and hyphenate-character close out real typographic control for justified and narrow-column text. image-set() gives resolution-switching in CSS rather than markup. contain-intrinsic-size makes content-visibility usable without layout jank. @counter-style covers custom list numbering. Overflow media queries (overflow-block, overflow-inline) and the update media query address paged and low-refresh-rate output — the media features that matter for print and e-ink, which most projects skipped precisely because support was uneven.

May added clip-path, :user-invalid, and the lh and rlh line-height units to the same tier. :user-invalid is the one that deserves adoption: it applies only after the user has interacted with a field, which is the behavior most form validation styling was trying to approximate with JavaScript-managed classes.

April Cleared Out Some Long-Standing Guards

April’s Widely Available batch is small but hits things people still polyfill.

The <search> element — a semantic wrapper for search and filtering controls that carries an implicit ARIA search landmark role — reached Widely Available, which means the role="search" attribute you have been adding to a <div> or <form> is now redundant markup rather than a necessary fallback.

ARIA attribute reflection landed in the same batch. Setting element.ariaExpanded = 'true' instead of element.setAttribute('aria-expanded', 'true') is now safe across the board. It is a small ergonomic win, but it removes a category of helper function that exists in most component libraries.

Also Widely Available in April, outside CSS: WebAuthn public-key access via getPublicKey() and getPublicKeyAlgorithm() on AuthenticatorAttestationResponse, and String.prototype.isWellFormed() / toWellFormed() for detecting and repairing lone surrogates in UTF-16 strings.

What Arrived as Newly Available

The new-arrival side of the first half was steady rather than dramatic.

January brought :active-view-transition — Firefox 147 completing a set Chrome and Safari had held since 2024 — plus four root-relative units: rcap, rch, rex, and ric. Those round out the root-relative family alongside rem and rlh, so a design system can size against the root element’s cap height or character width rather than only its font size. Also in January, outside CSS: the Navigation API and JavaScript modules in service workers.

February was a single feature: shape(), which finally allows clip-paths and offset-paths expressed in CSS units, percentages, and calc() instead of an opaque SVG path string.

March added font-family: math for MathML rendering, and two text-indent keywords — each-line and hanging — that have been in the spec long enough to be widely assumed and were not actually interoperable until now.

April brought contrast-color(), the browser-computed black-or-white companion color, with the mid-tone caveat that limits where it belongs.

May was the strongest month for new CSS: container style queries, the :open pseudo-class for <dialog> and <details>, image-rendering for controlling scaling algorithm, and text-decoration-skip-ink: all.

Container style queries deserve their own note. Querying a container’s custom property values — rather than its dimensions — is what makes component variants expressible without variant classes. It also became, in May, the more portable way to branch on a computed value than the newer if() function.

June added exactly one: field-sizing, which lets form controls size to their content. A textarea that grows as you type, with no resize observer.

How to Actually Use the Two Tiers

The practical distinction is straightforward once separated:

Widely Available means remove the fallback. No @supports guard, no polyfill, no PostCSS transform. If a feature reached this tier and your stylesheet still carries scaffolding for it, that scaffolding is now dead weight — and dead weight in CSS has a habit of outliving the person who added it.

Newly Available means adopt with judgment. All three engines ship it in current versions, but users on older devices will not have it. For progressive properties where absence degrades gracefully — field-sizing, text-decoration-skip-ink, image-rendering — ship it now and let the fallback be the previous behavior. For anything load-bearing on layout or legibility, check your own analytics rather than a general rule.

The single most useful audit this quarter is unglamorous: search your codebase for @supports blocks and build-time plugins, and check each guarded feature against the Widely Available list. @scope is not there yet and its guards should stay. :has(), nesting, subgrid, mask, clip-path, hyphens, and image-set() are — and most projects are still carrying code that assumes otherwise.