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.
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.
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.
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
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.
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.
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.
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.
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
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
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.
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.
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.
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
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
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.