Google has launched Chrome 59 for Windows, Mac, and Linux. Among the additions are native notifications on macOS, settings being revamped to follow Material Design, the Image Capture API, Headless Chrome, and more service worker improvements. You can update to the latest version now using the browser’s built-in silent updater or download it directly from google.com/chrome.

Chrome is arguably more than a browser: With over 1 billion users, it’s a major platform that web developers have to consider. In fact, with Chrome’s regular additions and changes, developers have to keep up to ensure they are taking advantage of everything available.

Chrome 59 supports the macOS notification system. This means that when developers send notifications via the Notifications API or chrome.notifications, they will be shown directly by the macOS native notification system. Some low-usage API features are now discouraged since they result in a degraded experience on macOS, so if you build apps and sites with notifications you may want to check out the migration guide.

Next up, Chrome’s settings page has been updated to follow Google’s Material Design language. This is purely a cosmetic change, but nevertheless the browser now looks more like the rest of Google’s apps and services.

The Image Capture API allows vsites to take higher resolution images than before. That means developers get full control over camera settings such as zoom, ISO, and white balance.

Headless Chrome allows running Chrome in an automated environment without a user interface or peripherals. This is great for such use cases as automating unit tests with Selenium and converting a web page into a PDF.

Lastly, the Navigation Preload API lets the browser preload navigation requests while a service worker is starting up. These requests are started before executing the fetch event handler in the service worker intercepting the target URL, giving the worker access to the preload response inside the fetch event handler and allowing it to handle the navigation with minimal delay.

Other developer features in this release include:

  • Developers can now use MediaError.message to obtain greater detail about a MediaError produced by <audio> or <video>.
  • WritableStreams are now available as part of the vStreams API for processing streams of data, while providing a standard abstraction for writing streaming data to a sink with built-in vbackpressure and queuing.
  • The vStreams API has been expanded with the ability to pipe between ReadableStreams and WritableStreams via the pipeTo() and pipeThrough() methods, allowing easier consumption of streaming data.
  • Developers can now use the vgetInstalledRelatedApps function to smartly consolidate push notifications between related web and native apps by suggesting when and on which platform to offer them.
  • To provide enhanced privacy, CSS stylesheets can now specify their own vreferrer policy via the HTTP header, rather than always inheriting the referrer policy of the document that originally referenced it.
  • To avoid over-prompting users, Chrome will now vtemporarily stop an origin from requesting a permission following the third dismissal of that permission request.
  • vTouch events are now aligned to requestAnimationFrame, ensuring that input is processed as part of the document lifecycle and creating a more efficient and adaptive input response.
  • The new worker-src Content Security Policy directive restricts which URLs may be loaded as a Worker, SharedWorker, or ServiceWorker.

If you prefer a visual rundown, here’s the video version (note that there are also features specific to Chrome 59 for Android, which isn’t out just yet):

Chrome 59 also implements 30 security fixes. The following ones were found by external researchers:

  • [$7500][722756] High CVE-2017-5070: Type confusion in V8. Reported by Zhao Qixun(@S0rryMybad) of Qihoo 360 Vulcan Team on 2017-05-16
  • [$3000][715582] High CVE-2017-5071: Out of bounds read in V8. Reported by Choongwoo Han on 2017-04-26
  • [$3000][709417] High CVE-2017-5072: Address spoofing in Omnibox. Reported by Rayyan Bijoora on 2017-04-07
  • [$2000][716474] High CVE-2017-5073: Use after free in print preview. Reported by Khalil Zhani on 2017-04-28
  • [$1000][700040] High CVE-2017-5074: Use after free in Apps Bluetooth. Reported by anonymous on 2017-03-09
  • [$2000][678776] Medium CVE-2017-5075: Information leak in CSP reporting. Reported by Emmanuel Gil Peyrot on 2017-01-05
  • [$1000][722639] Medium CVE-2017-5086: Address spoofing in Omnibox. Reported by Rayyan Bijoora on 2017-05-16
  • [$1000][719199] Medium CVE-2017-5076: Address spoofing in Omnibox. Reported by Samuel Erb on 2017-05-06
  • [$1000][716311] Medium CVE-2017-5077: Heap buffer overflow in Skia. Reported by Sweetchip on 2017-04-28
  • [$1000][711020] Medium CVE-2017-5078: Possible command injection in mailto handling. Reported by Jose Carlos Exposito Bueno on 2017-04-12
  • [$500][713686] Medium CVE-2017-5079: UI spoofing in Blink. Reported by Khalil Zhani on 2017-04-20
  • [$500][708819] Medium CVE-2017-5080: Use after free in credit card autofill. Reported by Khalil Zhani on 2017-04-05
  • [$N/A][672008] Medium CVE-2017-5081: Extension verification bypass. Reported by Andrey Kovalev (@L1kvID) Yandex Security Team on 2016-12-07
  • [$N/A][721579] Low CVE-2017-5082: Insufficient hardening in credit card editor. Reported by Nightwatch Cybersecurity Research on 2017-05-11
  • [$N/A][714849] Low CVE-2017-5083: UI spoofing in Blink. Reported by Khalil Zhani on 2017-04-24
  • [$N/A][692378] Low CVE-2017-5085: Inappropriate javascript execution on WebUI pages. Reported by Zhiyang Zeng of Tencent security platform department on 2017-02-15
  • [729639] Various fixes from internal audits, fuzzing and other initiatives

Google thus spent at least $23,500 in bug bounties for this release. As always, the security fixes alone should be enough incentive for you to upgrade.

Google releases a new version of its browser every six weeks or so. Chrome 60 will arrive by mid-July.

Update on June 7: Chrome 59 for Android is out today; it is rolling out slowly on Google Play. The changelog states the updated JavaScript engine loads pages faster and uses less memory.