Chrome 98 landed a month ago and since the Stable release channel shifted to a four-week release cadence recently, it is now time for Chrome 99 to ship. There aren"t a whole bunch of new features present in this build, but that makes sense given that Google is very close to the Chrome 100 milestone.
For starters, Chrome 99 will change the implementation of the JavaScript (JS) adoptedStyleSheets specification. This previously used the FrozenArray backing array but will now leverage ObservableArray. The new methods will make it easier to mutate JS arrays. While this is all quite technical, the arguably interesting thing for our readers would be that changes to this specification have been debated between Microsoft, Mozilla, Apple, and Google since 2018.
As it currently stands, Google will go ahead and implement this in Chrome 99. It is supported by both Mozilla and Microsoft. On the other hand, we have Apple"s WebKit team which is refusing to support the change in implementation, noting that there"s no worthwhile benefit to it. Google has stated that it will continue to ensure backward compatibility with the previous implementation but has mentioned in a rather disappointed tone that:
WebKit continues to be skeptical of this usefulness of this feature, despite the general agreement of the rest of the web components community, and the support of the developer community. So the interop risk is mainly that WebKit decides not to implement this feature. Compat risks (from the change from FrozenArray to ObservableArray) should be minimal, as the same re-assignment semantics will continue to work. As documentation improves, and usage expands, we expect re-assignment usage to wane, and mutation (e.g. adoptedStyleSheets.push()) to expand.
The latest version of Chrome also incorporates a new Handwriting Recognition API that can be used by web developers to offer inking capabilities, for example, in a note-taking web app. They won"t need to lean on third-party integrations.
Talking about web apps, Chrome 99 will allow installed Progressive Web Apps (PWAs) to cover more area on the screen so that they appear more like native apps rather than web apps.
On the CSS side of things, the calc() math function now functions more closely to the official specification. CSS cascade layers should make management of layers in web components easier for developers too. Similarly, the "-webkit-standard" font-family value is being removed to improve interoperability with Firefox, developers can just use "-webkit-body" explicitly instead. And if you"re doing some textual formatting using CSS, check out the new properties supported in Chrome 99 here.
The Canvas 2D API is being modernized to attain feature parity with other 2D APIs, leverage existing CSS properties, and improve performance. The API is primarily used in games and "full featured apps". In the same vein, the Gamepad API is being enhanced to align with standard specifications.
Google is also offering a new surface to the File System Access API which will give performant and in-place write access to files if you"re a developer using the Origin Private File System. This is being implemented by Apple"s WebKit team too.
There are a bunch of other developer-facing features in tow too such as Autofill in ShadowDOM, a programmatic picker for HTML input elements, introduction of Intl Enumeration and Intl Locale Info APIs, and a new destination for PaintWorklet. But that"s not all as there are lots of new capabilities in Chrome 99 DevTools too, and you can check out all the details here.
Chrome 99 will start rolling out in the later hours of today. If it does not update to version 99 automatically for you throughout the course of the day, head over to Help > About Google Chrome to trigger the update once it becomes available. Next up is Chrome 100 which will hit the Beta channel on March 3, and will land on Stable on March 29.