News and developments from the open source browser project
Chrome 60 Beta: Paint Timing API, CSS font-display, and Credential Management API improvements
Tuesday, June 13, 2017
Unless otherwise noted, changes described below apply to the newest Chrome Beta channel release for Android, Chrome OS, Linux, Mac, and Windows.
Paint Timing API
While no generalized metric perfectly captures when a page is loaded in all cases, First Paint and First Contentful Paint are invaluable numbers to measure critical user moments during loading. To give developers better insight into their site’s loading performance, the new Paint Timing API exposes metrics that capture First Paint and First Contentful Paint.
Screen Shot 2017-06-08 at 8.57.03 AM.png
Stills of a First Paint and First Contentful Paint for Google.com, from “Web Performance: Leveraging the Metrics that Most Affect User Experience” at Google I/O 2017
Downloadable web fonts are often used to create more visually rich web experiences. Historically, Chrome has delayed rendering text until the specified font is available, to ensure visual correctness. However, downloading a font can take as long as several seconds on a poor connection, significantly delaying the time until a user sees content. Chrome now supports the CSS @font-face descriptor and corresponding font-display property, allowing developers to specify how and when Chrome displays text content while downloading fonts.
Credential Management API improvements
In response to developer feedback and to make the Credential Management API easier to use for all sites, the need for a custom fetch() to access the stored password is now deprecated. Starting in Chrome 60, the user’s password will now be returned directly as part of the PasswordCredential.
In addition, we’ve made a series of changes to better align with the work being done in the Web Authentication Working Group. This includes the deprecation of requireUserMediation, which has been renamed to preventSilentAccess.
Other features in this release
The Payment Request API is now supported on desktop versions of Chrome.
Sites can now collect payments through native Android payment apps using the Payment Request API.
Object rest & spread properties are now supported, making it simpler to merge and shallow-clone objects and implement various immutable object patterns.
The new Web Budget API enables sites with the Push Notification permission to send a limited number of push messages that trigger background work such as syncing data or dismissing notifications the user has handled on another device, without the need to show a user-visible notification.
The new Web Push Encryption format is now supported and PushManager.supportedContentEncodings can be used to detect where it can be used.
PushSubscription.expirationTime is now available, notifying sites when and if a subscription will expire.
To improve performance and predictability, pointermove and mousemove events are now delivered once per AnimationFrame, matching the current functionality of scroll and TouchEvents.
The :focus-within CSS pseudo-class is now available, affecting any element the :focus pseudo-class affects, as well as any element with a descendant affected by :focus.
The CSS frames timing function is now available, making it useful for animation loops where the animation should display all frames for exactly the same length, including its first and last frames.
To provide an enriched way to capture editing actions, InputEvent now allows user input to be managed by script, enhancing the details provided to editable elements.
To increase security, a BeforeUnload dialog triggered when the user leaves a site will now only be shown if the frame attempting to display it has ever received a user gesture or user interaction, though the BeforeUnloadEvent will still be dispatched regardless.
VP9, an open and royalty-free video coding format, can now be used with the MP4 (ISO BMFF) container and requires the new VP9 string format mentioned below.
A new VP9 string format is now available and accepted by various media-related APIs, enabling developers to describe the encoding properties that are common in video codecs, but are not yet exposed.
Deprecations and interoperability improvements
getElementsByTagName() now accepts qualified names in response to an update to the DOM specification.
/deep/ now behaves like the descendant combinator, which is effectively a no-op.
To improve user experience, calls to Navigator.vibrate() now immediately return false if the user hasn’t explicitly tapped on the frame or any embedded frame, matching existing behavior for cross-origin iframes.
WEBKIT_KEYFRAME_RULE and WEBKIT_KEYFRAMES_RULE have been removed in favor of the unprefixed standardized APIs, KEYFRAME_RULE and KEYFRAMES_RULE.
Support for non-standard WebKitAnimationEvent and WebKitTransitionEvent has been removed from document.createEvent().
RTCPeerConnection.getStreamById() is being removed, and a polyfill is recommended as a replacement.
SVGPathElement.getPathSegAtLength() has been deprecated as it has been removed from the SVGPathElement spec.
Headers.prototype.getAll() has been removed from the Fetch API in line with its removal from the spec.
Posted by Shubhie Panicker, Paint Timing Promoter
Share on Google+ Share on Twitter Share on Facebook
Google Privacy Terms