New to the web platform in October

Discover some of the interesting features that have landed in stable and beta web browsers during October 2026.

Published: October 29, 2026

Stable browser releases

Chrome 155, Chrome 156, Firefox 158, Firefox 159, Safari 27.1, and Safari 27.2 released to stable during October 2026. This post takes a look at the new features landing across browsers this month, with several major features reaching Baseline Newly available.

Scroll-driven animations become Baseline

Firefox 159 enables scroll-driven animations by default.

Scroll-driven animations let you link the progress of a CSS animation or Web Animations API animation to the scroll offset of a scroll container—using scroll-timeline and the scroll() function—or to the visibility of an element within its scrollport using view-timeline and the view() function, assigned with animation-timeline:

With support in Chrome, Safari, and now Firefox 159, scroll-driven animations are Baseline Newly available.

Browser Support

  • Chrome: 115.
  • Edge: 115.
  • Firefox: 159.
  • Safari: 26.

Source

See Scroll-driven animations: The road to Baseline Newly available and scroll the timeline to explore how scroll-driven animations evolved from an early 2014 proposal into an interoperable web standard shipped across every core browser engine.

Scoped custom element registries become Baseline

Firefox 159 adds support for scoped custom element registries.

Previously, all custom elements had to be registered in a single global window.customElements registry, which could cause naming collisions when combining components from different libraries or teams. You can now create an independent CustomElementRegistry instance using the CustomElementRegistry() constructor and scope its definitions to a specific shadow tree. The customElementRegistry property is also available on Document, Element, and ShadowRoot.

With support across Chrome, Safari, and Firefox 159, scoped custom element registries are now Baseline Newly available.

Browser Support

  • Chrome: 146.
  • Edge: 146.
  • Firefox: 159.
  • Safari: 26.

Source

JPEG XL image support

Both Chrome 155 and Firefox 158 enable support for the JPEG XL (image/jxl) image format by default.

JPEG XL is a royalty-free raster image format standardized as ISO/IEC 18181. It supports lossy and lossless compression, progressive decoding, wide color gamuts, high dynamic range (HDR), high bit depths, transparency, and animation, as well as lossless transcoding of existing JPEG files. Firefox 158 also updates the default HTTP Accept header for image requests to include image/jxl.

Learn more in Shipping JPEG XL in Chrome.

Browser Support

  • Chrome: 155.
  • Edge: not supported.
  • Firefox: 158.
  • Safari: 17.

Source

CSS typed arithmetic becomes Baseline

Firefox 158 adds support for CSS typed arithmetic in math functions such as calc().

CSS typed arithmetic lets you divide two values of the same data type—even if they use different units—to produce a unitless <number> quotient. You can use that unitless result directly in properties that accept numbers (like opacity or line-height) or multiply it by another unit to convert between types:.

With Firefox 158 adding to existing support in Chrome and Safari, CSS typed arithmetic is now Baseline Newly available.

Browser Support

  • Chrome: 140.
  • Edge: 140.
  • Firefox: 158.
  • Safari: 26.

PerformanceResourceTiming.deliveryType

Firefox 158 adds support for the PerformanceResourceTiming.deliveryType property.

This property indicates how a resource was delivered—for example, returning "cache" when a resource was served from the cache.

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: 158.
  • Safari: 26.4.

Source

The random() CSS function

Chrome 156 adds support for the random() CSS function.

The random() function generates a random numeric value within a specified minimum and maximum range, with an optional step interval. By default, each random() call resolves to a distinct random value, or you can pass a <random-key> as the first argument to share a random value across properties or elements:

See examples in the article Embracing playful imperfection with the CSS random() function on Smashing Magazine.

Browser Support

  • Chrome: 156.
  • Edge: 156.
  • Firefox Technology Preview: supported.
  • Safari: 26.2.

Source

The margin-trim CSS property

Chrome 155 adds support for the margin-trim CSS property on block containers and multi-column containers.

You can use margin-trim on a container to omit the margins of its child elements where they meet the container's edges, avoiding extra spacing before the first child or after the last child without needing :first-child or :last-child overrides.

Find out more in Remove start and end margins with the margin-trim property.

Browser Support

  • Chrome: 155.
  • Edge: 155.
  • Firefox: not supported.
  • Safari: 16.4.

Source

Inline counter styles with the symbols() CSS function

Chrome 155 introduces support for the symbols() CSS function.

The symbols() function lets you define an anonymous counter style directly within list-style-type, the list-style shorthand, counter(), or counters() without declaring a separate named @counter-style at-rule.

