What’s new in Chromium 62 and Opera 49

Opera 49 (based on Chromium 62) for Mac, Windows, Linux is out! To find out what’s new for users, see our Desktop blog post. Here’s what it means for web developers.

Network Quality Estimator API

There are times when a web page want to adapt to the user’s network. To help a web page with that information there is now the Network Information API which can give a rough indication of the user’s network, including bandwidth and round-trip time.

This is still under development but the parts that exist today, rtt, effectiveType and downlink, should be enough for most use cases.

The plan is that these signals will also become available as HTTP request headers and enabled via Client Hints.

OpenType Variable Fonts

Previously a font file could only contain one weight/variant of a font. So you had one file for bold, one file for semi-bold, one for stretched, one for normal and so on. With OpenType Font Variations you can combine those variants efficiently in a single file. This should allow web pages to be smaller and load faster than before, while also giving them access to an infinite number of font variants (not that I recommend using more than a few in a page).

Animated font-variants

Animation based on Amstelvar and Decovar

Stretch, style, and weight can be adjusted by giving a numerical value to respective CSS property, or by setting the font-variation-settings CSS property.

Media Capture from DOM Elements

It is now possible to stream animations directly from a canvas or video element to anything that can handle a stream. Previously it was only possible to stream from capture hardware on the computer.

Through the W3C Media Capture from DOM Elements API you can call captureStream() on any HTMLMediaElement and send it to another video element or stream it remotely through WebRTC. Or process or manipulate it in other ways.

Other web platform features in this release

  • DOM interfaces are now supported for <data> and <time>. We used to have support for the time element but it has been missing for a while. This gives web developers a standardized way to store machine-readable data.
  • The CSS color parser now supports 8- and 4-digit hex colors of the format #RRGGBBAA and #RGBA.
  • ECMAScript regular expressions have been expanded to support lookbehind assertions in addition to lookaheads. This can for instance be used to match a dollar price without capturing the dollar sign.
  • It is now possible to use the s flag to enable dotAll mode in ECMAScript regular expressions, making “.” match any character, including line terminators.
  • Loosened restrictions on escape sequences in ECMAScript template literals makes it possible to use template tags more. For instance for LaTeX processing.
  • Apps using the MediaSource API can now more effectively customize their HTMLMediaElement.seekable range logic using the new Media Source Extensions APIs, setLiveSeekableRange and clearLiveSeekableRange.
  • Media Source Extensions now support FLAC, a lossless audio coding format, in mp4 ISO-BMFF.
  • The visibility:collapse CSS declaration now hides table rows without losing track of the required column width.

Deprecations and interoperability improvements

  • The ability to request permission to show notifications has been removed over HTTP connections and within cross-origin iframes, in line with the Chromium policy on restricting powerful features to only HTTPS.
  • The base language is now added immediately after language+region when generating accept-language headers from language settings to make it more likely users receive content in the language they expect.
  • To make web pages more responsive, transitional mouse events will now be dispatched and hover states updated more quickly after the layout has been modified. This will reduce the differences between different web browsers.
  • In line with other browsers, the getStreamById method on RTCPeerConnection has now been removed.
  • SharedWorker.workerStart has been removed, following its deprecation and removal from other major browsers.
  • To better conform to spec, the default value of <ol>.start has been set to 1.

What’s next?

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.