Opera 37 has just been added to our cross-browser testing cloud. Opera 37 was released today for Linux, Windows and Mac OSX. This version is based on Chromium 50. You can start cross-browser testing your webapps, JavaScript and designs in Opera 37 already!

Cloud testing in Opera 37

Try Opera 37 in Browserling now!

Updates in Opera 37

Windows XP and Vista support has been dropped

For Opera 37 the minimal system requirement is Windows 7. Windows XP and Vista will no longer receive feature updates, only security and stability updates.

User interface changes

In the start page settings, Opera has introduced an option of removing the PLUS button for adding new sites. All internal internal pages now also have unified look.

Built-in ad blocker makes webpages load faster

Opera 37 adds native ad-blocking technology directly to the browser. Native means that the ad blocking happens at the web engine level, making page loads much faster, while consuming much less memory than extension-based ad blockers.

Video pop out displays video in a floating frame, always on top

Video pop out allows you to shift your video frame to the side of your screen, so you can truly multitask: browse, shop online or do the research without missing out on the video action. You can drag your video around the screen and close it immediately should the need arise. People love watching videos, and we believe this feature will significantly improve the way you experience your favorite video content.

Updated support for the latest Chromium/Blink release, version 50

Opera 37 now supports all features of Chrome 50.

HTMLMediaElement.prototype.play() returns a promise

The play method on <video> or <audio> element instances now returns a promise. If playback succeeds, the promise is fulfilled, and if playback fails, the promise is rejected along with an error message explaining the failure.

Web Animations API updates

This release introduces the following Web Animations API changes to improve interoperability with other browsers and to improve spec compliance: Animation.prototype.id, cancel events, deprecation of dashed names as keys in keyframes (to be removed in the next release), state change for the pause() method.

Presentation API updates

Support for the statechange event on PresentationConnection instances has been removed since it's no longer part of the specification. Events message, connect, close, and terminate are now implemented.

Sequential focus navigation starting point

The sequential focus navigation starting point is how the HTML spec defines where browsers should start to search for focusable areas when pressing Tab or Shift+Tab while there is no focused area. This is now implemented according to the spec.

DOMTokenList validation

You can now programmatically detect support of values for HTML attributes that are backed by DOMTokenList instances in JavaScript. Currently, those HTML attributes are the following: <link rel> relations and <iframe sandbox> directives.

ES6: RegExp Unicode flag

ES6 specifies the u flag which enables more Unicode-friendly features and behavior in regular expressions

CSS column-fill

When using multi-column layouts, the CSS column-fill property indicates whether columns should be balanced or not. If they are balanced, each column gets similar amounts of content inside. If they are not balanced, each column is filled to the height of the multicol container, until all the content is displayed.

<link rel="preload" as="...">

The preload link relation makes it possible to define custom loading logic without suffering the performance penalty that script-based resource loaders incur. It can be combined with the as attribute to signal to the browser what kind of resource is being preloaded. This enables various optimizations that <link rel="prefetch"> and preload's predecessor <link rel="subresource"> don't offer.

X25519 for TLS

Chromium 50 brings support for X25519, the Diffie-Hellman primitive over Curve25519, to TLS. When compared to P-256, the most commonly used curve in TLS today, it admits simpler, faster implementations that are more naturally resistant to side-channels. Servers may negotiate X25519 for ECDH instead of existing curves.

Web Audio API updates

Automations for the BiquadFilter node now run at a-rate (updated every frame) instead of at k-rate (updated every rendering quantum of 128 frames). This change matches the spec.

ES6: more well-known symbols

Five more ECMAScript symbols have been implemented: Function.prototype[Symbol.hasInstance], used in the instanceof operator. RegExp.prototype[Symbol.match], used to brand an object as RegExp-like, and used in String.prototype.match. RegExp.prototype[Symbol.replace], used in String.prototype.replace. RegExp.prototype[Symbol.search], used in String.prototype.search, and RegExp.prototype[Symbol.split], used in String.prototype.split.

FormData updates

The FormData interface provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using XMLHttpRequest or fetch. Previously, FormData objects had a single append() method, and were thus write-only. The spec has now added has(), get(), getAll(), delete(), set(), entries(), keys(), values(), forEach() and Symbol.iterator() methods to allow inspection, iteration, and modification.

Canvas updates

The <canvas> element instances now support the toBlob() method alongside the toDataURL() method. toBlob() is typically more efficient than toDataURL, as it enables you to work with the encoded binary data directly rather than with a Base64-encoded string. The global createImageBitmap() method decodes an image in the background and returns an ImageBitmap which you can draw onto a <canvas> in the same way you would an <img> element, another canvas, or a video.

Bold emoji on OS X

Previously, emoji with font-weight: bold applied to them failed to render in Chromium on OS X. This is now fixed.

Push Notifications on Opera for Android

Opera for Android now supports push notifications.

Deprecated and removed features in Opera 37

  • The WebRTC RTCPeerConnection instance methods createOffer() and createAnswer() now require an error handler as well as a success handler. Previously it was possible to call these methods with only a success handler. This non-standard behavior has been deprecated.
  • Support for <link rel="subresource"> has been removed. It never worked as intended, and no other browser engines implemented it. Use the preconnect, prefetch, preload, or prerender link relations instead, or use a service worker in combination with the Cache API for more fine-grained control.
  • Remove support for SVGElement.offset properties.
  • The SVGElement instance properties offsetParent, offsetTop, offsetLeft, offsetWidth, and offsetHeight has been removed. They are now only supported on HTMLElements, matching the spec. If you need similar functionality for SVG elements, use getBoundingClientRect() instead.
  • The SVG zoom event was never fully implemented in Chromium, causing false positives in feature detection scripts. It has now been deprecated and its removal is planned for Chromium 52 / Opera 39.
  • Error and success handlers required in RTCPeerConnection methods.
  • AppCache deprecated on insecure contexts.
  • Subresource attribute removed from link element.
  • The Geolocation API no longer works on insecure origins. Use HTTPS instead.
  • The XMLHttpRequestProgressEvent interface has been removed, together with the position and totalSize properties. Use the ProgressEvent interface with the loaded and total properties instead.
  • Remove insecure TLS version fallback.
  • Remove KeyboardEvent.prototype.keyLocation.
  • Support for the non-standard -webkit-background-composite CSS property has been removed.
  • Document.defaultCharset is removed.
  • The use of the application cache API on insecure origins has been deprecated and will be removed in a future release. Use HTTPS and service workers instead.
  • Object.observe() has been removed from the ECMAScript spec and is now no longer supported in Chromium. Use the Proxy API to observe objects instead.
  • Support for the insecure TLS fallback mechanism has been removed. This does not remove support for older versions of TLS - it just prevents attackers from downgrading the connection to use outdated, insecure ciphers. If your server is affected by this change, it does not implement TLS correctly. Consider upgrading to TLS 1.2 - all ciphers in prior versions have known problems.
  • Remove prefixed Encrypted Media Extensions.
  • The non-standard KeyboardEvent.prototype.keyLocation alias has been removed. To disambiguate between keys that are on multiple places on a keyboard, like numbers and Enter, use KeyboardEvent.prototype.location instead.
  • Support for document.defaultCharset has been removed.
  • The XMLHttpRequestProgressEvent is no longer supported.

Happy cross-browser testing in Opera 37!