Sign in

Paul Irish

@paul.irish
5.8K followers 1.5K following 64 posts

web performance and DevTools, mostly. In '97 I wrote a paper for English class on HTML Image Maps. I haven't changed much since.

PostsRepliesMedia
Paul Irish @paul.irish · 26/05/2026
Is it a new thing in preview? I want.
110
Paul Irish @paul.irish · 21/05/2026
Great idea or greatest idea?
060
Paul Irish @paul.irish · 19/05/2026
An agent skill to set this up: github.com/paulirish/do... (nothing too special in here but it's got a few gotchas that the docs weren't obvious about. )
030
Reposted by Paul Irish
Lea Verou, PhD @lea.verou.me · 19/05/2026
Thrilled this is out, keeping quiet has been SO HARD! 🤐 I’ve had the opportunity to contribute as a domain expert consultant over the past few months, and saw firsthand the level of thoughtfulness and care that went into it. Proud to have played a small part, and excited to see what folks build! ❤️
66010
Paul Irish @paul.irish · 15/04/2026
Yup.
160
Reposted by Paul Irish
Jon Kuperman @jonkuperman.com · 10/03/2026
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 📜 🧵
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"
}
58017
Paul Irish @paul.irish · 28/02/2026
good news for yall huh? :) help.obsidian.md/sync/headless
help.obsidian.md
Headless Sync - Obsidian Help
Obsidian Sync offers a headless client to sync vaults without using the desktop app. Useful for CI pipelines, agents, and automated workflows. Sync the latest changes or keep files continuously up to ...
130
Reposted by Paul Irish
Bramus @bram.us · 16/01/2026
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.
Chrome 145 with the flag enabled and showing the context menu to move the tabs to the sideChrome 145 with the tabs shown to the side (vertical tabs)
1512810
Paul Irish @paul.irish · 19/01/2026
HOLY SHIT BALLS YES. YESSSSSSSSS FINALLY WHY did this have to take SO LONG!?!
030
Paul Irish @paul.irish · 10/01/2026
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
trace.cafe
trace.cafe
1140
Paul Irish @paul.irish · 10/01/2026
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/...
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)
21416
Paul Irish @paul.irish · 20/12/2025
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. :)
120
Paul Irish @paul.irish · 20/12/2025
AFAIK, crashes are observable in Chromium via the Reporting API. developer.chrome.com/docs/capabil...
developer.chrome.com
Monitor your web application with the Reporting API  |  Capabilities  |  Chrome for Developers
Use the Reporting API to monitor security violations, deprecated API calls, and more.
270
Paul Irish @paul.irish · 20/12/2025
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.
2110
Paul Irish @paul.irish · 10/12/2025
Aw shoot. So sorry to hear that. Really enjoyed what you brought to Playwright!
150
Paul Irish @paul.irish · 09/12/2025
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.
140
Paul Irish @paul.irish · 09/12/2025
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?
4150
Reposted by Paul Irish
Jake Archibald @jakearchibald.com · 16/10/2025
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...
jakearchibald.com
The present and potential future of progressive image rendering
Exploring progressive image rendering across JPEG, PNG, WebP, AVIF, and JPEG XL.
1517340
Reposted by Paul Irish
lynn @chordbug.bsky.social · 21/09/2025
forgot to put this up somewhere so here you go. visualize your favorite zlib stream! lynn.github.io/flateview/
2030196
Paul Irish @paul.irish · 11/09/2025
Meanwhile, the mobile web gmail UI m.gmail.com is so fast and delightful, despite being ~unmaintained for 10+ years.
0100
Paul Irish @paul.irish · 31/08/2025
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.
mail.google.com
Gmail
Gmail is email that’s intuitive, efficient, and useful. 15 GB of storage, less spam, and mobile access.
130
Paul Irish @paul.irish · 03/08/2025
I joined the HTML Day festivities today and made a lil homage to the <progress> tag: paul.irish/2025-progres... 💪 @htmlenergy.bsky.social
paul.irish
ripple the <progress> html energy - drag the slider
2484
Paul Irish @paul.irish · 31/07/2025
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. ¯\_(ツ)_/¯
github.com
Rename from "proposal-upsert" to "proposal-getorinsert" · Issue #83 · tc39/proposal-upsert
Generally "upsert" means your updating or creating. But this method seems to be getting or creating. Consider renaming this proposal from "proposal-upsert" to "proposal-getorinsert". https://x.com/...
350
Reposted by Paul Irish
David Bisset @davidbisset.com · 24/07/2025
Why I 🧡 the web. drawafish.com Just draw the fish. Trust me. 🐟
A group of handdrawn fish.
10023051204
Paul Irish @paul.irish · 13/07/2025
This is hot. And aligns with some work I've been hacking on. Can I give it a whirl?
120
Paul Irish @paul.irish · 16/06/2025
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.
100
Paul Irish @paul.irish · 07/06/2025
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.
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.
1221
Paul Irish @paul.irish · 05/06/2025
Sometimes I let my website draw pictures in the Profiler
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)
2121
Paul Irish @paul.irish · 30/05/2025
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.
youtu.be
Performance debugging in DevTools
YouTube video by Chrome for Developers
0447
Paul Irish @paul.irish · 29/05/2025
😵‍💫 Dayum. @kizu.dev is a deep magic css wizard.
020
Paul Irish @paul.irish · 29/05/2025
🤨 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
youtube.com
VINTAGE COMMERCIAL - LISTERINE
YouTube video by Historic Films Stock Footage Archive
020
Paul Irish @paul.irish · 29/05/2025
Hot damn!!! codepen.io/paulirish/pe... omg its the modern bigtext.js/fittext.js. i love this so hard.
codepen.io
inverse text-sizing with attr
...
4131
Reposted by Paul Irish
Bramus @bram.us · 29/05/2025
👀 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.
929856
Paul Irish @paul.irish · 28/05/2025
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?...
youtube.com
Performance debugging in DevTools
YouTube video by Chrome for Developers
150
Paul Irish @paul.irish · 28/05/2025
The Chrome DevTools Performance panel just leveled up! 🚀 Here's a 69-second taste of the new hotness.
69321
Paul Irish @paul.irish · 22/05/2025
100%. Applescript is super painful. Finding what API is exposed by each application.. Trying it out.. Logging. All of these things are just terrible. But yeah I don't know other mechanisms to query some of this.
210
Paul Irish @paul.irish · 22/05/2025
Here's my version of the same dealio. A lil ffmpeg/fzf/applescript/fish combo to screencapture the bounds of your chosen application's frontmost window. gist.github.com/paulirish/c1...
gist.github.com
screencapture a specific application's frontmost window
screencapture a specific application's frontmost window - screencap-window.fish
160
Paul Irish @paul.irish · 21/05/2025
The next biggest win is getting rid of the 3 render blocking requests. That'll give the LCP a 1.3✕ speedup. trace.cafe/t/hRHAdaY3rl (Btw it's quite fast! Nice job)
DevTools showing a trace of the load. Render blocking requests annotated with their optimizations.
180
Paul Irish @paul.irish · 14/05/2025
Nicely executed. The debugger UI is hot.
110
Reposted by Paul Irish
Sam Rose @samwho.dev · 12/05/2025
Been annoyed by web fonts for a while. They’re big and they were connecting my blog to Google. I stumbled on modernfontstacks.com earlier today and now I’ve ditched my web fonts in favour of these. ~140kb shaved off the first load of my site. First impressions matter.
modernfontstacks.com
Modern Font Stacks
System font stack CSS organized by typeface classification for every modern OS. The fastest fonts available. No downloading, no layout shifts, no flashes — just instant renders.
89315
Paul Irish @paul.irish · 13/05/2025
you mean like some url sugar around this? data:text/html;charset=utf8,<input type=checkbox>
060
Paul Irish @paul.irish · 06/05/2025
Is the WebDev Arena truly measuring webdev coding ability? This ML coding benchmark *requires* React/Tailwind and completely breaks with vanilla JS/other frameworks. The second-order implications of models competing on this narrow definition of frontend web development are rather troublesome.
Screenshot of https://blog.lmarena.ai/blog/2025/webdev-arena/ showing the system prompt, which includes:

