- Ya
- 19 Agosti 2026, 18:09 UTC
- Mwandishi
- Kamo
- Ahadi ya
- fb06a4a
Two Lighthouse findings, both of which stayed open after the last round because I had concluded they were not addressable. They were; I had not looked hard enough. RENDER-BLOCKING REQUESTS (560 ms). The stylesheet was the only blocking request left on the page and the entire critical request chain after the document — 244 ms for /en, then 416 ms by the time 17.6 KB of CSS had followed it. The previous conclusion was that the App Router offers no way to inline or defer it. It does: `experimental.inlineCss`, which is the App Router's own mechanism and exactly the thing `optimizeCss` fails to be — that one post-processes finished HTML, which a streamed response never hands it. The stylesheet is now a <style> in <head> and there is no blocking request at all. It costs ~37 KB gzip on the entry document, and it is worth it in the case that matters: someone arriving cold from a search result, which is the case being measured. Client navigations are unaffected — the RSC payload a <Link> prefetches carries no CSS, verified at 32 KB with zero <style> in it. LEGACY JAVASCRIPT (13.5 KB). Next imports `polyfill-module` unconditionally from its client entry: **************** Symbol.prototype .description, **************** Promise.prototype.finally, Object.fromEntries, Object.hasOwn, URL.canParse. Every one native since 2021-22. They are not merely unnecessary here, they are unreachable. This site is built with Tailwind v4, which compiles to `@property`, `color-mix()` and cascade layers; its floor is Chrome 111 / Safari 16.4 / Firefox 128, all *later* than every feature in that list. A browser old enough to need the file cannot render the page the file is helping to render. `browserslist` does not remove it — measured, and the containing chunk built byte-identical with the same hash, which is why that attempt was reverted rather than left in as decoration. Nor does aliasing the package-relative specifier: Next imports it as **************** from **************** so the alias has to match the relative form. All 74 emitted chunks re-checked as valid JS afterwards. If Next moves the module the alias stops matching and the polyfills come back — the failure mode is the status quo rather than a broken build.