Release Notes for Safari Technology Preview 161

Safari Technology Preview Release 161 is now available for download 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

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)
  • Changed to show the “Device” menu for all sessions (257426@main)
  • Relocated the toggle for media feature prefers-color-scheme and appearance (257744@main)

CSS Custom Properties

CSS Typed OM

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

:has() pseudo-class

  • Added invalidation support for :picture-in-picture pseudo-class (257995@main)
  • Added invalidation support for :playing, :paused, :seeking, :muted and :volume-locked pseudo-classes (257991@main)


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

Web Animations

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


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


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

WebAssembly SIMD

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



  • Changed to use the dav1d decoder instead of libaom decoder (257357@main)
  • Fixed the progress bar continuing to move when playback is stopped (257403@main)

Fullscreen API

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


  • Added support for <model src> and honor <source type> attributes (257518@main)


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


  • Fixed checkboxes not respecting the indeterminate attribute state (258314@main)
  • Fixed control values not updated after dynamic changes to color <input> elements, <textarea> elements, or <progress> elements (257976@main)
  • Expose bold and italic font styling as text attributes for macOS (258212@main)
  • Fixed indeterminate progress elements not reported as indeterminate by VoiceOver (258332@main)

Intelligent Tracking Prevention

  • Fixed user initiated cross-domain link navigations getting counted as Top Frame Redirects (258382@main)


  • Stopped auto-wrapping svg:text (257993@main)
  • Restricted floats over setCurrentTime and setCurrentScale to finite values (258322@main)


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


  • Fixed Get Element Rect command to no longer round to integer values (257498@main)


  • Added support for creating WebGL contexts for OffscreenCanvas in a web worker (257541@main)
  • Fixed a video texture set to repeat getting clamped (257365@main)
  • Fixed WebGL failing to initialize within an OffscreenCanvas on the main thread (258222@main)