Release Notes for Safari Technology Preview 139

Safari Technology Preview Release 139 is now available for download for macOS Big Sur and macOS Monterey. If you already have Safari Technology Preview installed, you can update in the Software Update pane of System Preferences on macOS.

This release covers WebKit revisions 286944-287834.

Note: Tab Groups do not sync in this release.

Web Inspector

  • Elements Tab
    • Added revert-layer to CSS autocompletion (r287636)
    • Supported CSS conic gradients in gradient editor and auto-completion (r287409)
    • Made gradient editor angle input readable in dark mode (r287408)
  • Sources Tab
    • Added icon for collapsed blackboxed section (r287586)
    • Fixed expanding a grouping of blackboxed call frames to be persistent (r287590)


  • Fixed CSS Cascade Layers specified in import rules can not be reordered on media query evaluation (r286972)
  • Fixed revert-layer to revert the style attribute to the regular author style for CSS Cascade Layers (r287018)
  • Fixed absolutely positioned children to be aligned using the margin box inside a flexbox (r287064)
  • Used the correct margins in computeInlinePreferredLogicalWidths in orthogonal flows (r286952)
  • Fixed :focus-visible not matching on accessKey focus after focusing something via mouse (r287563, r287662)
  • Fixed flexbox ignoring margins of absolute positioned children when align-items: flex-end or justify-content: flex-end (r287128)
  • Fixed drop-shadow filter to use the value of the color property when it has no specified color (r287817)
  • Fixed transform property to take into account transform reference box (r287606)
  • Fixed inline blocks that contain text with min-width, box-sizing: border-box to include the border in width calculation (r287779)
  • Fixed text-decoration color not changing back after input blur with outline removed (r287674)
  • Implemented text-combine-upright property (standard version of -webkit-text-combine) (r287487)
    • Made -webkit-text-combine an inherited property (r287451)
  • Unprefixed -webkit-print-color-adjust CSS property (r287712)
  • Removed non-standard -webkit-background-composite property (r287433)
  • Removed non-standard -webkit-margin-*-collapse properties (r287429)


  • Added style invalidation for :disabled, :enabled, :valid, and :invalid (r287445, r287551)
  • Fixed :has() matching wrong elements due to style sharing (r287362)
  • Fixed :has() selector invalidation issue with toggling :checked (r287363)
  • Used a bloom filter to quickly reject :has() selectors (r287091)

Web Animations

  • Added support for the animation shorthand property in the computed style (r287535)
  • Changed reversing factor to be computed before canceling the previous transition (r287548)
  • Changed transitions without an explicit transition-property to not be considered (r287764)
  • Fixed animation shorthand to parse values in the right order (r287509)
  • Fixed animation shorthand to list all longhand values when serializing (r287534)
  • Fixed calling setKeyframes() on a running CSS Transition having no immediate effect (r287549)
  • Fixed changing the effect of a transition to no longer mark it as running (r287550)
  • Fixed getKeyframes() for a CSS Animation to not use computed style for keyframes (r287820)
  • Fixed getKeyframes() to ensure that all properties are present on 0% and 100% keyframes (r287518)
  • Fixed getKeyframes() to return an empty object when there are no animatable properties in @keyframes rule (r287517)
  • Fixed inserting a rule within a @keyframes rule should update animations (r287707)
  • Fixed inserting a new @keyframes rule to start animations that already used this name (r287769)
  • Fixed implicit keyframe for a CSS Animation to always use the underlying style (r287827)
  • Fixed interpolation for the filter property failing with a single keyframe (r287826)
  • Fixed translate() function in the transform property to remove trailing 0 value when parsing (r287822)


  • Changed to pre-layout orthogonal children to compute the preferred logical width inside a flexbox (r287263)
  • Fixed paint order of CSS text decorations (r286955)
  • Fixed incorrect percent-based height inside display: table child elements defined when combined with box-sizing: border-box and padding. (r287063)
  • Fixed aspect-ratio size calculation (r287023)


  • Fixed SVG resource invalidation logic causing incorrect layout state (r287076)


  • Changed to allow get() for a same-site, cross-origin iframe (r286993, r287116)
  • Fixed authenticator to fallback to clientPIN after internal verification fails and is blocked (r287315)


  • Added support for using a user-specified preference before using the system’s preferred color scheme (r287030)
  • Fixed FormData constructed in the form’s submit event listener to not include the submitter (r286988)
  • Fixed TextDecoder to detect invalid UTF-8 sequences early enough (r287024)


  • Aligned Array.prototype.toLocaleString to ECMA402 definition (r287560)
  • Fixed Intl.PluralRules.selectRange input validation (r287546)
  • Fixed length of Intl.NumberFormat.formatRange and Intl.PluralRules.selectRange (r287543)

Content Security Policy

  • Changed to always use UTF-8 encoded content when checking hashes (r287270)
  • Implemented CSP strict-dynamic for module scripts (r287756)


  • Added MediaRecorder support for the bitsPerSecond option (r287613)
  • Changed to prevent packing audio samples with discontinuity together (r287249)

Service Workers

  • Added full support for Service Worker interception of fetch requests with FormData body (r287612)
  • Fixed FetchRequest.clone to not need to be called with the current context (r287532)

Web Extensions

  • Added support for the redirect rule type in declarativeNetRequest, which requires host permissions to be granted for the host of the URL being redirected
  • Added support for declarativeNetRequest.getMatchedRules, which requires host permissions to be granted to view the URLs of blocked resources