January 22nd, 2018
Dynamic module imports
Async iterators and generators
Asynchronous iteration is made more convenient with the addition of asynchronous generator functions
and the asynchronous iteration protocol
Device Memory API
Using the new Device Memory API developers can estimate the total amount of RAM on the device. This information could be used to deliver a suitably scaled version of the site to lower-end devices, or help put collected performance data into context to better understand the behavior of a web application.
Other web platform features in this release
Blink > CSS
- Developers can now make pixel-level adjustments using the new Q length unit, which is especially useful on small viewports.
Blink > Fonts
- font-variant-east-asian is now supported, allowing developers to control the usage of alternate glyphs for East Asian languages like Japanese and Chinese.
Blink > HTML
- To improve interoperability, Opera will fire
afterprintevents as part of the printing standard, allowing developers to annotate the printed copy and edit the annotation after the printing command is done executing.
Promise.prototype.finally(), a callback can now be registered to be invoked after a
Promisehas been either fulfilled or rejected.
Intl.PluralRulesAPI allows developers to build applications that understand pluralization of a given language by indicating which plural form applies for a given number and language.
Blink > MediaStream
MediaStreamTrack.applyConstraints()is now supported for local video
MediaStreamTracks, including tracks obtained from
getUserMedia(), capture from media elements or screen capture.
Blink > Network
- Version 2 of NT LAN Manager (NTLM) API is now shipped, enabling applications to authenticate remote users and provide session security when requested by the application.
Blink > Storage
- The localStorage and sessionStorage APIs now use
getItem()rather than an anonymous getter, so attempting to access a key using
getItem()will now return
undefined. Thanks to Intel for the contribution!
- To improve developer experience, the methods on sessionStorage and localStorage such as
clear()are now enumerable. Thanks to Intel for making this happen!
Deprecations and interoperability improvements
Blink > Bindings
- To improve interoperability, a TypeError is now thrown by
EventTarget.removeEventListener()when the callback argument is not an
- Also to improve interoperability, instance properties with a
Promisetype now return a rejected promise instead of throwing an exception when the property access fails.
Blink > CSS
>>>selector, as well as
::shadow, are now removed from CSS dynamic profile, following their deprecation in Opera 32 / Chromium 45.
Blink > DOM
- To improve interoperability,
HTMLOptionsCollectionare no longer enumerable, so they are now left out of calls to
If you’re interested in experimenting with features that are in the pipeline for future versions of Opera, we recommend following our Opera Developer stream.