26 Weeks of Front-End: New CSS, JS, and HTML APIs That Shipped in H1 2026
Browser vendors shipped a wave of new primitives in early 2026 that replace JavaScript-heavy workarounds with declarative HTML and CSS. Knowing which ones are ready and which are Chrome-only or broken in practice saves teams from adopting features that look good in a spec but fail in production.
Over the first half of 2026, one front-end developer tracked a new browser capability every week. The log covers CSS additions like `text-decoration-inset`, `text-box`, `corner-shape`, `caret-shape`, `border-shape`, and the `contrast-color()` function. JavaScript entries include `Promise.try()`, `Promise.withResolvers()`, `moveBefore`, the sticky regex `y` flag, `WeakRef`, `JSON.rawJSON`, and the `focusVisible` option on `focus()`. HTML gains such as the `interestfor` attribute for hover-triggered popovers, the `closedBy` attribute on `<dialog>`, and the `command`/`commandfor` pairing with `ToggleEvent` also appear.
Each entry is a short, practical report: what the API does, a code snippet, a compatibility note, and a link to a longer article with a live demo. Several items push back on initial assumptions. The `text-box` property, for instance, failed to solve inline vertical alignment in practice, and `WeakRef` comes with a strong caution against casual use despite its memory-optimization appeal.
The series ends by linking to a companion piece arguing that foundational knowledge still matters even when AI writes most of the code, because understanding the platform determines whether the output is correct.
Several CSS properties that sound like they solve classic pain points—`text-box` for vertical centering, `prefers-color-scheme` for dark mode—turn out to be insufficient or misaligned with real application needs once tested.
The `moveBefore` API is a quiet but significant shift for Web Components: it acknowledges that DOM move semantics matter for stateful components and introduces a new lifecycle hook to match.
`WeakRef` is officially discouraged for general use because garbage-collection timing is non-deterministic; the spec provides it for caches and other niche cases where stale data is acceptable.
`JSON.rawJSON` solves a real problem—large-ID precision loss—that has forced teams into string-based workarounds for years, yet it remains largely unknown.
The `interestfor` + `command`/`commandfor` pattern signals a broader HTML trend: interactivity that previously required JavaScript is moving into declarative attributes, reducing framework dependency for common UI patterns.