Deprecations and Removals in Chrome 70
Remove AppCache from insecure contexts
When used over insecure contexts, AppCache potentially allows persistent online and offline cross-site scripting attacks. This is a serious escalation from regular cross-site scripting.
To mitigate this threat, AppCache is now only supported on origins that serve over HTTPS.
Developers looking for an alternative to AppCache are encouraged to use service workers. An experimental library is available to ease that transition.
Remove anonymous getter for HTMLFrameSetElement
The anonymous getter for
HTMLFrameSetElement is non-standard and therefore being removed. This feature was added 13 years ago to resolve a compatibility issue that then existed, but now does not. Because this is a non-standard feature no alternatives are available. Usage is low enough that we do not expect this to be a problem.
Deprecate and remove Gamepads.item()
item() accessor is removed from the
Gamepads array. This change improves compatibility with Firefox which is so far the only browser to implement
Deprecate Custom Elements v0
Custom Elements are a Web Components technology that lets you create new HTML tags, beef up existing tags, or extend components authored by other developers. Custom Elements v1 have been implemented in Chrome since version 54, which shipped in October 2016. Custom Elements v0 was an experimental version not implemented in other browsers. As such it is now deprecated with removal expected in Chrome 80, around February 2020.
Deprecate HTML Imports
HTML Imports allow HTML to be imported from one document to another. This feature was part of the early experimental version of Web Components not implemented in other browsers. As such it is now deprecated with removal expected in Chrome 73, around April 2019. Sites depending on HTML imports already require a polyfill on non-Chromium browsers. When HTML imports is removed, sites that have the polyfill should continue to work on Chrome.
Deprecate Shadow DOM v0
Shadow DOM is a Web Components technology that uses scoped subtrees inside elements. Shadow DOM v1 has been implemented in Chrome since version 53, which shipped in August of 2016. Shadow DOM v0 was an experimental version not implemented in other browsers. As such it is now deprecated with removal expected in Chrome 73, around April 2019. Sites depending on Shadow DOM v0 already require a polyfill on non-Chromium browsers. When HTML imports is removed, sites that have the polyfill should continue to work on Chrome.
Deprecate SpeechSynthesis.speak() without user activation
SpeechSynthesis interface is actively being abused on the web. There's anecdotal evidences that because other autoplay avenues are being closed, abuse is moving to the Web Speech API, which doesn't follow autoplay rules.
speechSynthesis.speak() function now throws an error if the document has not received a user activation. Removal is expected in Chrome 71, some time in late November.
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.