Apple on Wednesday released Safari Technology Preview 142, the latest version of their developer preview web browser. The preview version of Apple’s popular browser offers developers and other interested users the ability to try out features that may or may not, debut in future public release versions of Safari.
Safari Technology Preview release 142 includes bug fixes and performance improvements for Web Inspector, CSS Subgrid, CSS Container Queries, CSS, Web Animations, Rendering, JavaScript, Forms, Shared Workers, Workers, Dialog Element, Web API, Experimental Model Element, and Web Extensions.
Safari Technology Preview release 142 is built on the new Safari 15.4 update included in macOS Monterey, and as such, it includes several Safari 15 features.
The preview is available for both macOS Monterey and macOS Big Sur.
Release 142
Note: Tab Groups do not sync in this release.
Web Inspector
- Elements Tab
- Sources Tab
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
CSS
- 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)
Rendering
- Fixed tab characters and ch units to obey synthetic bold width adjustments correctly (r289609)
Forms
- 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)
JavaScript
- 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)
Workers
- 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)
Web API
- 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
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
While the preview is intended for use by developers and advanced users, in order to provide Apple with feedback on the development of the Safari browser, it can be run side-by-side with the release version of Safari. The app doesn’t require a developer account to download and install. For more information, visit the Safari Technology Preview website.