What’s new in Chromium 59 and Opera 46
Opera 46 (based on Chromium 59) 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.
Animated PNG
Opera now supports animated PNG, or APNG for short. APNG is a file format that works similarly to GIF. The difference is that APNG is smaller and supports both 24-bit images and 8-bit transparency. It has become quite popular recently, particularly since Apple adopted the APNG file format for the iOS 10 iMessage apps. APNG was also supported in Presto-based Opera 12.
Watch the APNG demo and learn more about this format.
SVG favicons
This was actually added in Opera 44, but we missed to write about it!
This might still be a bit rough in the edges, but in general SVG favicons should now work in Opera! (Not yet in Chromium.) To see this in action, check some of the WHATWG standards which use SVG favicons. Firefox also supports SVG favicons, and it was also supported in Presto-based Opera 12.
Expensive background tab throttling
Opera now throttles expensive background tabs. This reduces the processing power required for background tabs and improves battery life and browsing performance. Try it out yourself with this background timer throttling demo.
As a web developer, you also can help with reducing the work that your page or app does while being in a background tab by using requestAnimationFrame
instead of timers to drive animations, and the Page Visibility API to stop unnecessary work when the page is hidden.
Service worker navigation preload
The Service Worker navigation preload API enables the browser to preload navigation requests while a service worker is starting up. See Speed up Service Worker with Navigation Preloads by Jake Archibald for more information.
Other features in this release
- Developers can now use
MediaError
’smessage
property to obtain greater detail about a MediaError produced by<audio>
or<video>
. WritableStreams
are now available as part of the Streams API for processing streams of data, while providing a standard abstraction for writing streaming data to a sink with built-in backpressure and queuing.- The Streams API has been expanded with the ability to pipe between
ReadableStreams
andWritableStreams
via thepipeTo()
andpipeThrough()
methods, allowing easier consumption of streaming data. - The Image Capture API now allows sites to take higher resolution images than before, providing full control over camera settings such as zoom, ISO, and white balance.
- To provide enhanced privacy, CSS stylesheets can now specify their own referrer policy via the HTTP header, rather than always inheriting the referrer policy of the document that originally referenced it.
- Touch events are now aligned to
requestAnimationFrame
, ensuring that input is processed as part of the document lifecycle and creating a more efficient and adaptive input response. - The new
worker-src
Content Security Policy directive restricts which URLs may be loaded as aWorker
,SharedWorker
, orServiceWorker
.
Deprecations and interoperability improvements
- The
<dialog>
element has changed from display: inline to block by default to better align with the spec. - Following removal from the Media Queries spec, support for
hover: on-demand
andany-hover: on-demand
media queries have been removed. - To better align with spec and help avoid race conditions,
decodeAudioData
now detaches the given ArrayBuffer before decoding, removing all content from the object and making it unable to be reused or examined. - The
-internal-media-controls-cast-button
CSS selector has been removed in favor of the Remote Playback API. - The
-internal-media-controls-text-track-list*
CSS selectors have been removed in favor of custom-built video controls. - The
SVGTests.requiredFeatures
attribute has been removed following its removal from the spec. initDeviceMotionEvent()
andinitDeviceOrientationEvent()
were removed in favor ofDeviceOrientationEvent()
andDeviceMotionEvent()
, following a spec trend of moving away from initialization functions and toward constructors.- To preserve consistency across browsers, the
sample
property will now be included in a violation report (and associatedSecurityPolicyViolationEvent
object) if areport-sample
expression is present in the violated directive. - To increase security, Opera will now block requests for subresources that contain embedded credentials, and instead handle them as network errors.
- To increase security, Opera will now block requests from HTTP/HTTPS documents to ftp: URLs.
- To preserve consistency across browsers, injecting JavaScript via AppleScript is longer supported in Opera for Mac.
- The ability to call
Notification.requestPermission()
from non-main frames has been deprecated to align the requirements for notification permission with requirements for push notifications, and ease friction for developers. - Support for Shared Dictionary Compression (SDCH) has been disabled until a stable API has been standardized.
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.