Release Notes for Safari Technology Preview 91

Safari Technology Preview Release 91 is now available for download for macOS Mojave and the macOS Catalina beta. 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 248705-249190.


  • Disabled legacy TLS 1.0 and TLS 1.1 (r249019)

JavaScript API

  • Added a public API for unhandled promise rejections (r249058)
  • Added support for hashbang in ESNext (r248826)
  • Implemented optional chaining in ESNext (r248829)
  • Implemented StaticRange constructor (r249079)
  • Fixed Date.prototype.toJSON to not throw an exception if toISOString returns an object (r248876)
  • Fixed more missing exception checks in String.prototype (r248716)
  • Fixed a bad error message when for-await-of is used in a non-async function (r248711)
  • Fixed ProxyObject to not allow access to its target’s private properties (r248796)
  • Updated the Promise constructor to check argument before `Construct?“ (r248787)
  • Updated Promise.prototype.finally to accept non-promise objects (r248793)

JavaScript Performance

  • Changed to avoid looking up the join function each time Array.prototype.toString is called (r248906)
  • Ensured x?.y ?? z is fast (r249117)


  • Fixed firing webkitpresentationmodechanged twice when exiting picture-in-picture (r249141)
  • Updated to stop MediaDevices timer when stopping MediaDevices (r248853)
  • Fixed removing fullscreen element in a requestAnimationFrame() callback after requestFullscreen() leaving fullscreen in an inconsistent state (r249147)
  • Disabled devices should not be taken into account when searching for a capture device (r249154)


  • Started to expose Geolocation interfaces (GeolocationPosition, GeolocationPositionError, and GeolocationCoordinates) on the global Window object (r249066)
  • Fixed Emoji with variation selectors to be rendered in emoji style, not text style (r248815)
  • Changed SVG elements to become focusable when focus and key event listeners are added (r248983)
  • Changed the default tab index of output and fieldset to be -1 (r248914)


  • Fixed drawing an animated image to a canvas via drawImage to draw the first frame (r249162)

Pointer Events

  • Fixed removing the capture element preventing future pointer events from being dispatched on macOS (r248855)


  • Fixed mouse buttons to be correctly printed in SimulatedInputDispatcher logging (r248715)

Web Inspector

  • Elements
    • Fixed issue where “Copy Rule” menu item copied commented out properties incorrectly (r249089)
    • Changed to automatically enable the event listener when setting a breakpoint on it in the Node details sidebar (r248765)
    • Changed the DOM tree to always be LTR, even in RTL mode (r248991)
  • Network
    • Changed the Headers pane to always be LTR, even in RTL mode (r248889)
  • Resources
    • Added syntax highlighting for more CSS media queries (r248810)
    • Added syntax highlighting for JavaScript BigInt (r248898, r248908)
    • Added pretty printing support for more modern JavaScript language features (r248760, r248785, r248922, r248923)
    • Fixed a CodeMirror issue where tabs were still used even when the “Prefer indent using” setting is set to “Spaces” (r248739)
  • Debugger
    • Added a global breakpoint for pausing in the next microtask (r248894)
    • Fixed an issue where the Assertion Failures breakpoint didn’t work when inspecting a JSContext (r248891)
  • Console
    • Implemented queryHolders Command Line API function (r248925)
    • Updated console.dir to start out expanded when given an object (r249034)
    • Created additional Command Line API functions for other console methods (r249078)
    • Changed the Console to always be LTR, even in RTL mode (r248766)
  • Sources (Experimental)
    • Fixed an issue where the gear icon would move to the second line when the navigation sidebar is narrow (r248818)
    • Fixed an issue where the “No Filter Results” message was displayed on top of all of the other content, preventing any interaction (r248737)
    • Gave Origins their own icon in the navigation sidebar (r248912)
    • Moved the resource type scope bar to be next to the filter in the navigation sidebar (r248916, r248940)
    • Provided a way to create an arbitrary Inspector Style Sheet (r248753)
  • Layers (Experimental)
    • Fixed the background of the 3D area not updating when transitioning to/from Dark Mode (r248735)


  • Added unary plus (r248756)
  • Changed enums to not be shadowed by local variables (r248812)
  • Fixed WebGPU layers not showing up sometimes (r248879)
  • Implemented GPUErrors for and relax GPUBuffer validation rules (r249183)
  • Made operator== native and added bool matrices (r248795)
  • Updated matrices to have constructors that take a flattened list of scalars (r248754)
  • Updated vertex shader and fragment shader to be able to come from two different programs (r248993)