Web Platform Technologies
The modern web platform has expanded dramatically since 2020, with dozens of new JavaScript, CSS, and API features reaching cross-browser stability. This reference catalogs 108 features across five categories with exact browser version numbers, baseline status, and official documentation links — current as of early 2025 (with some data extending into early 2026 where available). Features range from universally deployed standards like Optional chaining to bleeding-edge proposals like TC39 Pattern Matching.
The Web Platform Baseline initiative (led by the W3C WebDX Community Group) classifies feature availability into clear tiers that help developers make shipping decisions:
- Widely Available: Supported in all core browsers (Chrome, Firefox, Safari) for 30+ months. Safe to use without fallbacks for the vast majority of users.
- Newly Available: Supported in the current stable release of all core browsers, but for less than 30 months. Usable in production with awareness that some users on older versions may lack support.
- Limited Availability: Supported in one or two core browsers but not all three. Requires fallbacks, polyfills, or progressive enhancement.
- Not Baseline: No browser has shipped the feature to stable, or the feature is still a proposal/draft. Not suitable for production without transpilation or polyfills.
The JavaScript ecosystem has matured considerably, with ES2020–ES2025 delivering features that eliminate common pain points. Most ES2020–ES2022 features are now Widely Available, while ES2024–ES2025 additions like Promise.withResolvers() and Iterator Helpers are crossing into Newly Available. Two major proposals — Temporal and Decorators — remain the notable gaps.
| Feature | Description | Chrome | Firefox | Safari | Baseline | Docs |
|---|---|---|---|---|---|---|
| Proxy API | Intercepts and redefines fundamental object operations (get, set, apply, etc.) | 49 (2016) | 18 (2013) | 10 (2016) | Widely Available | MDN |
| Reflect API | Static methods mirroring Proxy traps for interceptable operations | 49 (2016) | 42 (2015) | 10 (2016) | Widely Available | MDN |
| Temporal | Modern immutable date/time API replacing the problematic Date object (TC39 Stage 3) |
144 (Jan 2026) | 139 (May 2025) | Not yet shipped | Not Baseline | MDN · TC39 |
| WeakRef & FinalizationRegistry | Weak references and GC cleanup callbacks without preventing garbage collection | 84 (2020) | 79 (2020) | 14.1 (2021) | Widely Available | MDN |
Logical assignment (&&= ||= ??=) |
Combines logical operators with assignment — assigns only when condition met | 85 (2020) | 79 (2020) | 14 (2020) | Widely Available | MDN |
Numeric separators (1_000) |
Underscores as visual separators in numeric literals for readability | 75 (2019) | 70 (2019) | 13 (2019) | Widely Available | MDN |
| Array.prototype.at() | Negative-index-capable element access (arr.at(-1) → last element) |
92 (2021) | 90 (2021) | 15.4 (2022) | Widely Available | MDN |
| Object.hasOwn() | Safe, ergonomic replacement for hasOwnProperty.call() |
93 (2021) | 92 (2021) | 15.4 (2022) | Widely Available | MDN |
| structuredClone() | Deep-copies values including circular refs, Date, Map, Set, ArrayBuffer | 98 (2022) | 94 (2021) | 15.4 (2022) | Widely Available | MDN |
| Promise.allSettled() | Resolves when all promises settle (fulfilled or rejected); never short-circuits | 76 (2019) | 71 (2019) | 13 (2019) | Widely Available | MDN |
| Promise.any() | Fulfills with first successful promise; rejects only if all reject (AggregateError) | 85 (2020) | 79 (2020) | 14 (2020) | Widely Available | MDN |
| Promise.withResolvers() | Returns { promise, resolve, reject } without executor boilerplate (ES2024) |
119 (Nov 2023) | 121 (Dec 2023) | 17.4 (Mar 2024) | Newly Available | MDN |
| Error cause | new Error("msg", { cause }) enables error chaining |
93 (2021) | 91 (2021) | 15 (2021) | Widely Available | MDN |
Import attributes (with) |
Attach metadata to imports (e.g., type: 'json'); replaces deprecated assert syntax |
123 (Mar 2024) | 138 (Apr 2025) | 17.2 (Dec 2023) | Newly Available | MDN · TC39 |
| Top-level await | Use await at ES module top level without wrapping in async function |
89 (2021) | 89 (2021) | 15 (2021) | Widely Available | MDN |
Private class fields (#) |
Language-enforced private properties and methods using # prefix |
74 (2019) | 90 (2021) | 14.1 (2021) | Widely Available | MDN |
| Object.groupBy() / Map.groupBy() | Groups iterable elements by callback-returned keys into object or Map (ES2024) | 117 (Sep 2023) | 119 (Nov 2023) | 17.4 (Mar 2024) | Newly Available | MDN |
| Iterator helpers | Lazy .map(), .filter(), .take(), .drop(), .flatMap() etc. on iterators (ES2025) |
122 (Feb 2024) | 131 (Oct 2024) | 18.4 (Mar 2025) | Newly Available | MDN · TC39 |
| Pattern matching | Declarative match expression with structural patterns (TC39 Stage 2) |
❌ | ❌ | ❌ | Not Baseline | TC39 |
| Decorators | @decorator syntax for wrapping class members (TC39 Stage 3 since 2022) |
❌ | ❌ | ❌ | Not Baseline | TC39 |
| Array.fromAsync() | Async counterpart to Array.from() — creates array from async iterable |
121 (Jan 2024) | 115 (Jul 2023) | 16.4 (Mar 2023) | Newly Available | MDN |
| String.prototype.replaceAll() | Replaces all matches of a string pattern (not just first) | 85 (2020) | 77 (2020) | 13.1 (2020) | Widely Available | MDN |
| globalThis | Standard cross-environment global object access (window/global/self) | 71 (2018) | 65 (2019) | 12.1 (2019) | Widely Available | MDN |
Nullish coalescing (??) |
Returns right operand only when left is null/undefined (not other falsy values) |
80 (2020) | 72 (2020) | 13.1 (2020) | Widely Available | MDN |
Optional chaining (?.) |
Short-circuits to undefined instead of throwing on null/undefined references |
80 (2020) | 74 (2020) | 13.1 (2020) | Widely Available | MDN |
Temporal is the most significant in-progress feature — Firefox 139 and Chrome 144 have shipped it, but Safari has not yet, meaning it cannot reach Baseline until Safari ships (likely 2026). Decorators are in a stalemate: Stage 3 since March 2022, but no browser wants to ship first, leaving the timeline uncertain (likely 2026+). Pattern Matching remains at Stage 2 with no browser implementations and an unclear multi-year timeline. Both Decorators and Pattern Matching remain usable via Babel/TypeScript transpilation.
CSS has undergone a renaissance. Features like Container Queries, :has(), and CSS Nesting — long-requested by developers — have all shipped cross-browser. The color ecosystem expanded massively with oklch, color-mix(), and relative colors. The frontier now moves toward anchor positioning, scroll-driven animations, and view transitions.
| Feature | Description | Chrome | Firefox | Safari | Baseline | Docs |
|---|---|---|---|---|---|---|
Container Queries (@container) |
Component-level responsive design based on container size, not viewport | 106 (Sep 2022) | 110 (Feb 2023) | 16.0 (Sep 2022) | Widely Available | MDN · W3C |
| Container Query Units (cqi, cqb, etc.) | Length units relative to query container dimensions | 105 (Aug 2022) | 110 (Feb 2023) | 16.0 (Sep 2022) | Widely Available | MDN |
Cascade Layers (@layer) |
Explicit author-controlled cascade layers before specificity applies | 99 (Mar 2022) | 97 (Feb 2022) | 15.4 (Mar 2022) | Widely Available | MDN · W3C |
| CSS Nesting (native) | Nest CSS rules inside other rules like Sass/SCSS; relaxed syntax (no & required) from late 2023 |
120 (Dec 2023) | 117 (Aug 2023) | 17.2 (Dec 2023) | Newly Available | MDN · W3C |
| :has() pseudo-class | "Parent selector" — select elements based on descendants or siblings | 105 (Sep 2022) | 121 (Dec 2023) | 15.4 (Mar 2022) | Newly Available | MDN · W3C |
| CSS Subgrid | Nested grid inherits parent grid track definitions for cross-component alignment | 117 (Sep 2023) | 71 (Dec 2019) | 16.0 (Sep 2022) | Widely Available | MDN · W3C |
| CSS Grid masonry | Native Pinterest-style masonry via grid-template-rows: masonry |
❌ | Flag only (77+) | ❌ | Not Baseline | MDN · ED |
| Scroll-driven animations | Link CSS animations to scroll position or element viewport visibility | 115 (Jul 2023) | Flag only | ❌ | Limited | MDN · W3C |
| View Transitions API | Smooth animated transitions between DOM states or page navigations | 111 (Mar 2023) | 144 (Oct 2025) | 18.0 (Sep 2024) | Newly Available (same-doc) | MDN · W3C |
| CSS @scope | Scope styles to DOM subtree with upper/lower boundaries without Shadow DOM | 118 (Oct 2023) | 146 (May 2025) | 17.4 (Mar 2024) | Newly Available | MDN · W3C |
| color-mix() | Mix two colors in any color space by specified percentages | 111 (Mar 2023) | 113 (May 2023) | 16.2 (Dec 2022) | Widely Available | MDN · W3C |
| CSS Color Level 4 (oklch, lab, lch) | Perceptually uniform color spaces and wide-gamut color() function |
111 (Mar 2023) | 113 (May 2023) | 15.4 (Mar 2022) | Widely Available | MDN · W3C |
| CSS relative colors | Define colors relative to existing ones using from keyword for dynamic manipulation |
119 (Nov 2023) | 128 (Jul 2024) | 16.4 (Mar 2023) | Newly Available | MDN · W3C |
| CSS anchor positioning | Position elements relative to named anchors with automatic fallback positions | 125 (May 2024) | 147 (Mar 2026) | 26.0 (late 2025) | Newly Available (~2026) | MDN · W3C |
| @starting-style | Define entry animation starting values for elements transitioning from display: none |
117 (Sep 2023) | 129 (Aug 2024) | 17.5 (Jun 2024) | Newly Available | MDN |
| text-wrap: balance | Distributes text evenly across lines for headings and short text blocks | 114 (May 2023) | 121 (Dec 2023) | 17.5 (Jun 2024) | Newly Available | MDN · W3C |
| text-wrap: pretty | Optimizes paragraph typography to minimize orphans | 117 (Sep 2023) | ❌ | 26+ (late 2025) | Limited | MDN |
| font-size-adjust | Normalizes apparent text size across different fonts by scaling to consistent metric | 127 (Jul 2024) | 118 (Oct 2023) | 17.0 (Sep 2023) | Newly Available | MDN · W3C |
| Math: clamp(), min(), max() | Dynamic CSS calculations — clamping, comparison without JavaScript | 79 (Dec 2019) | 75 (Apr 2020) | 13.1 (Mar 2020) | Widely Available | MDN · W3C |
| Math: round(), mod(), rem(), abs(), sign() | Stepped-value and sign functions for precise CSS calculations | 125 (May 2024) | 118 (Oct 2023) | 15.4 (Mar 2022) | Newly Available | MDN |
| Logical properties (margin-inline, etc.) | Flow-relative properties that adapt to writing mode and text direction | 87 (Nov 2020) | 66 (Mar 2019) | 14.1 (Apr 2021) | Widely Available | MDN · W3C |
| :is(), :where(), :not() | Forgiving selector lists with controlled specificity (:where() = zero specificity) |
88 (Jan 2021) | 78 (Jun 2020) | 14 (Sep 2020) | Widely Available | MDN :is() · MDN :where() |
CSS custom properties (var()) |
Reusable CSS variables with --name declarations and var() references |
49 (Mar 2016) | 31 (Jul 2014) | 9.1 (Mar 2016) | Widely Available | MDN · W3C |
| Popover API | Declarative popover overlays with light dismiss, top-layer, and accessibility built in | 114 (May 2023) | 125 (Apr 2024) | 17.0 (Sep 2023) | Newly Available | MDN · WHATWG |
| Media query range syntax | Mathematical comparison operators (width >= 768px) instead of min-/max- prefixes |
104 (Aug 2022) | 63 (Oct 2018) | 16.4 (Mar 2023) | Widely Available | MDN · W3C |
CSS Grid masonry remains in active spec debate — Chrome/Google is pursuing an alternative "CSS Grid Lanes" approach announced in January 2026, while Mozilla favors the grid-template-rows: masonry syntax. No timeline for resolution. Scroll-driven animations are Chromium-only in stable but are an Interop 2026 focus area, targeting cross-browser parity in 2026–2027. Anchor positioning is the newest major layout primitive, achieving cross-browser support in early 2026 and part of Interop 2026.
The Web Platform API surface is vast, spanning decades-old foundations like Geolocation and Web Workers alongside cutting-edge proposals. A significant divide exists: many performance and device APIs remain Chromium-only (Navigation API, Web Bluetooth, Web NFC, Long Tasks API, Reporting API), while core observer and worker APIs enjoy universal support.
| Feature | Description | Chrome | Firefox | Safari | Baseline | Docs |
|---|---|---|---|---|---|---|
| Geolocation API | Request user's geographic coordinates via navigator.geolocation |
5 (2010) | 3.5 (2009) | 5 (2010) | Widely Available | MDN · W3C |
| Web Workers | Run JavaScript in background threads without blocking the UI | 4 (2010) | 3.5 (2009) | 4 (2009) | Widely Available | MDN |
| Service Workers | Background script enabling offline, push notifications, and request interception for PWAs | 40 (2015) | 44 (2016) | 11.1 (2018) | Widely Available | MDN |
| Web Components (CE v1, Shadow DOM, Templates) | Suite of APIs for reusable, encapsulated custom HTML elements | 54 (2016) | 63 (2018) | 10.1 (2017) | Widely Available | MDN |
| Web Animations API | JavaScript interface for creating/controlling animations programmatically | 84 (2020) | 75 (2020) | 13.1 (2020) | Widely Available | MDN |
| Web Speech API | Speech recognition (STT) and synthesis (TTS) in browsers | 33 (2014) | 49 (2016, TTS only) | 14.1 (2021) | Limited (recognition) | MDN |
| ResizeObserver | Observe element dimension changes for component-level responsiveness | 64 (2018) | 69 (2019) | 13.1 (2020) | Widely Available | MDN |
| IntersectionObserver | Asynchronously track element visibility relative to viewport or ancestor | 58 (2017) | 55 (2017) | 12.1 (2019) | Widely Available | MDN |
| MutationObserver | Watch DOM tree changes (attributes, children, subtree) | 26 (2013) | 14 (2012) | 7 (2013) | Widely Available | MDN |
| BroadcastChannel API | Simple cross-tab/window same-origin messaging | 54 (2016) | 38 (2015) | 15.4 (2022) | Widely Available | MDN |
| Navigation API | Modern SPA routing API replacing History API with navigation interception | 102 (2022) | ❌ | ❌ | Limited (Chromium-only) | MDN |
| Screen Orientation API | Read and lock screen orientation (landscape/portrait) | 38 (2014) | 43 (2016) | 16.4 (2023) | Newly Available | MDN |
| Battery Status API | Read device battery level and charging status | 38 (2014) | ❌ Removed | ❌ | Limited (Chromium-only) | MDN |
| Clipboard API (async) | Promise-based read/write access to the system clipboard | 66 (2018) | 125 (Apr 2024) | 13.1 (2020) | Newly Available | MDN |
| File System Access API | Read/write local files and directories via picker dialogs | 86 (2020) | ❌ | ❌ | Limited (Chromium-only) | MDN |
| Web Share API | Invoke native platform share sheet for text, URLs, and files | 89 (2021) | ❌ Desktop | 12.1 (2019) | Limited | MDN |
| Web Bluetooth | Communicate with BLE devices via GATT protocol | 56 (2017) | ❌ | ❌ | Limited (Chromium-only) | MDN |
| Web NFC | Read/write NFC (NDEF) tags on Android devices | 89 Android (2021) | ❌ | ❌ | Limited (Chrome Android) | MDN |
| Web Locks API | Named async locks for coordinating shared resource access across tabs/workers | 69 (2018) | 96 (2022) | 15.4 (2022) | Widely Available | MDN |
Scheduler API (scheduler.postTask) |
Priority-based main-thread task scheduling (user-blocking/visible/background) | 94 (2021) | 101 (2022) | ❌ | Limited (no Safari) | MDN |
| Compression Streams API | Native gzip/deflate compression and decompression via Streams | 80 (2020) | 113 (2023) | 16.4 (2023) | Newly Available | MDN |
| Encoding API (TextEncoder/Decoder) | Encode strings to UTF-8 bytes and decode bytes to strings | 38 (2014) | 19 (2013) | 10.1 (2017) | Widely Available | MDN |
| Sanitizer API | Built-in XSS-safe HTML insertion via setHTML() replacing DOMPurify |
144 (2025) | 148 (2025) | ❌ | Limited (very new) | MDN |
| Trusted Types API | Enforce typed sanitized objects for dangerous DOM sinks to prevent XSS via CSP | 83 (2020) | ❌ Nightly only | 16.4 (2023) | Limited (no Firefox) | MDN |
| PerformanceObserver | Streaming callback API to observe performance entries (navigation, resource, paint, etc.) | 52 (2016) | 57 (2017) | 11 (2017) | Widely Available (core) | MDN |
| Reporting API | Receive browser reports on interventions, deprecations, CSP violations | 96 (2021) | ❌ | ❌ | Limited (Chromium-only) | MDN |
| User Timing API | Custom performance marks and measures on the performance timeline | 25 (2013) | 38 (2015) | 11 (2017) | Widely Available | MDN |
| Paint Timing API (FCP) | Reports first-paint and first-contentful-paint timing metrics | 60 (2017) | 84 (2020) | 14.1 (2021) | Widely Available | MDN |
| Long Tasks API | Detects main-thread tasks blocking >50ms; being superseded by Long Animation Frames | 58 (2017) | ❌ | ❌ | Limited (Chromium-only) | MDN |
Several APIs deserve particular attention. Battery Status API was removed from Firefox in 2017 and never implemented in Safari due to privacy/fingerprinting concerns — the W3C has deprecated the spec. Web Bluetooth and Web NFC face explicit opposition from Mozilla (labeled "Harmful") and no Safari implementation plans. The Navigation API for modern SPA routing remains Chromium-only with no cross-browser timeline. Conversely, the Sanitizer API is rapidly shipping (Chrome 144, Firefox 148 in 2025) and Safari has a positive standards position, suggesting it could reach Baseline in 2026.
Foundational networking APIs like Fetch, WebSockets, and Server-Sent Events are long-established. The recent action is in storage: OPFS (Origin Private File System) has become the go-to high-performance storage layer for WASM databases, while the CookieStore API just achieved cross-browser support in 2025. Several background sync APIs remain Chromium-only with no cross-browser adoption path.
| Feature | Description | Chrome | Firefox | Safari | Baseline | Docs |
|---|---|---|---|---|---|---|
| Fetch API | Modern Promise-based network request interface replacing XMLHttpRequest | 42 (2015) | 39 (2015) | 10.1 (2017) | Widely Available | MDN · WHATWG |
| Streams API (Readable/Writable/Transform) | Composable streaming data processing with backpressure | 67 (2018) | 102 (2022) | 14.1 (2021) | Widely Available | MDN · WHATWG |
| WebTransport | Low-latency bidirectional HTTP/3 transport with streams and datagrams | 97 (2022) | 114 (2023) | 26.4 (~2026) | Newly Available | MDN |
| WebSockets | Full-duplex bidirectional communication over persistent TCP connection | 16 (2011) | 11 (2012) | 7 (2013) | Widely Available | MDN · RFC 6455 |
| Server-Sent Events (EventSource) | One-way server push over persistent HTTP connection | 6 (2010) | 6 (2011) | 5 (2010) | Widely Available | MDN |
| Cache API | Request/Response pair storage for Service Worker offline caching strategies | 40 (2015) | 41 (2015) | 11.1 (2018) | Widely Available | MDN |
| IndexedDB | Asynchronous transactional key-value database for large structured client-side data | 24 (2013) | 16 (2012) | 10 (2016) | Widely Available | MDN · W3C |
| LocalStorage / SessionStorage | Synchronous key-value storage; localStorage persists, sessionStorage is per-tab | 4 (2010) | 3.5 (2009) | 4 (2009) | Widely Available | MDN |
| CookieStore API | Async Promise-based cookie access replacing synchronous document.cookie |
87 (2020) | 140 (Jun 2025) | 18.4 (Mar 2025) | Newly Available | MDN |
| Origin Private File System (OPFS) | High-performance sandboxed virtual filesystem per origin; sync access in workers | 86 (2020) | 111 (2023) | 15.2 (2021) | Widely Available | MDN · WHATWG |
| Storage Buckets API | Named storage buckets with individual eviction/persistence settings | 122 (2024) | ❌ | ❌ | Limited (Chromium-only) | WICG |
| Background Sync API | Defer tasks to Service Worker until stable network connection | 49 (2016) | ❌ | ❌ | Limited (Chromium-only) | MDN |
| Background Fetch API | Large background downloads via Service Worker with progress UI | 74 (2019) | ❌ | ❌ | Limited (Chromium-only) | MDN |
| Periodic Background Sync | Periodic data refresh for installed PWAs in the background | 80 (2020) | ❌ | ❌ | Limited (Chromium-only) | MDN |
| Push API | Receive server-sent push messages even when app is closed, via Service Worker | 50 (2016) | 44 (2016) | 18.0 (Sep 2024) | Newly Available | MDN · W3C |
The Storage Buckets, Background Sync, Background Fetch, and Periodic Background Sync APIs form a Chromium-only cluster with no public implementation signals from Firefox or Safari. These are unlikely to become cross-browser in the near term. WebTransport just gained Safari support in version 26.4 (early 2026), making it viable for cross-browser use for the first time. The Push API reached full cross-platform support when Safari 18.0 shipped complete support in September 2024, though iOS push still requires an installed PWA.
Accessibility standards operate on two tracks: specification standards (WCAG, ARIA) that define conformance criteria, and browser features that implement accessible primitives. WCAG 2.2 became the current W3C Recommendation in October 2023, while browser features like inert, <dialog>, and prefers-reduced-motion are now universally available. WCAG 3.0 remains years from completion.
| Feature | Description | Chrome | Firefox | Safari | Baseline | Docs |
|---|---|---|---|---|---|---|
| WCAG 2.1 | W3C accessibility standard with 17 criteria for mobile, low vision, and cognitive needs | N/A (spec) | N/A | N/A | W3C Rec (Jun 2018) | W3C · WAI |
| WCAG 2.2 | Latest WCAG with 9 new criteria: focus appearance, target size, accessible auth, etc. | N/A (spec) | N/A | N/A | W3C Rec (Oct 2023) | W3C · What's New |
| WCAG 3.0 | Next-gen guidelines with Bronze/Silver/Gold conformance model; broader scope | N/A (spec) | N/A | N/A | Working Draft (2028+ expected) | W3C · Intro |
| ARIA 1.2 | Roles, states, and properties for accessible UI elements; harmonized with HTML | N/A (all browsers) | N/A | N/A | W3C Rec (Jun 2023) | W3C |
| ARIA 1.3 | Adds suggestion, comment, mark roles; aria-description; braille attributes | N/A (in progress) | N/A | N/A | Working Draft (Jan 2024) | W3C |
| Accessibility Object Model (AOM) | Programmatic JS access to browser accessibility tree; Phase 1 (ARIA reflection) shipping | 81 (2020) | 119 (2023) | Partial | Limited (Phase 1 only) | WICG · GitHub |
inert attribute |
Makes element and descendants completely non-interactive (no focus, clicks, a11y) | 102 (Jun 2022) | 112 (Apr 2023) | 15.5 (May 2022) | Widely Available | MDN |
<dialog> element |
Native modal/non-modal dialog with built-in focus management and backdrop | 37 (2014) | 98 (Mar 2022) | 15.4 (Mar 2022) | Widely Available | MDN |
<details>/<summary> improvements |
Native disclosure widget; name attribute enables exclusive accordion groups |
120 (Dec 2023) | 130 (Sep 2024) | 17.2 (Dec 2023) | Newly Available (name) |
MDN |
popover attribute |
Declarative popovers with light dismiss, top-layer, and a11y semantics built in | 114 (May 2023) | 125 (Apr 2024) | 17 (Sep 2023) | Newly Available | MDN |
:focus-visible |
Matches focused elements only when focus indicator should be visible (keyboard nav) | 86 (Oct 2020) | 85 (Jan 2021) | 15.4 (Mar 2022) | Widely Available | MDN |
prefers-reduced-motion |
Detects user's OS setting requesting minimized non-essential animations | 74 (2019) | 63 (2018) | 10.1 (2017) | Widely Available | MDN |
prefers-color-scheme |
Detects user's light/dark theme preference from OS or browser settings | 76 (Jul 2019) | 67 (May 2019) | 12.1 (Mar 2019) | Widely Available | MDN |
prefers-contrast |
Detects user's request for higher or lower contrast via OS settings | 96 (Nov 2021) | 101 (May 2022) | 14.1 (Apr 2021) | Widely Available | MDN |
forced-colors |
Detects forced-colors mode (Windows High Contrast) where browser overrides author colors | 89 (Mar 2021) | 89 (Jun 2021) | 16.0 (Sep 2022) | Widely Available | MDN |
color-scheme property |
Declares which color schemes (light/dark) an element supports; browser adapts UA styles | 81 (Apr 2020) | 96 (Jan 2022) | 13 (Sep 2019) | Widely Available | MDN |
WCAG 2.2 is now the definitive W3C Recommendation and is likely the last WCAG 2.x version. Organizations should target WCAG 2.2 AA compliance. WCAG 3.0 remains a Working Draft with a latest draft from September 2025; its outcome-based conformance model and Bronze/Silver/Gold levels represent a fundamental shift, but it is not expected to reach Recommendation status before 2028. The Accessibility Object Model is being implemented in phases — Phase 1 (ARIA property reflection on DOM elements, ElementInternals) is cross-browser, but advanced phases for virtual accessibility nodes and computed tree queries remain incomplete.
Three patterns define the current web platform landscape. First, JavaScript and CSS have converged on maturity: the vast majority of ES2020–ES2022 features and CSS features like Container Queries, :has(), and Cascade Layers are Widely Available, meaning developers can use them without polyfills or fallbacks for nearly all users. The ES2024–ES2025 wave (Iterator Helpers, Object.groupBy, Promise.withResolvers) is Newly Available and safe for production with minimal risk.
Second, a Chromium-only gap persists in platform APIs. At least 10 major APIs — Navigation API, File System Access, Web Bluetooth, Web NFC, Background Sync/Fetch, Periodic Background Sync, Storage Buckets, Reporting API, Long Tasks API, and Battery Status — remain exclusive to Chromium-based browsers with no clear cross-browser adoption path. Developers depending on these should plan explicit fallback strategies.
Third, the frontier is shifting to layout and interaction: CSS Anchor Positioning, Scroll-driven Animations, View Transitions, and the Popover API represent the next wave of cross-browser primitives for building rich interactive interfaces without JavaScript frameworks. The Interop 2025 and 2026 initiatives are accelerating these toward Baseline status. For developers making technology decisions today, the safest approach is to adopt Widely Available features freely, use Newly Available features with @supports guards or feature detection, and treat Limited Availability features as progressive enhancements requiring explicit fallback code.
| Resource | URL | Purpose |
|---|---|---|
| MDN Web Docs | https://developer.mozilla.org | Primary reference for all web features with browser compat tables |
| Can I Use | https://caniuse.com | Browser support tables with global usage percentages |
| Web Platform Baseline | https://web.dev/baseline | Official Baseline status tracker and definitions |
| TC39 Proposals | https://github.com/tc39/proposals | JavaScript language proposal tracker with stages |
| CSS Working Group Drafts | https://drafts.csswg.org | Latest CSS specification editor's drafts |
| W3C Specifications | https://www.w3.org/TR/ | Official W3C standards and recommendations |
| WHATWG Living Standards | https://spec.whatwg.org | HTML, DOM, Fetch, Streams, and other living standards |
| Chrome Platform Status | https://chromestatus.com | Chrome feature implementation status and timelines |
| WebKit Feature Status | https://webkit.org/status/ | Safari/WebKit implementation status |
| Firefox Platform Status | https://platform-status.mozilla.org | Firefox implementation status and standards positions |
| Interop Dashboard | https://wpt.fyi/interop | Annual cross-browser interoperability initiative tracking |
| W3C WAI | https://www.w3.org/WAI/ | Web Accessibility Initiative — WCAG, ARIA, and accessibility resources |