Release Notes for Safari Technology Preview 46

Safari Technology Preview Release 46 is now available for download for macOS Sierra and macOS High Sierra. If you already have Safari Technology Preview installed, you can update from the Mac App Store’s Updates tab. This release covers WebKit revisions 225266-225841.

Service Workers

Offline applications are important to the web. After HTML5 first tried to accommodate them with the Offline Application Cache, the Service Workers specification was created as a successor.

This standard describes new APIs focused on using JavaScript to handle resource loading for a web page without network access. While work continues, we’re excited to enable Service Workers by default in this release. Please test our implementation with your websites and send us feedback using the WebKit project bug tracker.

  • Made Service Workers enabled by default (r225789)
  • Exposed self.registration inside Service Workers (r225296)
  • Removed HTTP headers added by CachedResource and CachedResourceLoader in Service Worker fetch (r225574)
  • Rejected promises in the ServiceWorkers API when calling objects inside of detached frames (r225577)
  • Yielded image content from a CacheStorage.add(url) network request (r225708)
  • Changed the Fetch event header filtering to only apply in CORS-mode (r225809)
  • Handled self.skipWaiting() inside Service Workers (r225460)
  • Removed XMLHttpRequest from being exposed to Service Workers (r225549)
  • Implemented clients.get() and clients.getAll() (r225427, r225452)
  • Supported container.register() and registration.unregister() inside Service Workers (r225456)
  • Targeted the Service Worker’s scope URL for remote inspection metadata (r225633)
  • Made navigation requests to use navigate fetch mode (r225796)
  • Activated IndexedDB and Web Sockets in Service Workers (r225644)
  • Supported container.getRegistration() and container.getRegistrations() inside Service Workers (r225513)
  • Added support for serviceWorker.postMessage() and serviceWorkerRegistration.update() inside of Service Workers (r225462, r225455)
  • Added support for the Service Worker client unloading algorithm (r225483)
  • Added support for FetchEvent.clientId (r225294)
  • Addressed various issues inspecting Service Workers (r225709)
  • Included support for Service Worker generated redirections (r225297)
  • Populated self.registration.installing, self.registration.waiting, and inside Service Workers (r225341)

Security UI

  • Added a warning in the Smart Search field when interacting with password or credit card forms on non-secure pages


  • Froze the user-agent string to reduce web compatibility risk and to prevent its use for fingerprinting


  • Fixed small or clipped controls caused by scale() transforms on <video> elements (r225495, r225521)
  • Clamped automatic minimum size in CSS grid if the min() track sizing function is auto (r225776)
  • Implemented alignment for absolute positioned CSS grid items (r225805)


  • Fixed an often blank <object type="image/svg+xml" data="foo.svg"> in an HTML-page (r225791)
  • Fixed missing layer content when animating elements on-screen (r225310)
  • Implemented transferToImageBitmap for WebGL offscreen canvas objects (r225706)
  • Prevented viewport unit values from being affected by zooming with ⌘- or ⌘+ (r225277)

Storage Access API

  • Implemented frame-specific access in the network storage session layer (r225827)
  • Made document.hasStorageAccess a function and always allow access for same-origin iframes (r225583, r225586)

Web Inspector

  • Made Computed a top-level sidebar panel in the Elements tab (r225547)
  • Added the ability to filter rules and add new style rules in the redesigned Styles sidebar (r225571, r225569)
  • Added display of related pseudo-elements in the Styles sidebar (r225572)
  • Changed the behavior of pressing delete in an empty value field of a newly added property to focus on the name field in the Styles sidebar (r225570)
  • Fixed CSS properties not being removed in the Styles sidebar after deleting their values (r225839)
  • Fixed details section headers overlapping the Classes container in the Computed Styles panel (r225595)
  • Fixed adding a new property after a property without trailing semicolon in the Styles sidebar (r225299)
  • Prevented adding a property before or after the first property from becoming appended to the end in the Styles sidebar (r225568)
  • Fixed the filter bar in the Console tab sometimes not appearing and cases where clear console doesn’t always work (r225280)
  • Fixed content views for resources loaded through XHR and Fetch to reflect the declared MIME-type (r225546)
  • Fixed the Remote Web Inspector window to restore the last used window size (r225451)
  • Fixed spurious warnings shown for commands that changed pixel contents in the Canvas tab (r225602)
  • Improved the initial user interface experience in the Canvas tab (r225587, r225487)
  • Fixed an issue that caused Safari to hang after toggling “Allow Web Inspector” setting on an attached iOS device.

Web Assembly

  • Fixed postMessage to allow a WebAssembly module to postMessage to and from an iframe (r225656)
  • Fixed a bug where we would incorrectly throw stack overflow errors (r225411)

Web Driver

  • Added support for handling user prompts shown while executing scripts (r225448)
  • Fixed link and partial links queries to work in XHTML documents (r225388)
  • Fixed computeElementLayout to correctly translate iframe client coordinates to main frame coordinates (r225367)
  • Fixed a regression that causes page screenshots to only contain the viewport (r225501)
  • Fixed an issue where safaridriver would quit after trying to close a window when no windows remain open


  • Corrected the recursive tail call optimisation on closures (r225270)
  • Implemented BigInt literals and JSBigInt (r225799)
  • Implemented a more optimized WeakMap and WeakSet (r225832)
  • Optimized Object.assign by single transition acceleration (r225840)


  • Added support for the decoding="sync" or decoding="async" attribute on images (r225616)
  • Enabled use of the VCP H264 encoder for platforms that support it (r225761)
  • Fixed the cursor not becoming visible after exiting full screen video (r225494)
  • Included "video/*" in image request Accept header if the browser supports video media in image contexts (r225472)


  • Changed to allow AudioContext to start when getUserMedia is on (r225785)
  • Fixed an issue where getUserMedia is resolving before the document knows it is capturing (r225828)
  • Prevented the display from going to sleep when playing WebRTC video tracks (r225822)