Skip to main content

Safari Technology Preview 46 brings Service Workers to Apple’s browser

Apple’s developer-centric Safari Technology Preview sees an update today to version 46. Along with expected bug fixes, the browser release is the first from Apple to enable Service Workers by default.

Service Workers allow developers to build out flexible web applications that live outside the confines of the browser. For example, a service worker could be used on a site to account for offline network activity. Instead of being shown a blank page, a service worker could cache data for offline browsing. Service workers also open the door for webpage push notifications and background data synchronization.

Service workers could find their way onto iOS devices in the future, opening up the web for a whole new range of possibilities. Already available on Android, some sites have begun to take advantage of service workers to provide browser-based push notifications.

Safari Technology Preview 46 also introduces a new security warning for password and credit card forms being filled out on insecure pages.

The latest update is now available in the Mac App Store.

The full release notes are available below:

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 self.registration.active 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

Privacy

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

CSS

  • 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)

Rendering

  • 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

JavaScript

  • 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)

Media

  • 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)

WebRTC

  • 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)

Check out 9to5Mac on YouTube for more Apple news:

FTC: We use income earning auto affiliate links. More.

You’re reading 9to5Mac — experts who break news about Apple and its surrounding ecosystem, day after day. Be sure to check out our homepage for all the latest news, and follow 9to5Mac on Twitter, Facebook, and LinkedIn to stay in the loop. Don’t know where to start? Check out our exclusive stories, reviews, how-tos, and subscribe to our YouTube channel