Disallow Synchronous XMLHTTPRequest() in Page Dismissal
Chrome now disallows synchronous calls to XMLHTTPRequest()
during page
dismissal when the page is being navigated away from or is closed by the user.
This applies to beforeunload
, unload
, pagehide
, and visibilitychange
.
To ensure that data is sent to the server when a page unloads, we recommend
sendBeacon()
or Fetch
keep-alive
. For now, enterprise users can use the
AllowSyncXHRInPageDismissal
policy flag and developers can use the origin
trial flag allow-sync-xhr-in-page-dismissal
to allow synchronous XHR requests
during page unload. This is a temporary "opt-out" measure, and we expect to
remove this flag in Chrome 88.
For details about this and the alternatives, see Disallowing synchronous XMLHTTPRequest() during page dismissal.
Intent to Remove | Chrome Platform Status | Chromium Bug
FTP support deprecated
The current FTP implementation in Chrome has no support for encrypted connections (FTPS), nor proxies. Usage of FTP in the browser is sufficiently low that it is no longer viable to invest in improving the existing FTP client. In addition more capable FTP clients are available on all affected platforms.
Chrome 72 removed support for fetching document subresources over FTP and rendering of top level FTP resources. Currently navigating to FTP URLs results in showing a directory listing or a download depending on the type of resource. A bug in Google Chrome 74 and later resulted in dropping support for accessing FTP URLs over HTTP proxies. Proxy support for FTP was removed entirely in Google Chrome 76.
The remaining capabilities of Google Chrome’s FTP implementation are restricted to either displaying a directory listing or downloading a resource over unencrypted connections.
The deprecation timeline is tentatively set as follows:
Chrome 80 (stable in February 2020)
FTP is disabled by default for non-enterprise clients, but may be turned on
using either the --enable-ftp
or the --enable-features=FtpProtocol
command-line flags. Alternatively, it can be turned on using the #enable-ftp
option on chrome://flags.
Chrome 81 (stable in March 2020)
FTP is disabled by default for all Chrome installations, but may be turned on
using either the --enable-ftp
or the --enable-features=FtpProtocol
command-line flags.
Chrome 82 (stable in April 2020)
FTP support will be completely removed.
Intent to Remove | Chrome Platform Status | Chromium Bug
Disallow allow popups during page unload
Pages may no longer use window.open()
to open a new page during unload. The
Chrome popup blocker already prohibited this, but now it is prohibited whether
or not the popup blocker is enabled.
Enterprises can use the AllowPopupsDuringPageUnload
policy flag to allow
popups during unload. Chrome expects to remove this flag in Chrome 82.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Non-origin-clean ImageBitmap serialization and transferring removed
Errors will now be raised when a script tries to serialize or transfer a non-origin-clean ImageBitmap. A non-origin-clean ImageBitmap is one that contains data from cross cross-origin images that is not verified by CORS logic.
Intent to Remove | Chrome Platform Status | Chromium Bug
Protocol handling now requires a secure context
The methods registerProtocolHandler()
and unregisterProtocolHandler()
now
require a secure context. These methods capable of reconfiguring client states
such that they would allow transmission of potentially sensitive data over a
network.
The registerProtocolHandler()
method gives a webpage a mechanism to register
itself to handle a protocol after a user consents. For example, a web-based
email application could register to handle the mailto:
scheme. The corresponding
unregisterProtocolHandler()
method allows a site to abandon its
protocol-handling registration.
Intent to Remove | Chrome Platform Status | Chromium Bug
Web Components v0 removed
Web Components v0 are now removed from Chrome. The Web Components v1 APIs are a web platform standard that has shipped in Chrome, Safari, Firefox, and (soon) Edge. For guidance on upgrading, read Web Components update: more time to upgrade to v1 APIs. The following features have now been removed. This deprecation covers the items listed below.
Custom Elements
Intent to Remove | Chrome Platform Status | Chromium Bug
HTML Imports
Intent to Remove | Chrome Platform Status | Chromium Bug
Shadow DOM
Intent to Remove | Chrome Platform Status | Chromium Bug
Remove -webkit-appearance:button for arbitrary elements
Changes -webkit-appearance:button
to work only with <button>
and <input>
buttons. If button
is specified for an unsupported element, the element has
the default appearance. All other -webkit-appearance
keywords already have
such restriction.
Intent to Remove | Chrome Platform Status | Chromium Bug
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 chromestatus.com 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.