Unless otherwise noted, changes described below apply to the newest Chrome Beta channel release for Android, Chrome OS, Linux, Mac, and Windows.
Push notification improvements
Push notifications allow a site to trigger system-level notifications in the same way that native applications do. The initial version of push notifications relied on service workers to proactively fetch the information for a notification from the server. This led to problems when there were multiple messages in flight or when the device was on a flaky network connection. The latest version of Chrome allows sites to include notification data payloads with their push messages to eliminate the final server check. To protect user privacy, push notification payloads must be encrypted. Push notification payloads are part of the Push API spec and already supported in Firefox.
In addition to payloads, sites can now detect when a notification is closed by the user, enabling better analytics and allowing cross-device notification dismissal. Sites can also control the look of notifications more finely, setting custom timestamps and icons for notification actions. When updating a notification, sites can specify whether the device should alert the user with sound or vibration, or remain silent.
In Chrome 50, notification actions support custom icons.
Declarative preload
Sometimes there are resources needed to fully display a page that Chrome doesn’t know about until other resources are loaded. For example, a large JavaScript file may require a particular stylesheet, but Chrome doesn’t know to load the CSS until the JavaScript has run. Chrome now supports the <link rel='preload'> attribute, allowing developers to specify resources that should be downloaded preemptively and reducing the time to get meaningful content in front of users.
Chrome 50 (left) loading a page with preload vs. Chrome 49 (right) loading the page without.
Other features in this release
HTMLMediaElement.play() now returns a promise, allowing sites to react more easily if automatic playback fails.
Sites can process the image stored in a canvas element as a blob file using HTMLCanvasElement.toBlob().
Chrome supports the creation of ImageBitmap objects, which can be quickly and asynchronously written to a canvas element.
Absolute device orientation can be accessed via AbsoluteDeviceOrientation while DeviceOrientation now returns relative values that don’t use the magnetometer, preventing drift caused by nearby metallic objects when tracking head motion in VR.
The DOMTokenList supported tokens feature now enables developers to detect sandbox options or link relations on elements.
The FormData object, which allows programmatic creation of web form data, now allows sites to inspect and modify data in addition to writing values.
Developers can now use the ES2015 Unicode regex flag u, as well as the regex well-known symbols @@match, @@replace, @@search, and @@split, for better control over regular expression matching.
Sites can now buffer audio and video streams without gaps using the SourceBuffer.mode attribute and the 'sequence' option.
Presentation connections can be managed more robustly with PresentationConnectionCloseEvent and PresentationConnectionCloseReason instead of the deprecated PresentationConnection.onStateChange.
Sites can now control the first focus target when the user presses tab or shift-tab while nothing is focused.
To improve Web Animation spec compliance, Cancel events and Animation.id are now supported, pause() uses a pause state instead of idle, and dashed-names as keys in keyframes have been deprecated.
Parameter automation of Web Audio BiquadFilter nodes is now evaluated every sample frame, rather than once every 128 frames, making resonant filter sweeps smoother.
- Chrome no longer supports TLS version fallbacks, which allowed attackers to force all sites to use an older version of TLS.
- Chrome no longer supports geolocation services over non secure connections.
Minor changes
Chrome now supports the X25519 curve for TLS, allowing faster, simpler encryption.
-webkit-background-composite has been removed since it was nonstandard and had low usage.
The SVGZoomEvent, which was a no-op in Chrome, has been deprecated to improve spec compliance.
The RTCPeerConnection methods createOffer() and createAnswer() have been deprecated to enable promise-based implementations.
<link rel='subresource'> has been deprecated in favor of <link rel='preload'>, as described above.
XMLHTTPRequestProgressEvent has been removed in favor of ProgressEvent to improve spec compliance.
The Document.defaultCharset attribute has been removed to improve spec compliance.
KeyboardEvent.prototype.keyLocation has been removed in favor of KeyboardEvent.prototype.location, which is supported across more browsers.
- The SVGElement.offset* methods have been removed from all elements except HTMLElement to improve spec compliance.
Posted by Peter Beverloo and Nicolás Satragno, Notification Knights