Release Notes for Safari Technology Preview 97

Safari Technology Preview Release 97 is now available for download for macOS Catalina and macOS Mojave. 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 251627-252823.

Resize Observer

  • Enabled Resize Observer by default (r251822)


  • Added UI with instructions for authenticating with a security key while authenticating
  • Added support for legacy Google NFC Titan security keys (r252297)

Web Animations

  • Added support for AnimationEvent.pseudoElement (r251840)
  • Fixed retargeted transitions targeting accelerated properties that do not stop the original transition (r252540)
  • Fixed the easing property for a CSS transition effect (r251657)
  • Fixed the transform property always none for getKeyframes() output of a CSS Animation (r251839)
  • Fixed getKeyframes() to return the right timing function for declarative animations (r251649)

Web Inspector

  • Elements
    • Added support for multiline CSS property values (r252523)
    • Added support for highlighting nodes that match CSS rules with pseudo-selectors (r252436)
    • Added color picker support for P3 color space (r252168)
    • Fixed an issue where copying multiple DOM nodes would only copy the last selected DOM node (r252615)
    • Fixed aqua and fuchsia not being detected as CSS colors (r252448)
    • Outlined sRGB-safe areas on the P3 color picker (r252747)
  • Sources
    • Added a context menu item to reveal the local override when a resource is loaded from it (r252495)
    • Added support for matching local overrides based on URL pattern in addition to exact match (r252614)
    • Changed to prefer non-blackboxed scripts when showing a source code location link (r253087)
    • Changed to fire Node Removed breakpoints whenever the DOM node is removed from the main DOM tree, not just when it’s removed from it’s parent (r251871)
    • Fixed “Toggle Visibility” context menu item to work for elements inside a shadow tree (r252026)
    • Made the default content of the Inspector Bootstrap Script a comment that explains how it works (r251921)
    • Moved the “Local Override…” creation item from the Breakpoints section options menu to the Create Resource menu (r252517)
    • Made call frames from blackboxed scripts visually distinct (r252745)
  • Timelines
    • Added a marker for when a stop was requested (r252199)
    • Added a timeline that shows information about any recorded CSS animation/transition (r251959)
    • Labeled ResizeObserver callbacks in the JavaScript & Events timeline (r251832)
  • Layers
    • Enabled the Layers Tab by default (r252063)
  • Console
    • Defaulted to focusing the console prompt if no other content is focused after opening Web Inspector (r251958)
    • Fixed an issue where the saved result value was still being shown after navigating (r253000)
  • Settings
    • Enabled line wrapping by default (r251918)


  • Fixed image flashing with transform: rotate animation (r252486)
  • Implemented accelerated video-to-texture upload path for ANGLE backend for WebGL (r252741)

Back-Forward Cache

  • Added site-specific back-forward cache quirk to work around an issue on (r252301)
  • Fixed WebAnimation to never prevent entering the back-forward cache (r251742)
  • Fixed PaymentRequest and PaymentResponse to not prevent entering the back-forward cache (r252338)
  • Fixed UserMediaRequest to not prevent entering the back-forward cache (r251746)
  • Made MediaStream and MediaStreamTrack back-forward cache friendly (r252337)


  • Added the orient property of the interface SVGMarkerElement (r252444)
  • Added percentage support for fill-opacity, stroke-opacity, stop-opacity, and flood-opacity (r251696)
  • Changed properties that take <position> to not accept 3 values (r251668)
  • Disabled SVG shapes should not be hit (r252069)
  • Fixed SVGGeometryElement.getPointAtLength to clamp its argument (r251877)
  • Fixed opacity to always serialize as a number (r251828)

Clipboard API

  • Added some infrastructure to resolve ClipboardItems into pasteboard data for writing (r252315)
  • Added support for Clipboard.readText() (r252627)


  • Added support for the Q unit (r251662)
  • Changed CSS Transitions and CSS Animations properties to treat unit-less 0 as an invalid value for times (r251658)
  • Fixed CSS grid line name positions after auto repeat with no line names (r251965)
  • Fixed -webkit-font-smoothing: none not antialiasing subsequent elements (r252622)
  • Fixed ::before and ::after elements not filling their grid cell when the container has display: contents (r251780)
  • Fixed calc() serialization to match the specifications (r253079)
  • Implemented the CSS clamp() function (r253105)

Remote Playback API

  • Enabled Remote Playback API by default (r251784, r251737)
  • Ensured the MediaRemote callback always called (r252331)


  • Batched multiple EME key requests into one request and response (r251895)


  • Added BigInt support for ++ and -- (r252680)
  • Fixed Intl.DateTimeFormat to return resolvedOptions in the correct order (r251815)
  • Optimized Promise runtime functions (r251671)
  • Implement String.prototype.replaceAll (r252683)

Picture-in-Picture Web API

  • Enabled the Picture-in-Picture API by default (r251925, r251745, r251797)
  • Added support for the :picture-in-picture CSS pseudo-class for video elements in picture-in-picture mode (r252330)
  • Fixed picture-in-picture events to fire when entering or exiting the picture-in-picture mode (r252240)


  • Created a WebAssembly interpreter (r251886)
  • Support WebAssembly.Global (r253074)


  • Added fullscreen style support for (r251827)
  • Changed the file input to fire an input event before the change event (r252768)
  • Changed hidden framesets to provide default edgeInfo value (r251680)
  • Fixed <input type="range">.setAttribute("value") to update the value (r251718)
  • Fixed some captcha images rendering as a blank white space (r252353)
  • Fixed content sometimes disappearing for a <video> with controls and clipping (r252070)
  • Fixed a bug where focusing a shadow host which delegates focus will properly skip inner shadow hosts that delegate focus (r252537)
  • Fixed getComputedStyle returning auto for zIndex property even after it has been set on non-positioned elements (r252724)
  • Fixed very slow tile rendering due to event region painting in Google Docs spreadsheets (r252419)
  • Fixed notification permissions not getting remembered for origins without a port (r251709)
  • Fixed VeryHigh priority loads (r252431)