> You are an expert frontend React engineer
>    - Create a React component for whatever the user asked you to create
>    - Use Tailwind classes for styling.
1355
Paul Irish @paul.irish · 20/03/2025
Same! Yeah it is
130
Paul Irish @paul.irish · 19/03/2025
Love how we're seeing more embrace of Markdown within non-developer apps, thanks to it being the lingua franca of LLMs. The Markdown-y copy/paste hooks of Google docs have been super handy.
The context menu in Google Docs, showing 'Copy as Markdown' and 'Paste from Markdown'. 
Yes, copying a table works nicely!
3350
Reposted by Paul Irish
Paul Kinlan @paul.kinlan.me · 17/03/2025
Great news. We have a new position on the team for a Developer Advocate at the intersection of Web, Chrome, ChromeOS and Android. The position is in Waterloo - Canada www.google.com/about/career...
google.com
Senior Developer Advocate, Chrome — Google Careers
25623
Paul Irish @paul.irish · 12/03/2025
This is probably the most promising tool. And luckily, I want this for a Chromium repo. :) Big thanks for the heads up Joe... didn't know about Gold.
100
Paul Irish @paul.irish · 12/03/2025
It's possible other image diff algos (like SSIM?) might treat those two possibilities as ~equivalent in regards to the change %. Anyway, that's what I was getting at.
000
Paul Irish @paul.irish · 12/03/2025
TBH my use of "layout shift" here was misleading. :p My current tooling relies on a Pixels Changed % threshold. But let's say a new change adds a 20px space to the top of the page. It'll shift everything, so pixel change % will be high. But the same space at the bottom will end up with a low %.
210
Paul Irish @paul.irish · 12/03/2025
You can add this Google Password Manager UI via a homescreen icon on Android, though it's kinda hidden in Chrome settings. On desktop, you can install as a PWA… but for me, "about:pa" in the URL bar will do the job quickly.
Chrome on Android settings menu. Arrow pointing at Google Password Manager item.Google Password Manager settings UI on Android (Following the previous image's selection.)  Red arrow pointing at the "Add shortcut to your home screen" item.Menu of desktop Chrome > Cast, Save, and Share > Install Google Password Manager.

This installs chrome://password-manager/ as an  .app on Mac OS and equivalents on other OSes.
040
Paul Irish @paul.irish · 12/03/2025
🔐 If you're a Google Password Manager user, I find the UI in Chrome at `about:password-manager` is a *lot* faster and less annoying than the passwords.google.com one. (Why is the web app so frustrating? Beats me.. I've filed bugs. I hope it improves, regardless.)
190