Google has released version 79 of its Chrome web browser. Google Chrome is available for Windows, Linux and macOS. There are also versions for Android and iOS, but they follow a slightly different release schedule. The main changes made in version 79, in addition to the usual bug and security fixes, are listed for you below.
Virtual Reality Comes to the Web
The WebXR Device API is shipping in Chrome. Developers can now create immersive experiences for smartphones and head-mounted displays. Other browsers will be supporting these specs soon, including Firefox Reality, Oculus Browser, Edge and Magic Leap’s Helio browser, among others. This launch sets the foundation for immersive features to come, such as supporting augmented reality, tools, and expanding the real-world understanding of immersive experiences. Many experiences can be enhanced with immersive functionality. Examples include games, home buying, viewing products in your home before buying them and more. To get started with virtual reality and the new API, read Virtual reality comes to the web.
This version of Chrome introduces the origin trials described below. Origin trials allow you to try new features and give feedback on usability, practicality, and effectiveness to the web standards community. To register for any of the origin trials currently supported in Chrome, including the ones described below, visit the Origin Trials dashboard. To learn more about origin trials themselves, visit the Origin Trials Guide for Web Developers.
Support for rendersubtree Attribute
Adds the rendersubtree attribute to all HTML elements, which locks a DOM element for display. When rendersubtree is set to “invisible”, the element’s content is not drawn or hit-tested, allowing for rendering optimizations. The rendersubtree “activatable” token allows the browser to remove the invisible attribute, rendering the content, and making it visible.
Wake Lock API based on Promises
Adds an update of the Wake Lock API that introduce promises and wake lock types. The Wake Lock API brought a standard, secure, and safe way to prevent some device features such as the screen or CPU cycles from going into power saving state. This update addresses some of the shortcomings of the older API which was limited to screen Wake Lock and didn’t address certain security and privacy issues.
Adaptive Icon Display for Installed PWAs on Android
Android Oreo introduced adaptive icons, which enforced the same shape for all icons on the home screen and in the launcher. Before android O icons could be any shape and there was no background behind each icon. For example, gmail was rectangular, and Play was a triangle. Consequently, such icons were placed in a white circle. With adaptive icon display, Android will automatically mask irregularly shaped icons to fit properly.
Autofocus Support for any Focusable HTML / SVG Element
Adds the autofocus attribute to any focusable HTML or SVG element. The autofocus was previously supported for a limited number of HTML elements, and there were elements which could receive focus but didn’t support the autofocus attribute. This feature fixes the inconsistencies.
Compute img / video Aspect Ratio from Width Or Height HTML Attributes
The aspect ratio of an image is now computed so that it can be used for sizing an image using CSS before it loads. This avoids unnecessary relayouts when the image loads.
The font-optical-sizing property automatically sets the font size to the opsz – optical sizing axis of variable fonts that support optical sizing. This improves styling and legibility of fonts depending on font size because the font chooses a glyph shape that works optimally at the given font size. For example, the glyph contrast is improved in fonts in heading sizes when compared to the same font at body text size.
Allows a stylesheet to use an arbitrary character for the list style marker. Examples include “-“, “+”, “★” and “▸”. Since CSS Level 2, list-style-type has supported keywords like disc or decimal to define the appearance of the list item marker. Without this, developers are often forced to hide the real marker and insert the arbitrary marker using a :: before pseudo element via the content property. Unfortunately, the fake marker won’t be nicely positioned by list-style-position.
Reject Worklet.addModule () with a More Specific Error
When Worklet.addModule () fails, a promise rejects with a more specific error object than it did previously. Worklet.addModule () can fail for various reasons, including, for example, network errors and syntax errors. Before this change, Worklet.addModule () rejected with AbortError regardless of the actual cause. That made it difficult for developers to debug worklets. After this change, Worklet.addModule () rejects with a clearer error such as SyntaxError.
Retrieve a Service Worker Object Corresponding to a Worker Itself
A service worker can now get its ServiceWorker object with self.serviceWorker in a service worker script and its current state with self.serviceWorker.state. A service worker instance previously had no way to get its current lifecycle state. This removes the need for the hack wherein the current lifecycle state is tracked with a global variable, a method that is error prone and doesn’t correctly capture waiting periods.
Stop Evaluating Script Elements Moved Between Documents During Fetching
Chrome no longer evaluates scripts or fire error and load events if