Release Notes for Safari Technology Preview 142

Safari Technology Preview Release 142 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 289213-290223.

Note: Tab Groups do not sync in this release.

Web Inspector

  • Elements Tab
  • Sources Tab
    • Fixed clicking to re-enable a breakpoint clearing automatic continue (r289669)
    • Fixed double-clicking a breakpoint icon to show the edit popover (r289670)

CSS Subgrid

  • Enabled subgrid by default (r290111)
  • Added accounting for subgrid margin, border, and padding when sizing (r290096)
  • Added support for parsing subgrid in grid-template-columns and grid-template-row (r289722)
  • Changed to copy track sizes from the parent grid into subgrid (r290007)
  • Changed to inherit track count from the parent grid for subgridded axes and clamp item placement to that explicit grid (r289986)
  • Included subgrid items in the track sizing algorithm of the outer grid (r290077)
  • Implemented getComputedStyle for subgrids (r289993)
  • Fixed certain scenarios where grid may be empty (r289437)
  • Fixed recalculating styles when updating a grid gap value (r289241)

CSS Container Queries

  • Enabled CSS Container Queries by default (r290025)
  • Added query container tracking so they can be invalidated on size change (r289457)
  • Added support for all size features (r289838)
  • Added support for full range notation in size queries (r290037)
  • Added support for range operators in size queries (r289789)
  • Changed size queries on unsupported axis to evaluate to unknown (r289890)
  • Implemented container name matching (r289617)
  • Implemented full query parser and evaluator (r289742)
  • Implemented inline-size containment (r289466)
  • Implemented container shorthand serialization (r289886)
  • Matched container queries correctly in non-rendered subtrees (r290205


  • Enabled CSS Motion Path by default (r290071)
  • Enabled overscroll-behavior by default (r289683)
  • Changed transform: perspective(0) to not be considered an identity operation (r289903)
  • Changed to return none for the computed style of a mask when there are no mask images (r289377)
  • Fixed :focus-visible with a click on radio or checkbox labels (r289521)
  • Fixed contain: content in fullscreen (r289686)
  • Fixed incorrect absolute position layout when toggling contain (r289527)
  • Updated conversion to a color space with a smaller gamut to perform gamut mapping (r289396)
  • Updated an element with both -webkit-user-select: all and -webkit-user-drag: element to get a snapshot as when using only -webkit-user-drag: element (r289544)

Web Animations

  • Enabled the KeyframeEffect.composite property (r290067)
  • Added composite accumulation support for transform properties (r289599)
  • Added support for logical properties in JS-originated animations (r289216)
  • Aligned animations with different, but compatible, frameRate values (r290121)
  • Allowed setting frameRate as an option passed to Element.animate() (r290123)
  • Allowed setting frameRate as an option passed to document.timeline.animate() (r290125)
  • Changed to properly handle interpolation of non-invertible matrices (r289862)
  • Changed to use the animation frameRate during animation resolution and scheduling (r290003)
  • Changed Animation.commitStyles() to use the non-animated style (r289453)
  • Fixed additive and accumulation interpolation to work correctly with implicit 0% and 100% keyframes (r289454)
  • Fixed animating from scale() to scale() translate() (r289732)
  • Fixed additive animations to prevent other animations from running accelerated (r289605)
  • Fixed recomputing keyframes when changing direction or writing-mode (r289426)
  • Fixed clearing computed keyframes when changing direction or writing-mode (r289226)
  • Fixed animations associated with a custom effect to appear in document.getAnimations() result (r290122)
  • Implemented parsing and animation support for offset shorthand (r289876)


  • Fixed tab characters and ch units to obey synthetic bold width adjustments correctly (r289609)


  • Changed input elements to return an empty string for an invalid floating-point number that ends with “.” (r290124)
  • Fixed selection method return values to match the spec (r289813)
  • Fixed light appearance text fields rendering invisible in Increased Contrast mode (r290054)
  • Fixed clicking an <input type="image"> submitting the form with a null submitter (r289615)
  • Improved applyStep() to match the spec (r289465)


  • Enabled Shadow Realms support by default (r290119)
  • Implemented Temporal.PlainDate behind a flag: __XPC_JSC_useTemporal=1 (r290209)
  • Optimized JSString’s atomization (r289359)

Shared Workers

  • Added support for sharing Shared Workers (including across WebProcesses) (r289247)
  • Changed to fail synchronously when constructing a SharedWorker with a URL that is not same-origin (r289532)
  • Fixed self.location.href in Shared Workers in case of redirects (r289483)


  • Changed worker scripts to always be decoded as UTF-8 (r289489)
  • Fixed WorkerGlobalScope.importScripts() to protect blob URLs that were passed in until the imports are done (r289236)
  • Fixed MIME type check for classic worker script fetches (r289672)
  • Fixed exceptions to be properly reported when initializing a worker as a module (r289479)

Dialog Element

  • Fixed the Dialog element only animating once (r289498)
  • Exposed the correct role, subrole, and role description properties for the <dialog> element (r289713)


  • Added support for both versions of ScreenCaptureKit API (r289547)
  • Changed to use the system window and screen picker when available (r289696, r289701)
  • Fixed settling a fetch promise to be delayed in case the page is entering page cache (r289533)
  • Optimized DOM storage event dispatch (r290223)

Experimental Model Element

  • Improved sizing on macOS (r289495)
  • Made standalone model documents interactive (r289666)

Web Extensions

  • Added support for the browser.action.openPopup() and browser.browserAction.openPopup() API to open the extension popup for a specific window (this is a WECG proposal)
  • Added support for the optional_host_permissions manifest key in manifest_version 3 extensions (this is a WECG proposal)
  • Added support for browser.runtime.getFrameId() so it easier to get frame identifiers from content scripts (this is a WECG proposal)
  • Added support for the frameId option that can be passed to browser.tabs.sendMessage()
  • Fixed the number returned by parentFrameId for webNavigation and webRequest events to be -1 when it is the main frame
  • Fixed devtools.panels.onShown so the window object of the panel is sent to the listeners
  • Fixed devtools.panels.onShown to prevent it from firing multiple times per active panel change
  • Made the devtools API namespace only exposed to the devtools background pages