Yup.
Posts by Paul Irish
A JSON file representing a source map. The code contains: { "version": 3, // Always the integer 3 "file": "out.js", // Optional: name of the generated file "sourceRoot": "", // Optional: prefix prepended to each entry in "sources" "sources": ["foo.js", "bar.js"], // Required: list of original source URLs/paths (or null) "sourcesContent": [null, null], // Optional: inlined source text, aligned with "sources" "names": ["src", "maps"], // Optional: symbol names referenced by "mappings" "mappings": "A,AAAB;;ABCDE", // Required: encoded mapping data (base64-VLQ deltas) "ignoreList": [0] // Optional: indexes into "sources" considered "third-party" }
Source maps are a vital part of modern web development, but the lack of a standard made it impossible for us to add new features or improve the debugging experience.
This is the story of how we standardized source maps and how we continue to ship features through standards 📜
🧵
Chrome 145 with the flag enabled and showing the context menu to move the tabs to the side
Chrome 145 with the tabs shown to the side (vertical tabs)
Vertical Tabs are available behind a flag in Chrome 145 (current beta)
1. Go to `chrome://flags/#vertical-tabs`
2. Set it to enabled
3. Relaunch Chrome
4. Right click the tabbar and choose “Move Tabs To The Side”
Attached are before and after screenshots.
HOLY SHIT BALLS YES.
YESSSSSSSSS FINALLY
WHY did this have to take SO LONG!?!
Confirmed that profiling skills are super transferable. 🙂↕️
viztracer is a delight for profiling python: github.com/gaogaotianti...
And since it exports to the standard trace format, I could bring it back to my home turf: analyzing the flamechart in Chrome DevTools and sharing via trace.cafe :D
A flame chart of loading NVIDIA's flagship ASR model, Canary. Captured with viztracer and shown in trace.cafe. It shows the load takes 52 seconds only for 3s of inference! Several annotations point out some opportunities for optimization (redundant tar extract, config read/write thrashing etc)
Been loving NVIDIA's NeMo models recently to complement Whisper for transcription, but the startup felt a bit heavy.
So I went on a profiling adventure!
github.com/NVIDIA-NeMo/...
Turned out to be fruitful… stoked to land a big optimization in NeMO.
github.com/NVIDIA-NeMo/...
I've replaced a lot of my old ARRAYFORMULA's with a BYROW+LAMBDA combo and feel like it's slightly more readable now. But just slightly. :)
AFAIK, crashes are observable in Chromium via the Reporting API. developer.chrome.com/docs/capabil...
In my AGENTS.md I'll add something like "I'm already running the dev server. You can access it at port 5173". Alternatively yah you can suggest it should prefix with `timeout 30s` if it may be a long-running process.
Aw shoot. So sorry to hear that.
Really enjoyed what you brought to Playwright!
The real asset here is that sample file. I'm thinking something similar to the SKILL file for frontend-design: github.com/anthropics/c...
I'll make it if nobody's got anything to offer, but I figured the Una's and Adam's of the world might have something up their sleeves.
I always prompt with "use modern CSS" but models rarely use *proper* modern, Baseline-y CSS. I want nesting, @layers, view transitions, oklch, light-dark(), etc.
Does anyone have some prompt text which does a good job with this?
I dug into progressive image rendering and found a bunch of common assumptions aren't quite true.
➡️ JPEG & WebP progressive-renders worse in Safari
➡️ AVIF _does_ support progressive
➡️ But JPEG XL in Safari doesn't
➡️ JPEG XL decodes much slower than AVIF
⬇️ and more
jakearchibald.com/2025/present...
forgot to put this up somewhere so here you go. visualize your favorite zlib stream! lynn.github.io/flateview/
Meanwhile, the mobile web gmail UI m.gmail.com is so fast and delightful, despite being ~unmaintained for 10+ years.
You'll probably appreciate the mobile web gmail UI: m.gmail.com Sadly, it now requires a mobile UA. But despite being ~unmaintained for 10+ years, it's so fast and delightful.
I joined the HTML Day festivities today and made a lil homage to the <progress> tag: paul.irish/2025-progres...
💪 @htmlenergy.bsky.social
Some discussion in
github.com/tc39/proposa...
github.com/tc39/proposa...
github.com/tc39/proposa...
But.. it seems like not many advocates for 'upsert' itself. ¯\_(ツ)_/¯
A group of handdrawn fish.
Why I 🧡 the web.
drawafish.com
Just draw the fish. Trust me. 🐟
This is hot. And aligns with some work I've been hacking on. Can I give it a whirl?
Prompts as MCP payloads are def not getting much attention but I also think they have good potential.
Interesting that Claude doesn't act on the prompt response type without extra nudging.. especially since this is all their design.
The decision to pursue the indictment against Abrego Garcia led to the abrupt departure of Ben Schrader, a high-ranking federal prosecutor in Tennessee, sources briefed on Schrader's decision told ABC News. Schrader's resignation was prompted by concerns that the case was being pursued for political reasons, the sources said. Schrader, who spent 15 years in the U.S. Attorney's Office in Nashville and was most recently the chief of the criminal division, declined to comment when contacted by ABC News.
Weirdly buried in the article:
The Nashville chief federal prosecutor (who'd lead this case?) decided to resign in protest over this case being pursued for political reasons.
DevTools Perf panel open against paulirish.com. A bitmap representation of the poop emoji is displayed in the profiler. (It was done with a lot of performance.measure() calls)
Sometimes I let my website draw pictures in the Profiler
My talk from I/O: a 10min jaunt jam-packed with DevTools Performance panel goodness. youtu.be/BHqxD9qr6Gw
Really proud of what we've landed in the past year, including JS bundle analysis, framework tracing APIs, auto-annotations, CrUX context, and deep insights.
😵💫 Dayum.
@kizu.dev is a deep magic css wizard.
🤨 In a v weird fit of serendipity, I *just* swished with Listerine and wanted to show my partner one of their commercials from the 90s..
This isn't the one but... Listerine was all about that text-fitting! youtu.be/o_P3HElQbsM
Hot damn!!!
codepen.io/paulirish/pe...
omg its the modern bigtext.js/fittext.js. i love this so hard.
👀 Coming to Chrome DevTools in Chrome 138: CSS Value Tracing
When you hover a --custom-prop in a `var()`, DevTools currently shows you the computed value. From Chrome 138 onwards, you can hover the `var` part to see how CSS actually got to that value.
Yeah, fair. I don't have this in a non-video blog post yet but.. here's the 10min version with actual words: youtu.be/BHqxD9qr6Gw?...