Unless otherwise noted, changes described below apply to the newest Chrome Beta channel release for Android, Chrome OS, Linux, Mac, and Windows.

CSS custom properties
Modern websites often have CSS files with repeated values, such as a few colors reused throughout the page in a color scheme. Altering this data can be tedious and error-prone, since it’s scattered throughout one or more CSS files. To improve this, Chrome now supports CSS custom properties, allowing developers to define property variables in CSS without using external frameworks. Developers can then use the var() function to reference these custom properties anywhere in the document.

Changing a custom property can update multiple components in a website

CSS custom properties also inherit across shadow roots, so a web component can provide a “style API” that makes it possible to tweak and theme the component without knowing about its internals. The Polymer library uses this platform feature to simplify customizing components.

Background sync with service workers
Previously, sites could lose local changes or become out of sync if a user didn’t stay on the site until updates could be sent over the network. For example, an email client might lose a pending message if the user hit "send" and quickly navigated away. The new Background Sync API improves networking reliability by allowing service workers to schedule a one-off sync of a user’s local changes when the device next connects to the network, even if the site isn’t open.

Improved ECMAScript 2015 support
The ES2015 specification (ES6) is a major update to JavaScript that allows developers to write application logic that is more legible, powerful, and memory efficient. The latest version of Chrome’s V8 engine has 91% JavaScript ES2015 feature support. Developers can now use destructuring and default parameters to avoid boilerplate code when extracting data from arrays and objects or when setting function parameter defaults. Proxy objects and the Reflect API can customize previously hidden object behavior such as property lookup and assignment. The latest version of Chrome also makes block-level constructs such as class and let available outside of strict mode.

Keygen and application/x-x509-user-cert
The <keygen> element is used to generate a key-pair as part of an HTML form. While this can be used to enhance user security, <keygen> and user certificates sent with the MIME type of application/x-x509-user-cert can be exploited to disrupt a user’s secure communication, interfere with the functioning of their devices, or track the user without consent. Going forward, <keygen> will return an empty string by default and user certificates sent with the MIME type of application/x-x509-user-cert will no longer be automatically downloaded and installed.

Other features in this release

nor changes

Posted by Josh Karlin, Syncing Samurai

Out-of-process rendering was one of Chrome’s earliest innovations, and we’ve always wanted to bring its benefits to our iOS users. Unfortunately UIWebView, the component used to render web pages on iOS, is in-process, so that’s never been possible before. The introduction of WKWebView in iOS 8 gave us that opportunity, though migrating to the new framework brought significant challenges. In Chrome 48 we’ve made the switch from UIWebView to WKWebView, leading to dramatic improvements in stability, speed, responsiveness, and web compatibility.

The biggest change is in stability: with WKWebView’s out-of-process rendering, when the web view crashes or runs out of memory, it won’t bring down all of Chrome with it. As a result, Chrome crashes 70% less with WKWebView. Even when counting the “Aw, Snap!” page shown when the renderer crashes, there’s still a big improvement.
Outside of stability, WKWebView brings many other benefits. Web compatibility is improved with support for features like IndexedDB, bringing the HTML5test score for Chrome on iOS from 391 up to 409. Switching to background tabs will cause pages to reload 25% less often. JavaScript speed on benchmarks such as Octane is an order of magnitude faster, and scrolling is smoother and more responsive.

Screen Shot 2016-01-21 at 10.51.51 AM.png
The Chrome team is committed to improving stability and performance. We hope that you enjoy these changes and we are working hard on further improving your browsing experience on iOS.

Posted by Stuart Morgan, Software Engineer and Migratory WebView Watcher

The web platform is becoming increasingly powerful thanks to new APIs such as service worker. Security risk is always a concern, which is why many of these new features require secure origins. HTTPS preserves the integrity of your website and ensures connections with your users are encrypted. In an effort to make deploying HTTPS easier, Chrome 48 beta includes a new security panel in DevTools which will be rolling out more broadly over the next few days.

The security panel displays connection information for every network request, demystifying what connection errors keep you away from the green lock that represents a secure connection. Glancing at the overview for a given page, you can find information about:

In addition to debugging an insecure TLS connection, you can also easily check the state of your subresources. Clicking on a subresource gives you in-depth information about the security state of a given connection, as well as details about its certificate.

For more details about the new security panel, check out our post on the Google developer blog. If you’re new to TLS, you can get started with our developer resources on Web Fundamentals.

Stay tuned for more features coming to Chrome, helping you get to the green lock and beyond!

Posted by Emily Stark, Green Lock Whisperer and Lucas Garron, Mixed Content Warrior

Posted by Seth Thompson, V8 Track Commentator

In order to ensure a smooth, snappy experience when browsing in Chrome, it’s essential to free unused memory. The garbage collector in the V8 JavaScript engine has been optimized to reclaim memory as quickly as possible to shorten pauses to the main thread of execution. But even small pauses can cause jank when they happen at inopportune moments and block important events like clicks, scrolls, or animation frames. To make garbage collection less noticeable, we’ve integrated Blink’s task scheduler into V8 (starting in M41), so that pauses can be not just short, but intelligently scheduled during moments when the browser is idle. New knowledge of completely inactive pages (such as background tabs), also allows V8 to free larger chunks of memory all at once.  The result is reduced jank when browsing and lower memory usage overall.

Scheduling garbage collection tasks (red) in otherwise idle periods (blue).

Smarter garbage collection makes 3D animations and games play smoothly with reduced lag and stuttering. The new task scheduler integration into V8 provides higher frame-rates more consistently for gameplay and rendering. Between Chrome 41 and Chrome 46, our score for the 3D benchmark OORT Online, which measures smooth rendering of WebGL graphics, increased by up to 33%, just shy of the maximum 10,000 points on a modern desktop.

Memory reduction from the new system is particularly pronounced when the browser is idle for a few minutes or more. Leaving a Gmail tab unused for 2.5 minutes, for example, reduces memory consumption by up to 45% between Chrome 45 and previous versions!

In addition to providing a smoother, faster browsing experience for the user, these changes empower developers to push the limits of Chrome with more powerful applications and better graphics. Stay tuned for more V8 optimizations and check out our deep dive into garbage collection timing on the new V8 blog for more details.