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

# Safari Technology Preview 163 Release Notes

Preview the latest web technology updates including: Web Inspector, Masonry Layout, CSS Custom Properties, :has() pseudo-class, Media Queries Level 4, CSS, CSS Typed OM, Forms, Rendering, JavaScript, WebAssembly, Gamepad API, Web API, WebGL, SVG, Scrolling, Media, Accessibility, WebDriver, and Safari Web Extensions.

## Overview

[Safari Technology Preview](https://webkit.org/blog/6017/introducing-safari-technology-preview/) Release 163 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: [258383@main…259548@main](https://github.com/WebKit/WebKit/compare/cf203f4511ff5d596126af5057da721eb625901f...8675dc347367b42c21c1f7db9f37cecce8de87d2).

### Web Inspector

- General
  - Fixed Web Inspector not remembering which side of the window it was attached to ([259320@main](https://commits.webkit.org/259320@main))
  - Fixed undocked Web Inspector windows being placed in a different window set from the window they are inspecting when using Stage Manager ([258672@main](https://commits.webkit.org/258672@main))
- Elements Tab
  - Fixed the ITAL variation axis slider showing NaN values in the Fonts details sidebar panel ([259351@main](https://commits.webkit.org/259351@main))
  - Fixed “Inspect Element” not revealing the selected element in the DOM tree if the element was hidden behind the “Show All Nodes” button ([258805@main](https://commits.webkit.org/258805@main))
- Timelines Tab
  - Disabled the Screenshots timeline when inspecting targets that can’t support it ([259326@main](https://commits.webkit.org/259326@main))

### Masonry Layout

- Enabled Masonry layout by default ([25869](https://commits.webkit.org/258694@main)[4@main](https://commits.webkit.org/258694@main), [259308@main](https://commits.webkit.org/259308@main))
- Added the initial support for `align-tracks` and `justify-tracks` ([258544@main](https://commits.webkit.org/258544@main))

### CSS Custom Properties

- Added dependency cycle handling that involves root style ([258985@main](https://commits.webkit.org/258985@main))
- Added detection for complex custom property cycles involving multiple loops ([259506@main](https://commits.webkit.org/259506@main))
- Added handling for computational dependencies in transform functions ([259353@main](https://commits.webkit.org/259353@main), [259298@main](https://commits.webkit.org/259298@main))
- Changed rules in shadow trees to be ignored ([258880@main](https://commits.webkit.org/258880@main))
- Updated CSS custom properties containing `var()` to update when the referenced property is animated ([258786@main](https://commits.webkit.org/258786@main))
- Fixed failing to provide intialValue in registerProperty with non-universal syntax should throw ([258909@main](https://commits.webkit.org/258909@main))
- Fixed “`<color> | <color>+`” to match “yellow blue” ([259166@main](https://commits.webkit.org/259166@main))
- Ensured `transition-property` values fill with a custom property when other transition CSS properties are used with a longer list of items ([258770@main](https://commits.webkit.org/258770@main))

### :has() pseudo-class

- Added invalidation support for `:buffering` and `:stalled` pseudo-classes ([258891@main](https://commits.webkit.org/258891@main))
- Made `:has()` require valid selectors for all selectors in the selector list ([258712@main](http://commits.webkit.org/258712@main))

### Media Queries Level 4

- Allowed negative values in media queries ([258938@main](https://commits.webkit.org/258938@main))
- Made “layer” an invalid media type name ([258957@main](https://commits.webkit.org/258957@main))

### CSS

- Added support for `leading-trim` ([258766@main](https://commits.webkit.org/258766@main))
- Added support for using `currentcolor` with `color-mix()` ([258970@main](https://commits.webkit.org/258970@main), [259145@main](https://commits.webkit.org/259145@main))
- Fixed `box-shadow` not painting correctly on inline elements ([258923@main](https://commits.webkit.org/258923@main))
- Made CSS animations participate in cascade ([258514@main](https://commits.webkit.org/258514@main))
- Fixed invalidation for class names within `:nth-child()` selector lists ([258917@main](https://commits.webkit.org/258917@main))
- Fixed focusing an element with scroll snap to not always result in snapping to that element ([259381@main](https://commits.webkit.org/259381@main))
- Fixed `font-face` `src` list failing early if the component fails ([258749@main](https://commits.webkit.org/258749@main), [258870@main](https://commits.webkit.org/258870@main))
- Fixed `font-face` `src` `local()` to invalidate CSS-wide keywords ([258695@main](https://commits.webkit.org/258695@main))
- Fixed `text-decoration-thickness` property to always trigger a repaint when changed ([258641@main](https://commits.webkit.org/258641@main))
- Fixed `overscroll-behavior: none` to prevent overscroll when the page is too small to scroll ([259227@main](https://commits.webkit.org/259227@main))
- Fixed `appearance: slider-vertical` to only apply to range inputs ([258924@main](https://commits.webkit.org/258924@main))
- Fixed that initial whitespace breaks the query in `window.matchMedia()` ([259357@main](https://commits.webkit.org/259357@main))
- Fixed a bug that Disconnected `<fieldset>` elements sometimes incorrectly match :valid / :invalid selectors ([259422@main](https://commits.webkit.org/259422@main))
- Removed “specified hue” color interpolation method for gradients and `color-mix()` ([259190@main](https://commits.webkit.org/259190@main))
- Stopped requiring whitespace between `of` and the selector list in `:nth-child` and `:nth-last-child` ([258703@main](https://commits.webkit.org/258703@main))

### CSS Typed OM

- Stopped treating `grid-row-start`, `grid-column-start`, `grid-row-end`, and `grid-column-end` as list properties ([258764@main](https://commits.webkit.org/258764@main))

### Forms

- Fixed `input[type=submit]`, `input[type=reset]`, and `input[type=button]` to honor font-size/padding/height and to work with multi-line values ([258754@main](https://commits.webkit.org/258754@main))

### Rendering

- Added a guard against zero or negative space shortage ([258647@main](https://commits.webkit.org/258647@main))
- Changed the default oblique angle from 20 degrees to 14 degrees to match other browsers ([258722@main](https://commits.webkit.org/258722@main))
- Fixed underlines not appearing and disappearing when expected ([258914@main](https://commits.webkit.org/258914@main))
- Fixed hairline on selection when bidi text is involved ([259537@main](https://commits.webkit.org/259537@main))
- Fixed incorrect paint of `translate` property animation ([259173@main](https://commits.webkit.org/259173@main))
- Fixed incorrect repaint when inline content shrinks vertically ([259141@main](https://commits.webkit.org/259141@main))
- Fixed scrolling through content hidden with `clip-path` not propagating below ([259368@main](https://commits.webkit.org/259368@main))
- Fixed `margin: auto` to be the only rule resolved against the “available width adjusted with intrusive floats” (e.g. percent values are based on container width). ([259125@main](https://commits.webkit.org/259125@main))
- Fixed lazy image loading failure when `overflow: clip` was set on just one axis ([259007@main](https://commits.webkit.org/259007@main))
- Fixed scrolling for a fixed header inside overflow scroll with a transformed ancestor ([259175@main](https://commits.webkit.org/259175@main))
- Fixed incorrect custom pseudo-scrollbar sizes ([259389@main](https://commits.webkit.org/259389@main))
- Improved balancing for `border`, `padding`, and empty block content ([259246@main](https://commits.webkit.org/259246@main))

### JavaScript

- Fixed `Atomics.waitAsync` to be invocable from the main thread ([258856@main](https://commits.webkit.org/258856@main))
- Fixed module scripts to always decode using UTF-8 ([259251@main](https://commits.webkit.org/259251@main), [259261@main](https://commits.webkit.org/259261@main))
- Fixed `toLocaleLowerCase` and `toLocaleUpperCase` to not throw an exception on empty string ([259242@main](https://commits.webkit.org/259242@main))
- Optimized Number constructor calls further ([259533@main](https://commits.webkit.org/259533@main))
- Optimized `WebAssemblyInstance#exports` ([259017@main](https://commits.webkit.org/259017@main))
- Updated `Intl.DurationFormat` to align with updated standards ([259317@main](https://commits.webkit.org/259317@main))

### WebAssembly

- Added `ref.as_non_null` instruction ([259420@main](https://commits.webkit.org/259420@main))
- Added missing type expansion for GC arrays and structs ([259042@main](https://commits.webkit.org/259042@main))
- Added `struct.new_canon_default` ([258689@main](https://commits.webkit.org/258689@main))

### Gamepad API

- Added support for `vibrationActuator` ([258680@main](https://commits.webkit.org/258680@main))
- Added experimental support for “trigger-rumble” effect type behind a feature flag ([259507@main](https://commits.webkit.org/259507@main))
- Fixed `GamepadHapticActuator.playEffect()` with a magnitude less than 0.1 having no effect ([258874@main](https://commits.webkit.org/258874@main))
- Fixed how magnitude values passed to `GamepadHapticActuator.playEffect()` ([258988@main](https://commits.webkit.org/258988@main))
- Made `gamepad.vibrationActuator.playEffect()` throw for invalid effect parameters ([258752@main](https://commits.webkit.org/258752@main))
- Made `vibrationActuator` limit the duration of vibration effects ([258759@main](https://commits.webkit.org/258759@main))
- Made `vibrationActuator` stop vibrating when its document becomes hidden ([258802@main](https://commits.webkit.org/258802@main))
- Made `Gamepad.vibrationActuator` work with the GameController framework ([258674@main](https://commits.webkit.org/258674@main))
- Made `Gamepad.vibrationActuator` return `null` when the gamepad doesn’t support dual-rumble ([258812@main](https://commits.webkit.org/258812@main))
- Set `Gamepad.vibrationActuator.type` to “dual-rumble” ([258758@main](https://commits.webkit.org/258758@main))

### Web API

- Enabled default ARIA for custom elements ([258743@main](https://commits.webkit.org/258743@main))
- Implemented `StorageManager.estimate()` ([258610@main](https://commits.webkit.org/258610@main))
- Added support for Ed25519 keys to Web Crypto ([259277@main](https://commits.webkit.org/259277@main), [259489@main](https://commits.webkit.org/259489@main))
- Changed `queryCommandValue("stylewithcss")` to always return an empty string ([258777@main](https://commits.webkit.org/258777@main))
- Disabled DOMParser’s support for declarative shadow DOM ([258768@main](https://commits.webkit.org/258768@main))
- Fixed a bug that `FileSystemSyncAccessHandle`’s `close` function throws an exception on the second call ([258736@main](https://commits.webkit.org/258736@main))
- Fixed data written via FileSystemSyncAccessHandle disappearing after creating a new FileSystemFileHandle ([258876@main](https://commits.webkit.org/258876@main))
- Fixed negative shadow repaint issue ([259497@main](https://commits.webkit.org/259497@main))
- Fixed getting `input.value` for number inputs with over 39 characters returning an empty string ([258614@main](https://commits.webkit.org/258614@main))
- Fixed right-to-left tab handling ([259428@main](https://commits.webkit.org/259428@main), [259460@main](https://commits.webkit.org/259460@main))
- Fixed `Clear-Site-Data` HTTP header to obey origin partitioning ([259466@main](https://commits.webkit.org/259466@main))
- Fixed a bug that a new SharedWorker will be dysfunctional after the old one terminated via `SharedWorkerGlobalScope.close()` ([259228@main](https://commits.webkit.org/259228@main))
- Fixed a bug that HTMLSelectElement’s value setter sets incorrect values if there are grouped options ([259249@main](https://commits.webkit.org/259249@main))
- Fixed stripping of leading slashes in `URL.hostname` setter ([259366@main](https://commits.webkit.org/259366@main))
- Fixed a bug that `formDisabledCallback()` is sometimes called even when disabledness hasn’t changed ([259372@main](https://commits.webkit.org/259372@main))
- Made autofilling form to trigger `input` event in addition to `change` event ([259434@main](https://commits.webkit.org/259434@main))
- Moved `oncopy`, `oncut`, and `onpaste` to GlobalEventHandlers ([258390@main](https://commits.webkit.org/258390@main))
- Removed the `precision="float"` attribute on `<input type="range">` ([258625@main](https://commits.webkit.org/258625@main))
- Removed `HTMLHeadElement.profile` ([258397@main](https://commits.webkit.org/258397@main))
- Removed `HTMLPreElement.wrap` ([258445@main](https://commits.webkit.org/258445@main))
- Removed `SVGFEMorphologyElement.setRadius(radiusX, radiusY)` ([258733@main](https://commits.webkit.org/258733@main))
- Removed `HTMLFrameElement.location` ([259067@main](https://commits.webkit.org/259067@main))
- Updated Content Security Policy when the header is sent as part of a 304 response ([258931@main](https://commits.webkit.org/258931@main))

### WebGL

- Enabled `WEBGL_provoking_vertex` by default ([259499@main](https://commits.webkit.org/259499@main))

### SVG

- Fixed `rotate: x` and `transform: rotate(x)` yielding different behavior with SVG ([258882@main](https://commits.webkit.org/258882@main))
- Fixed SVG `textLength` ([258921@main](https://commits.webkit.org/258921@main))
- Handled animation freeze when `repeatDur` is not a multiple of `dur` ([259212@main](https://commits.webkit.org/259212@main))
- Fixed the bug that SVG sometimes doesn’t repaint when resolving color changes ([259082@main](https://commits.webkit.org/259082@main))
- Fixed computing the `keyTimes` index correctly for discrete values animations ([258939@main](https://commits.webkit.org/258939@main))

### Scrolling

- Fixed page scrolling more than one screenful when pressing Space or Fn+Down ([259146@main](https://commits.webkit.org/259146@main))

### Media

- Enabled `AudioSession` API by default with a reduced subset ([259074@main](https://commits.webkit.org/259074@main))
- Moved Media Source API settings back into the Experimental Features ([258853@main](https://commits.webkit.org/258853@main))
- Changed to try using low latency for the WebRTC HEVC encoder, if available ([259128@main](https://commits.webkit.org/259128@main))
- Fixed HLS videos sometimes failing to reach “ended” state and not able to be restarted ([259342@main](https://commits.webkit.org/259342@main))
- Fixed MediaStreamTrack ending due to a capture failure when using bluetooth headsets ([259150@main](https://commits.webkit.org/259150@main))
- Fixed `AudioBufferSourceNode.start` with a duration sometimes failing ([259234@main](https://commits.webkit.org/259234@main))
- Fixed duplicate `timeupdate` events in Text Track Code ([259023@main](https://commits.webkit.org/259023@main))
- Fixed a bug that video element pauses after bluetooth audio input is disconnected ([259415@main](https://commits.webkit.org/259415@main), [259478@main](https://commits.webkit.org/259478@main))
- Updated `MediaController.currentTime` to return the previously set position ([259020@main](https://commits.webkit.org/259020@main))

### Accessibility

- Fixed `aria-controls` to be exposed as AXLinkedUIElements and not AXARIAControls ([258922@main](https://commits.webkit.org/258922@main))
- Fixed VoiceOver when selecting “Sign in with Apple” on some websites ([259147@main](https://commits.webkit.org/259147@main))

### WebDriver

- Fixed the Shift modifier key not applying to typed text ([259039@main](https://commits.webkit.org/259039@main))

### Safari Web Extensions

- Added support for support `setExtensionActionOptions()` in the declarativeNetRequest API
- Changed `declarativeNetRequest` rules to default to `false` for `isUrlFilterCaseSensitive`
- Increased `browser.storage.session` data limit to 10MB
- Fixed `:has()` selector for Safari Content Blockers ([259068@main](https://commits.webkit.org/259068@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)