Today Opera 53 was released for all platforms. We immediately installed it on our cross-browser testing cloud and all developers can begin using it. Opera 53 is based on Chromium 66 and it also includes all developer changes specific to Chrome 66.

Cross-browser testing in Opera 53

Try Opera 53 in Browserling!

New Features in Opera 53

  • Optimization of a tab's display

All Mac users using Opera had a huge issue with tabs. When you opened many tabs it was really hard to navigate through the many tabs opened - they were not that much separated from each other. Opera 53 fixes this by making the separators more visible and by allocating some space between them in the sake of cutting the tab icons a little. Also clicking on a tab will expand it more.

  • Address bar colors

Nothing much to say about this renovation, just a little color here and there and the address bar is better-looking in overall.

New Developer Features in Opera 53

  • New ImageBitmap rendering context for <canvas>.
  • CSS Typed Object Model.
  • Asynchronous clipboard API.
  • AudioWorklet API.
  • To maintain compatibility with other implementations, the add and accumulate keywords will not throw errors. They will soon be supported by Opera.
  • The calc() expression is now supported in media queries.
  • The rgb() and rgba() functions now allow floating point values.
  • The deviceorientation, deviceorientationabsolute and devicemotion events are now by default restricted to top-level documents and same-origin frames, as if the feature policy for those features was set to self.
  • The Request object now supports the keepalive flag, which can be set when constructing the object, and which allows a fetch to continue after the tab is closed.
  • The new AbortSignal and AbortController makes it possible to cancel fetches.
  • Attempting to read from an invalid or non-existing Blob URL now results in a network error instead of a 404 error.
  • The <textarea> and <select> elements now support the autocomplete attribute.
  • Toggling a mutable checkbox now triggers a sequence of three events: click, input and change, in that order. Previously, the input event was not fired.
  • If a page in fullscreen mode uses window.focus() to switch focus to another page, fullscreen mode is exited.
  • The new MediaStreamTrack.getCapabilities() returns a MediaTrackCapabilities object with details about the browser’s capabilities.
  • The Function.prototype.toString() function now returns the function’s source code exactly as it was written, including white-space and comments.
  • JSON is now a syntactic subset of ECMAScript, which allows line separator (U+2028) and paragraph separator (U+2029) characters in string literals.
  • A try/catch statement can now omit the binding parameter. In other words, if the actual exception is not interesting, the short form try { ... } catch { ... } can be used.
  • String.prototype.trimStart() and String.prototype.trimEnd() are now supported for trimming leading and trailing white-space characters from strings, complementing the existing String.prototype.trim(). The non-standard trimLeft()/trimRight() functions remain as aliases for backwards compatibility.
  • Array.prototype.values() is now supported. It returns an iterator over the values at each index in the array.
  • The grid- prefix has been removed from the CSS gutter properties grid-gap, grid-row-gap and grid-column-gap, whose names now become just gap, row-gap and column-gap.
  • The default value is normal for all three. The old names remain as aliases for the new names. The property column-gap already existed as part of CSS Multi-column Layout.
  • Elements with a transform property and with the display property set to table-row, table-row-group, table-header-group, table-footer-group, table-cell or table-caption, are now containing blocks for fixed position elements.
  • The autoplay attribute is now only honored when one of the following conditions are met: 1) The media will play muted or has no audio, 2) The user has interacted with the site in the current session, before loading the page with the media, or, 3) If the user has previously shown an interest in media on the site (on desktop).
  • A service worker can no longer respond to a request whose mode is same-origin with a response whose type is CORS. This is a security measure recently added to the Fetch specification.
  • FetchEvent.clientId returns an empty string instead of null when it isn’t set, which can be the case for instance during a navigation request.
  • The RTCRtpSender object now supports the dtmf attribute, replacing the RTCPeerConnection.createDTMFSender() function, which will be deprecated eventually.

Deprecations and Interoperability Improvements in Opera 53

  • The object-position and perspective-origin properties no longer accept three-part values such as top right 20%. Valid position values must have 1, 2 or 4 parts. This also applies to basic shapes and gradients.
  • ImageCapture.prototype.setOptions() has been removed following a change in the specification.
  • Document.prototype.createTouch() and Document.prototype.createTouchList() have been removed following changes in the specification.
  • Automatic dezippering of AudioParam.prototype.value changes has been removed following a change in the specification. To smooth the value of AudioParam changes, use AudioParam.prototype.setTargetAtTime().

Happy cross-browser testing with Opera 53!