Apple makes big changes in Safari Technology Preview 5

By

Safari will be kinder to MacBook Pro battery life.
Grab the latest Safari preview now!
Photo: Apple

Apple has rolled out its fifth update for the Safari Technology Preview, making a long list of improvements to things like JavaScript, CSS, and the Web Inspector. The release also bolsters security and stability.

The Safari Technology Preview, which was first released back in March, give developers the opportunity to get their hands on Safari changes and improvements before they rollout to all. Anyone can use it, but it’s not intended for everyday browsing.

The fifth release, which comes just two weeks after the fourth, makes a massive list of improvements. Here’s everything Apple changed and fixed:

JavaScript

  • Corrected the entropy of Math.random() for the first two invocations
  • Corrected sticky RegExp handling when backtracking alternatives with dissimilar match lengths
  • Fixed ES6 site compatibility when Function.name is inferred from property names
  • Sped up ES6 Array iterators between 4x to 6x
  • Made the Object constructor be aware of new.target by storing the target’s prototype to the newly created object’s prototype
  • Fixed calls to getters and setters on super being called with wrong this object
  • Improved error messages for accessing arguments.callee and similar getters in strict mode
  • Made TypedArray.prototype.slice use the byteLength of passed array for memmove

CSS

  • Fixed the cascading order for !important properties in ::slotted and ::host rules correctly
  • Added color-gamut media query support for wide gamut displays
  • Made Web Fonts only download when characters are used in its unicode-range
  • Restored legacy parsing of color attributes with 4 and 8 digits
  • Corrected how transitions behave when auto values are used
  • Unprefixed -webkit-cross-fade()
  • Corrected cross-fade() rendering to match expectations
  • Corrected how prefixed and unprefixed variants in CSSStyleDeclaration are handled
  • Stopped attempting to compute min/max width for replaced elements with no intrinsic size
  • Unprefixed CSS Grid Layout properties
  • Fixed static position for positioned CSS Grid items
  • Corrected parsing when just using span as a grid-line value
  • Implemented CSS Grid auto-repeat computation

Web APIs

  • Started blocking Geolocation API calls on pages served over insecure connections
  • Made NodeList iterable
  • Added support for title attribute tooltips inside Shadow DOM content
  • Stopped retargeting event.target when an event bubbles up from an assigned node to its assigned slot
  • Enabled IndexedDB in Web Worker scripts
  • Fixed IndexedDB transactions so they can’t be committed or aborted twice
  • Started propagating user gesture state across postMessage boundaries
  • Aligned window.scroll(), scrollTo(), and scrollBy() with the CSSOM spec with support for the options argument
  • Made all scrolling height and width values be integral rounded
  • Added support for ArrayBufferView in the CSS Font Loading API

Web Inspector

  • Hook up ShadowChicken in the Debugger tab to properly show tail call deleted frames
  • Made let and const work as expected in Console evaluations
  • Improved organization of the Debugger tab sidebar
  • Added Object Graph view to heap snapshots and removed the Summary view
  • Fixed sites that relied on putting custom properties on console.prototype
  • Improved performance of filtering large timeline recordings
  • Made Inspect Element and element selection work with Shadow DOM nodes
  • Fixed the start times in the Frames timeline data grid
  • Started persisting breakpoints in scripts named via //# sourceURL
  • Fixed the scrollbar covering the last column in data grids when always showing scrollbars
  • Fixed Computed Style so it no longer shows both prefixed and unprefixed variants of properties
  • Made the Call Trees view in the Timelines tab filterable and hide it from views that are not filterable
  • Started showing in-progress message in timeline views that do not show data until the recording finishes
  • Improved performance of the Console when it tries to render thousands of messages at once
  • Fixed filtering by duration in the Frames timeline view
  • Fixed loading of //# sourceMappingURL with a relative URL
  • Improved console.count() to better match other browsers
  • Improved performance of the Timelines tab by profiling Web Inspector with Web Inspector

Media

  • Made media elements not pause right away when removed from the document
  • Started returning a Promise fromHTMLMediaElement.prototype.play()
  • Stopped updating media duration at playback end while seeking

Security

  • Fixed case matching against the path portion of CSP source expression URLs that ends in a forward-slash
  • Corrected a CORS check what was sometimes incorrectly failing for media loads

Networking

  • Stopped restarting a resource preload if there is already one pending for the same URL

Accessibility

  • Media controls are now keyboard accessible along with other Shadow DOM elements

Bug Fixes

  • Fixed large animated GIFs not animating until the last frame on slow networks
  • Fixed Zoom In and Zoom Out on PDF documents

You can download the latest version of the Safari Technology Preview from Apple’s Developer portal.

Newsletters

Daily round-ups or a weekly refresher, straight from Cult of Mac to your inbox.

  • The Weekender

    The week's best Apple news, reviews and how-tos from Cult of Mac, every Saturday morning. Our readers say: "Thank you guys for always posting cool stuff" -- Vaughn Nevins. "Very informative" -- Kenly Xavier.