Chrome Dev Summit is back! Visit to secure your spot in workshops, office hours and learning lounges!

API Deprecations and Removals in Chrome 51

In nearly every version of Chrome we see a significant number of updates and improvements to the product, its performance, and also capabilities of the web platform.

Deprecation policy

To keep the platform healthy, we sometimes remove APIs from the Web Platform which have run their course. There can be many reasons why we would remove an API, such as:

  • They are superseded by newer APIs.
  • They are updated to reflect changes to specifications to bring alignment and consistency with other browsers.
  • They are early experiments that never came to fruition in other browsers and thus can increase the burden of support for web developers.

Some of these changes will have an effect on a very small number of sites. To mitigate issues ahead of time, we try to give developers advanced notice so they can make the required changes to keep their sites running.

Chrome currently has a process for deprecations and removals of API's, essentially:

  • Announce on the blink-dev mailing list.
  • Set warnings and give time scales in the Chrome DevTools Console when usage is detected on the page.
  • Wait, monitor, and then remove the feature as usage drops.

You can find a list of all deprecated features on using the deprecated filter and removed features by applying the removed filter. We will also try to summarize some of the changes, reasoning, and migration paths in these posts.

In Chrome 51 (April, 2016) there are a number of changes to Chrome.

Remove support for SPDY/3.1

TL;DR: Support for HTTP/2 is widespread enough that SPDY/3.1 support can be dropped.

Intent to Remove | Chromestatus Tracker | Chromium Bug

SPDY/3.1 was an experimental application layer protocol that provided performance improvements over HTTP/1.1. It did this by, for example, connection multiplexing and server push. Many of its features were incorporated into HTTP/2, which was published as an RFC last May. Since HTTP/2 is supported by major servers and clients, it's time to remove SPDY/3.1 from Chrome.

Remove TLS next protocol negotiation (NPN)

TL;DR: As part of deprecation of SPDY, NPN is removed, having previously been replaced with ALPN.

Intent to Remove | Chromestatus Tracker | Chromium Bug

NPN was the TLS extension used to negotiate SPDY (and, in transition, HTTP/2). During the standardization process, NPN was replaced with ALPN, published as RFC 7301 in July 2014. We intend to remove NPN at the same time as the SPDY removal.

Remove custom messages in onbeforeunload dialogs

TL;DR: A window's onbeforeunload property no longer supports a custom string.

Intent to Remove | Chromestatus Tracker | Chromium Bug

A window’s onbeforeunload property may be set to a function that returns a string that is shown to the user in a dialog box to confirm that the user wants to navigate away. This was intended to prevent users from losing data during navigation. Unfortunately, it is often used to scam users.

Starting in Chrome 51, a custom string will no longer be shown to the user. Chrome will still show a dialog to prevent users from losing data, but it's contents will be set by the browser instead of the web page.

With this change, Chrome will be consistent with Safari 9.1 and later, as well as Firefox 4 and later.

Deprecated results attribute for

TL;DR: The results attribute is being deprecated because it's not part of any standard and is inconsistently implemented across browsers.

Intent to Remove | Chromestatus Tracker | Chromium Bug

The results value is only implemented in webkit and behaves highly inconsistently on those that do. For example, Chrome adds a magnifier icon to the input box, while on Safari desktop, it controls how many submitted queries are shown in a popup shown by clicking the magnifier icon. Since this isn't part of any standard, it's being deprecated.

If you still need to include the search icon in your input field then you will have to add some custom styling to the element. You can do this by including a background image and specifying a left padding on the input field.

input[type=search] {
  background: url(some-great-icon.png) no-repeat scroll 15px 15px;

Removal is expected in Chrome 53.