A real performance timeline, site icons from the engine with a lookalike check, and forms that lay out right
Pages that measure themselves now get real answers: marks, measures, load and resource timings, paints, the largest paint, layout shifts and slow interactions, all from the real load. Every site icon in the app now comes through the engine, fetched without cookies, and a new on-device check warns when a rarely visited site wears the icon of one you use often. Labels next to form fields wrap the way they should, search boxes have their real size, and private class fields, WeakMap and subclassing follow the language exactly.
A performance timeline from the real load




performance.mark and measure did nothing, every entry list was empty and observers never fired, so pages and analytics that time themselves saw nothing. The timeline is now built from the real load: the page, every stylesheet, image and script it fetched, first paint, visibility, the page's own marks and measures, and observers that deliver them. Each page has its own log, so two tabs loading at once never see each other's entries. The largest contentful paint, layout shifts and slow interactions are reported the way the reference browser reports them.
Site icons through the engine, and a lookalike check
Every icon in the app (tabs, history, bookmarks, the new tab page, the address bar, passwords and more) is now chosen from the live page and fetched by the engine, through Shields and without the site's cookies. Each icon gets a perceptual fingerprint on your device. When a site you have rarely visited shows the icon of a different site you use often, the security button says so: "Its icon copies another site". Nothing leaves your device, and a site you know from your history is never treated as new.
Form labels that wrap, inputs at their real size




A label placed after an input on the same line never wrapped, so it stuck out of its card. Text now wraps after an inline box such as an input or image, as in the reference browser. Inputs styled with box-sizing: border-box came out squashed, because their padding and border were taken out of their default size; they now keep their full size, and search boxes are as wide as text boxes.
Private class fields that stay private




Reading a #private field from an object that does not have it now throws, as the language requires, instead of quietly giving undefined, and private methods and accessors only work on instances of their own class. Error messages match the reference browser. The check only runs off the fast path: private calls cost the same as public ones.
WeakMap and subclassing as the language says




WeakMap and WeakSet methods now live on their prototype, so feature checks and libraries that patch them work. A subclass whose parent constructor returns its own object now gets that very object, which some libraries use to extend built-in types.
What changed 14 changes
Try it in your browser
Each check runs live in the browser you are reading with. Nothing is sent anywhere.