Browser Support

  • Chrome: 155.
  • Edge: 155.
  • Firefox: 35.
  • Safari Technology Preview: supported.

Source

The text-decoration-skip-spaces CSS property

Chrome 155 adds the text-decoration-skip-spaces CSS property, which controls whether text decoration lines—such as underlines, overlines, and line-throughs—skip over whitespace characters. This lets you prevent decorations from being drawn under leading, trailing, or inter-word spaces.

Browser Support

  • Chrome: 155.
  • Edge: not supported.
  • Firefox: not supported.
  • Safari: not supported.

The :navigation-source CSS pseudo-class

Chrome 156 introduces the :navigation-source CSS pseudo-class. It matches the link, button, or form element that initiated a navigation and keeps that element selected throughout the navigation.

Browser Support

  • Chrome: 156.
  • Edge: 156.
  • Firefox: not supported.
  • Safari: not supported.

JavaScript text module imports and retrying failed module loads

Chrome 155 adds support for text module imports using import ... with { type: "text" }, joining Firefox. The type: "text" import attribute loads the target module's contents as a JavaScript string.

Browser Support

  • Chrome: 155.
  • Edge: 155.
  • Firefox: 153.
  • Safari: not supported.

Source

Chrome 156 also updates module loading behavior so failed module loads are no longer permanently cached. Applications can now retry failed module loads—for example, by calling import() again after a temporary network failure.

WebTransport updates in Chrome and Firefox

Firefox 158 and Chrome 156 both expand WebTransport:

Firefox 158 adds the WebTransport.getStats() method to retrieve connection and datagram statistics, and the static WebTransport.supportsReliableOnly property indicating whether the browser supports WebTransport sessions over exclusively reliable transports.

Browser Support

  • Chrome: 157.
  • Edge: 157.
  • Firefox: 158.
  • Safari: 26.4.

Source

Chrome 156 adds support for passing custom HTTP request headers in WebTransportOptions during the initial CONNECT handshake and reading server response headers from the WebTransport instance.

The Notification navigate option in Firefox

Firefox 158 adds support for the navigate option in the Notification() constructor and ServiceWorkerRegistration.showNotification(), as well as the Notification.navigate property, joining Safari. This option specifies a URL for the browser to navigate to when the user clicks the system notification.

Browser Support

  • Chrome: not supported.
  • Edge: not supported.
  • Firefox: 158.
  • Safari: 18.5.

Source

HTML Sanitizer API updates in Firefox

Firefox 158 adds the javascriptURLs configuration option and Sanitizer.setJavascriptURLs() to the HTML Sanitizer API, controlling whether attributes containing javascript: URLs are removed when using unsafe HTML insertion methods like Element.setHTMLUnsafe().

Browser Support

  • Chrome: not supported.
  • Edge: not supported.
  • Firefox: 158.
  • Safari: not supported.

Firefox 159 also updates safe sanitizer methods such as Element.setHTML(), to strip unwanted elements and attributes during parsing rather than after building the DOM tree, ensuring that neighboring text stays in a single text node.

Renaming flow-tolerance to fit-tolerance in Safari

Safari 27.2 renames the flow-tolerance property to fit-tolerance for grid lanes layout (display: grid-lanes), retaining flow-tolerance as a deprecated alias.

Browser Support

  • Chrome: not supported.
  • Edge: not supported.
  • Firefox: not supported.
  • Safari: 26.4.

Beta browser releases

Beta browser versions give you a preview of things that will be in the next stable version of the browser. It's a great time to test new features, or removals, that could impact your site before the world gets that release. New betas this month are Chrome 157, Chrome 158, and Firefox 160.

Chrome 157 beta includes CSS corner shorthand and edge sub-shorthands to set border-radius and corner-shape together, text-decoration-inset, text-overflow: <string>, and position-visibility: anchor-valid and anchor-visible. It also includes HTML-in-canvas rendering support, and an an icon-only displaymode attribute for the <camera>, <microphone>, and <geolocation> capability elements.

Chrome 158 beta introduces the declarative HTML <install> element and the Web Install API (navigator.install()) for cross-origin web app installation. CSS and SVG additions include the ::highlight(*) universal custom highlight selector, media element state pseudo-classes (:playing, :paused, :seeking, :buffering, :stalled, :muted, :volume-locked), flow-start and flow-end alignment keywords, and the closest-corner and farthest-corner radii for circle() and ellipse() basic shapes.

Firefox 160 beta updates the WebExtensions runtime.PlatformInfo API to return arch as arm64 instead of aarch64 on ARM64 platforms, aligning with Chrome.