Opera browser version 35 was released today. This release is based on Chrome 48. We just installed it to our cross-browser testing cloud and you can start testing your websites in it already!

Web testing in Opera 35

Try Opera 35 in Browserling now!

New Opera 35 Features

  • Active download warning on exit.

Opera now warns you about active downloads when exiting the app.

  • Basic settings page.

Most used browser settings are now separated into a basic section in the settings page.

  • Removal of bookmark duplicates.

An improved bookmark manager now removes duplicates that may be created when syncing bookmarks between devices.

  • Optional separate search bar.

Separate search bar available in advanced settings.

  • Updated support for the latest Chromium/Blink release, version 48.

Opera 35 is based on Chromium 48. It includes all the new Chrome 48 features.

  • Mute button in tab bar.

Mute tabs that are playing sound directly on the tab bar. Hover over a tab and press the mute button to silence it.

New Opera 35 Developer Features

  • Web Audio API: .connect() chaining.

The connect method on AudioNode and AudioParam instances now supports chaining.

  • KeyboardEvent.prototype.code.

The code property on KeyboardEvent instances is now implemented. The value of this property identifies the physical key that generated the keyboard event, regardless of the user's current keyboard layout. For example, the physical Q key represents the symbol q on a QWERTY keyboard layout, but represents a on an AZERTY keyboard layout - but its .code value is 'KeyQ' in both configurations.

  • Touch and TouchEvent constructors.

The Touch and TouchEvent constructors make it easy to programmatically create Touch and TouchEvent instances from an object literal.

  • Fetch API: data: and blob: URL scheme support.

Fetch API implementation now supports the data: and blob: URL schemes.

  • ES6: more well-known symbols.

Two more ES6 symbols have been implemented. Symbol.isConcatSpreadable points to a boolean value that indicates if an object should be flattened to its array elements by Array.prototype.concat (true) or not (false). Symbol.toPrimitive points to a method that converts an object to a corresponding primitive value.

  • CSS Writing Modes updates.

The CSS properties text-combine-upright, text-orientation, and writing-mode are now available without the -webkit- prefix, and with new syntax matching the spec. The isolate, isolate-override, and plaintext values for the unicode-bidi CSS property can now be used without the -webkit- prefix. Support for the non-standard horizontal-bt value (as in -webkit-writing-mode: horizontal-bt) has been removed.

  • IndexedDB API additions.

The IndexedDB getAll() and getAllKeys() methods are now supported on the IDBObjectStore and IDBIndex interfaces. Additionally, IDBObjectStore.prototype.openKeyCursor() and IDBTransaction.prototype.objectStoreNames have been implemented.

  • ServiceWorkerRegistration.prototype.update() more spec-compliant.

The update method on ServiceWorkerRegistration instances used to always bypass the browser cache. Now, it only bypasses the browser cache if the previous update check occurred over 24 hours ago.

  • Unprefixed CSS font-feature-settings.

The CSS font-feature-settings property now works without the -webkit- prefix. This property provides low-level control over OpenType font features. The -webkit--prefixed version is now deprecated and will be removed in a future release.

  • MediaStreamTrack.prototype.remote.

The remote property on WebRTC MediaStreamTrack instances is now available. It can be used to determine whether a stream track is from a remote source or a local one.

  • CSS: improved auto.

The implied minimum size of a flex item (i.e. min-width: auto or min-height: auto) is now also computed correctly when flex-basis is not auto.

  • CSS Font Loading API improvements.

The implementation of the FontFaceSet interface (e.g. document.fonts) is now set-like, matching the spec. This means it has entries(), keys(), and values() iterators, and is itself an iterator (over the individual FontFace entries). Also, the add() and remove() methods don't throw InvalidModificationError anymore when adding or deleting a CSS-connected font-face to the same FontFaceSet.

Happy cross-browser testing in Opera 35!