<!--
{
  "documentType" : "article",
  "framework" : "Safari Technology Preview Release Notes",
  "identifier" : "/documentation/Safari-Technology-Preview-Release-Notes/stp-release-161",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Safari Technology Preview 161 Release Notes"
}
-->

# Safari Technology Preview 161 Release Notes

Preview the latest web technology updates including: Web Inspector, CSS Custom Properties, CSS Typed OM, :has() pseudo-class, CSS, Web Animations, Rendering, JavaScript, WebAssembly SIMD, WebAssembly, Media, Fullscreen API, HTML, Web API, Accessibility, Intelligent Tracking Prevention, SVG, WebAuthn, WebDriver, and WebGL.

## Overview

[Safari Technology Preview](https://webkit.org/blog/6017/introducing-safari-technology-preview/) Release 161 is now [available for download](https://webkit.org/downloads/) for macOS Monterey 12.3 or later and macOS Ventura. If you already have Safari Technology Preview installed, you can update in the Software Update pane of System Preferences on macOS Monterey, or System Settings under General → Software Update on macOS Ventura.

This release includes WebKit changes between: [257351@main…258382@main](https://github.com/WebKit/WebKit/compare/82369f26704dd44dc3908e100cd12d21e270807b...aee01bb955fb9818f0fbb802cd5b5392773a33a4)

**Note:** Shared Tab Groups and syncing for Tab Groups, Website Settings, and Web Extensions are not enabled in this release.

### Web Inspector

- Added emulation toggles for `prefers-reduced-motion` and `prefers-contrast` in the Elements tab ([257383@main](https://commits.webkit.org/257383@main))
- Changed to show the “Device” menu for all sessions ([257426@main](https://commits.webkit.org/257426@main))
- Relocated the toggle for media feature `prefers-color-scheme` and `appearance` ([257744@main](https://commits.webkit.org/257744@main))

### CSS Custom Properties

- Enabled `@property` support ([258246@main](https://commits.webkit.org/258246@main), [257525@main](https://commits.webkit.org/257525@main))
- Added `@property` rule parsing and CSSOM ([258067@main](https://commits.webkit.org/258067@main))
- Added parsing for identifier list syntax ([257786@main](https://commits.webkit.org/257786@main))
- Added support for allowing CSS-wide keywords in registered custom properties ([257873@main](https://commits.webkit.org/257873@main))
- Added support for CSS transitions of custom properties ([258134@main](https://commits.webkit.org/258134@main))
- Added support for syntax types including `<color>`, `<image>`, `<url>`, `<time>`, `<dimension>` ([257678@main](https://commits.webkit.org/257678@main), [257698@main](https://commits.webkit.org/257698@main), [257701@main](https://commits.webkit.org/257701@main), [257706@main](https://commits.webkit.org/257706@main))
- Added support for list values ([257844@main](https://commits.webkit.org/257844@main))
- Added unit cycle handling ([258357@main](https://commits.webkit.org/258357@main))
- Made `var()` invalid for fallbacks that don’t match the syntax ([258373@main](https://commits.webkit.org/258373@main))
- Made inline style not validate registered custom property values ([258240@main](https://commits.webkit.org/258240@main))
- Registered custom properties from `@property` rules ([258106@main](https://commits.webkit.org/258106@main))

### CSS Typed OM

- Enabled CSS Typed OM ([258269@main](https://commits.webkit.org/258269@main))
- Allowed setting custom identifiers via the CSS Typed OM API ([257859@main](https://commits.webkit.org/257859@main))
- Made `transition-duration` property not allow negative values ([258295@main](https://commits.webkit.org/258295@main))
- Made sure the `z-index` property is able to be set to `-3.14` ([258265@main](https://commits.webkit.org/258265@main))
- Made sure `column-count` value gets clamped to [1, inf] ([258218@main](https://commits.webkit.org/258218@main))
- Made sure `orphans` and `widows` value gets clamped to [1, inf] ([258243@main](https://commits.webkit.org/258243@main))
- Made StylePropertyMap return CSS values exactly as they were set ([257815@main](https://commits.webkit.org/257815@main))
- Made `StylePropertyMap.set()` wrap a value in a `calc()` if the value is outside the allowed range ([257485@main](https://commits.webkit.org/257485@main))
- Made `StylePropertyMap.set()` throw when trying to set a number for a property which doesn’t allow it ([258242@main](https://commits.webkit.org/258242@main))

### :has() pseudo-class

- Added invalidation support for `:picture-in-picture` pseudo-class ([257995@main](https://commits.webkit.org/257995@main))
- Added invalidation support for `:playing`, `:paused`, `:seeking`, `:muted` and `:volume-locked` pseudo-classes ([257991@main](https://commits.webkit.org/257991@main))

### CSS

- Added support for `:user-invalid` and `:user-valid` pseudo-classes ([257997@main](https://commits.webkit.org/257997@main))
- Aligned `stroke-dasharray` CSS property parsing with the specification ([258136@main](https://commits.webkit.org/258136@main))
- Fixed length values in gradients to take effective zoom into account ([257659@main](https://commits.webkit.org/257659@main))
- Fixed CSS `::marker` to support defining CSS variables ([257711@main](https://commits.webkit.org/257711@main))
- Fixed `font-variant-alternates: historical-forms` to properly reflect via StylePropertyMap ([257955@main](https://commits.webkit.org/257955@main))
- Fixed the computed value for `stroke-dasharray` to be in `px` ([258300@main](https://commits.webkit.org/258300@main))
- Fixed `:out-of-range` pseudo class matching for empty `input[type=number]` ([258165@main](https://commits.webkit.org/258165@main))
- Fixed computed value for `transform` property ([257964@main](https://commits.webkit.org/257964@main))
- Fixed `calc()` values for the `perspective` property aren’t clipped to 0 ([257779@main](https://commits.webkit.org/257779@main))
- Made changes to `transform-style: preserve-3d` and `perspective` so they only apply to direct DOM children ([257509@main](https://commits.webkit.org/257509@main), [257432@main](https://commits.webkit.org/@main))
- Made sure computed values for `baseline-shift` CSS property have `px` unit for lengths ([257928@main](https://commits.webkit.org/257928@main))
- Stopped allowing numbers during parsing of `baseline-shift` CSS property ([258025@main](https://commits.webkit.org/258025@main))
- Stopped allowing numbers during parsing of `cx`, `cy`, `x`, and `y` CSS properties ([258029@main](https://commits.webkit.org/258029@main))

### Web Animations

- Account for `iterationComposite` when interpolating custom properties ([257925@main](https://commits.webkit.org/257925@main))
- Added basic interpolation support for `<length>` custom properties ([257906@main](https://commits.webkit.org/257906@main))
- Added interpolation support for `<transform-function>` custom properties ([258009@main](https://commits.webkit.org/258009@main))
- Added interpolation support for `<transform-list>`, + and # custom properties ([258039@main](https://commits.webkit.org/258039@main))
- Added tests for `<length-percentage>` custom property interpolation ([257931@main](https://commits.webkit.org/257931@main))
- Made custom properties support interpolation with a single keyframe ([257911@main](https://commits.webkit.org/257911@main))
- Supported additivity when interpolating custom properties ([257920@main](https://commits.webkit.org/257920@main))
- Supported interpolation of `<color>` custom properties ([257929@main](https://commits.webkit.org/257929@main))
- Supported interpolation of numeric custom properties ([257930@main](https://commits.webkit.org/257930@main))
- Fixed composite animations with more than 2 keyframes ([257731@main](https://commits.webkit.org/257731@main))

### Rendering

- Added a non-breaking space at the the end of the text when the next text has a leading space ([257622@main](https://commits.webkit.org/257622@main))
- Adjusted nested list markers when an intrusive float is present ([258372@main](https://commits.webkit.org/258372@main))
- Changed to use the intrinsic ratio of replaced elements when computing flex sizes ([257474@main](https://commits.webkit.org/257474@main))
- Made `::backdrop` renderers use background layers when possible ([257538@main](https://commits.webkit.org/257538@main))
- Fixed button elements clipping overflow by default ([257439@main](https://commits.webkit.org/257439@main))
- Fixed rendering lazy loaded images inside an inline element with no height ([257565@main](https://commits.webkit.org/257565@main))
- Fixed the logical width computation for `box-sizing` ([258342@main](https://commits.webkit.org/258342@main))
- Fixed lines with 0px constraints to still be considered a non-empty line if it has content ([257528@main](https://commits.webkit.org/257528@main))
- Recalculated intrinsic widths in the old containing block chain when going out of flow ([257980@main](https://commits.webkit.org/257980@main))

### JavaScript

- Added support for RegExp lookbehind assertions ([257823@main](https://commits.webkit.org/257823@main))
- Enabled AVX JIT code generation ([257884@main](https://commits.webkit.org/257884@main))
- Fixed a race condition in `Atomics.wait` and `Atomics.waitAsync` ([257423@main](https://commits.webkit.org/257423@main))
- Fixed ResizableArrayBuffer and `lastIndexOf` ([258164@main](https://commits.webkit.org/258164@main))
- Fixed WASM SIMD functions to throw a TypeError when called from JavaScript ([257494@main](https://commits.webkit.org/257494@main))
- Made `Object.values` faster ([257382@main](https://commits.webkit.org/257382@main))

### WebAssembly SIMD

- Enabled WASM SIMD on ARM ([257632@main](https://commits.webkit.org/257632@main))
- Enabled WASM SIMD on x64 ([258309@main](https://commits.webkit.org/258309@main))
- Added support for conversions on Intel ([257592@main](https://commits.webkit.org/257592@main))
- Added support for extended integer arithmetic on Intel, and also fix a bitmask operation ([257657@main](https://commits.webkit.org/257657@main))
- Added support for floating-point absolute value, negate, min, max, and square-root on Intel ([257880@main](https://commits.webkit.org/257880@main))
- Added Intel support for load and store operations and fix operation shuffle ([257818@main](https://commits.webkit.org/257818@main))
- Added support for saturating integer arithmetic operations on Intel ([257468@main](https://commits.webkit.org/257468@main))
- Added support for swizzle and shuffle on Intel and fixed `extract_lane` and `replace_lane` ([257400@main](https://commits.webkit.org/257400@main))
- Added support for bitwise operations on Intel ([257640@main](https://commits.webkit.org/257640@main))
- Added support for integer and floating-point arithmetic on Intel ([257511@main](https://commits.webkit.org/257511@main))
- Added support for vector comparisons on Intel ([257532@main](https://commits.webkit.org/257532@main))
- Added Intel support for the remaining conversion opcodes ([257965@main](https://commits.webkit.org/257965@main))
- Made SIMD functions support Linear Scan and Graph Coloring register allocators ([257519@main](https://commits.webkit.org/257519@main))
- Emulated 8-bit shift instructions and `i8x16.popcnt` on Intel ([258089@main](https://commits.webkit.org/258089@main))
- Emulated vector floating-point absolute value on Intel ([257806@main](https://commits.webkit.org/257806@main))
- Fixed `min`, `max`, and CompareIntegerVector operations ([257935@main](https://commits.webkit.org/257935@main))

### WebAssembly

- Implemented WASM GC packed array types ([257597@main](https://commits.webkit.org/257597@main))

### Media

- Changed to use the dav1d decoder instead of libaom decoder ([257357@main](https://commits.webkit.org/257357@main))
- Fixed the progress bar continuing to move when playback is stopped ([257403@main](https://commits.webkit.org/257403@main))

### Fullscreen API

- Enabled the unprefixed version of the Fullscreen API ([257658@main](https://commits.webkit.org/257658@main))
- Added support for the `::backdrop` pseudo-element on fullscreen elements ([257337@main](https://commits.webkit.org/257337@main))
- Fixed properly resolving fullscreen API promises ([257668@main](https://commits.webkit.org/257668@main))
- Implemented the unprefixed `:fullscreen` pseudo-class ([257542@main](https://commits.webkit.org/257542@main))
- Implemented `ShadowRoot.fullscreenElement` ([257457@main](https://commits.webkit.org/257457@main))
- Made the fullscreen API use the top layer ([257456@main](https://commits.webkit.org/257456@main))
- Made fullscreen elements match the `:modal` pseudo-class ([257572@main](https://commits.webkit.org/257572@main))
- Made `requestFullscreen()` consume user activation ([257554@main](https://commits.webkit.org/257554@main))
- Used the fullscreen preferred size when reporting screen dimensions ([258005@main](https://commits.webkit.org/258005@main))
- Stopped adjusting position to absolute for the root element in fullscreen ([257946@main](https://commits.webkit.org/257946@main))

### HTML

- Added support for `<model src>` and honor `<source type>` attributes ([257518@main](https://commits.webkit.org/257518@main))

### Web API

- Enabled 2D OffscreenCanvas ([257672@main](https://commits.webkit.org/257672@main), [258237@main](https://commits.webkit.org/258237@main))
- Added an `iframe` depth limit ([257550@main](https://commits.webkit.org/257550@main))
- Added support to return an adjusted URL when accessed from JavaScript bindings ([257490@main](https://commits.webkit.org/257490@main))
- Ensured video color space is consistent when drawing videos to a canvas ([258030@main](https://commits.webkit.org/258030@main))
- Ensured negative letter-spacing does not pull content oustisde of the inline box ([258356@main](https://commits.webkit.org/258356@main))
- Escaped ampersands (`&`) in JavaScript URLs for `innerHTML` and `outerHTML` ([258112@main](https://commits.webkit.org/258112@main))
- Fixed a bug where mousedown without mouseup in a frame disturbs the click event in another frame ([258055@main](https://commits.webkit.org/258055@main))
- Fixed behavior of nested click event on label element with checkbox ([258287@main](https://commits.webkit.org/258287@main))
- Fixed BroadcastChannel not always correctly computing its origin ([257551@main](https://commits.webkit.org/257551@main))
- Fixed `legend.focus()` to not delegate focus ([258074@main](https://commits.webkit.org/258074@main))
- Improved `<textarea>` validation performance ([257417@main](https://commits.webkit.org/257417@main))
- Made site-isolated cross-origin iframes load in their own process ([257435@main](https://commits.webkit.org/257435@main))
- Removed deprecated uppercase URL attribute alias on WebSocket interface ([257467@main](https://commits.webkit.org/257467@main))

### Accessibility

- Fixed checkboxes not respecting the `indeterminate` attribute state ([258314@main](https://commits.webkit.org/258314@main))
- Fixed control values not updated after dynamic changes to color `<input>` elements, `<textarea>` elements, or `<progress>` elements ([257976@main](https://commits.webkit.org/257976@main))
- Expose bold and italic font styling as text attributes for macOS ([258212@main](https://commits.webkit.org/258212@main))
- Fixed indeterminate progress elements not reported as indeterminate by VoiceOver ([258332@main](https://commits.webkit.org/258332@main))

### Intelligent Tracking Prevention

- Fixed user initiated cross-domain link navigations getting counted as Top Frame Redirects ([258382@main](https://commits.webkit.org/258382@main))

### SVG

- Stopped auto-wrapping `svg:text` ([257993@main](https://commits.webkit.org/257993@main))
- Restricted floats over setCurrentTime and setCurrentScale to finite values ([258322@main](https://commits.webkit.org/258322@main))

### WebAuthn

- Changed the user gesture requirement to give back the user gesture freebie after a successful assertion or registration ([257940@main](https://commits.webkit.org/257940@main))
- Improved handling of security keys with a full key store ([257989@main](https://commits.webkit.org/257989@main))
- Fixed an issue where WebAuthn timeouts lead to an incorrect error ([258116@main](https://commits.webkit.org/258116@main))
- Fixed an issue where `authenticatorAttachment` would always be `"platform"` when performing operations over the hybrid transport ([257576@main](https://commits.webkit.org/257576@main))

### WebDriver

- Fixed Get Element Rect command to no longer round to integer values ([257498@main](https://commits.webkit.org/257498@main))

### WebGL

- Added support for creating WebGL contexts for OffscreenCanvas in a web worker ([257541@main](https://commits.webkit.org/257541@main))
- Fixed a video texture set to repeat getting clamped ([257365@main](https://commits.webkit.org/257365@main))
- Fixed WebGL failing to initialize within an OffscreenCanvas on the main thread ([258222@main](https://commits.webkit.org/258222@main))

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)