Skip to content

Safari 27.0 adds 80 features and 844 fixes

Published Updated

Corrections: 2026-10-14

Safari 27.0 includes 80 features and 844 resolved issues, according to WebKit’s feature post of 2026-09-17. The feature count grew from 58 in the first beta. WebKit’s chart classifies Safari 27 items as 86% resolved issues, 11% improved features, 2% brand-new features, and less than 1% deprecations. The changes cover APIs for page and worker code as well as Safari and its developer tools (WebKit).

WebKit places static routing and the three stream additions in its Web API section, while Safari MCP has its own section as a browser-development tool (WebKit).

WebKit describes the Service Worker static routing API as letting a service worker declare routing rules so that certain requests bypass the service worker altogether. MDN’s reference for the method that does it, InstallEvent.addRoutes(), describes static routes as rules “for fetching specified resources that will be used even before service worker startup”, with a source of network, cache, fetch-event, or race-network-and-fetch-handler, and a condition that can match on a URLPattern, a request method, a request mode, a request destination, or the service worker’s own running status (WebKit; MDN).

Streams get three additions in the same release. WebKit lists async iteration over a readable stream with for await...of, the static ReadableStream.from() method, and the ability to transfer a stream through postMessage(). MDN describes ReadableStream.from() as returning a readable stream from a provided iterable or async iterable object. Transferring a stream over postMessage() gives the receiving context a readable stream. The Streams Standard says the receiving side gets a transferred stream that “can be used exactly like the original”, while “the original will become locked and no longer directly usable” (WebKit; MDN; Streams Standard).

Scroll anchoring changes browser behaviour without a method call. WebKit describes it as adjusting the scroll position when content loads above the viewport, so the page does not jump under the reader, and names the overflow-anchor CSS property as the control. MDN’s reference for that property documents exactly two values, auto and none, and frames the property as the way to turn the behaviour off for an element. Enabling it requires no call, since anchoring is on by default where supported (WebKit; MDN).

WebKit reports that <select> now supports full customization through appearance: base-select, new pseudo-elements including ::picker-icon and ::checkmark, and the ability to put HTML inside an <option> (WebKit).

Safari 27.0 also adds the <selectedcontent> element for controlling what the selected option displays. WebKit says the customizable control remains a real form control, retaining support for keyboard navigation, screen readers, form submission, validation, and change events. Its new user-agent styles cover light and dark modes as well as forced colors and disabled states (WebKit).

For images, the release adds the auto keyword for sizes on lazy-loaded images. WebKit says this lets Safari calculate the image size from its actual layout width once that width is known. Declarative shadow roots gain the shadowrootslotassignment attribute, which selects named or manual slot assignment directly in HTML (WebKit).

The Safari MCP server is a developer tool with no web API. WebKit says it is available in Safari 27.0 and gives coding agents access to the DOM, network requests, screenshots, and console output. To enable it, WebKit directs users to Safari > Settings > Developer and the “Allow remote automation and external agents” option; its Codex example starts /usr/bin/safaridriver with --mcp (WebKit).

The HTML <model> element is in the release for iOS and iPadOS as well as macOS, with attributes WebKit names as environmentmap and stagemode. On visionOS the same element plus a JavaScript Immersive API lets a site provide a custom immersive environment, replacing the developer preview WebKit had shipped under the name Spatial Backdrop (WebKit).

WebKit describes WebAssembly JSPI as allowing WebAssembly code written in a synchronous style to suspend and wait for JavaScript promises (WebKit).

Safari 27.0’s Web Inspector shows color-contrast information inside the Color Picker. The Network tab shows every request in a redirect chain, the Elements tab adds badges for Subgrid and Grid Lanes, and Timeline event details include the layout root element. WebKit also says Safari MCP runs locally, makes no network calls of its own, and sends captured data directly to the configured agent; Apple does not receive it (WebKit).

The networking section adds support for setting Secure cookies on loopback hosts over plain HTTP through JavaScript or Set-Cookie. The WebGPU section adds the WGSL clip_distances built-in, which lets vertex shaders define custom clipping planes before rasterization (WebKit).

Media changes include allowing TextTrackCue.endTime to be set to Infinity for an unbounded cue and letting a hardware VideoDecoder override the color space used for WebCodecs video when embedded color-space metadata is missing or wrong. Canvas gains srgb-linear and display-p3-linear predefined color spaces, while CanvasPath.roundRect() can omit its radii argument to draw a rectangle with square corners (WebKit).

WebKit describes its quality work through five themes: Compatibility, Foundations, Depth, Alignment, and Integration. The detailed resolved-issues list is organized by technology area. The post discusses the all-new ES module loader under Foundations, and it also lists the standards-compliant loader rewrite in the JavaScript feature section, where WebKit says the rewrite fixes module ordering and initialization problems associated with top-level await (WebKit).

Impact on service worker routing and streams

Section titled “Impact on service worker routing and streams”

Static routing lets an installed service worker declare rules that are used before service worker startup. Transferable streams let one context receive a readable stream while the original becomes locked and no longer directly usable (MDN; Streams Standard).

Scroll anchoring adjusts the scroll position when content loads above the viewport, and overflow-anchor: none opts an element out. Customizable select adds appearance: base-select and related pseudo-elements. It also allows HTML content inside <option> (WebKit; MDN).

WebKit’s article reports 80 features and 844 resolved issues for Safari 27.0 (WebKit).

  • How WebKit classified each item as resolved, improved, new, or deprecated is not confirmed.
  • The complete per-platform availability matrix for the full Safari 27.0 feature set is not confirmed.
  • Whether the full set of static-routing conditions and sources documented by MDN behaves identically in Safari 27.0 is not confirmed.
  • The complete set of customizable-select pseudo-elements and <model> attributes shipped in Safari 27.0 is not enumerated here.
  • Whether third-party coding agents all support the same Safari MCP workflow is not confirmed.

The feature post was published on 2026-09-17 and reports 80 features. Its chart counts items, without measuring effort. WebKit discusses the module-loader rewrite in both the quality themes and the feature list, and provides the Safari MCP configuration (WebKit).