1 post published by Nolan Lawson during August 2025| Read the Tea Leaves
Even if you’ve been doing JavaScript for a while, you might be surprised to learn that setTimeout(0) is not really setTimeout(0). Instead, it could run 4 milliseconds later: Nearly a decade a…| Read the Tea Leaves
1 post published by Nolan Lawson during October 2016| Read the Tea Leaves
1 post published by Nolan Lawson during June 2025| Read the Tea Leaves
All web developers know, at some level, that accessibility is important. But when push comes to shove, it can be hard to prioritize it above a bazillion other concerns when you’re trying to c…| Read the Tea Leaves
I love the js-framework-benchmark. It’s a true open-source success story – a shared benchmark, with contributions from various JavaScript framework authors, widely cited, and used to push the entire JavaScript ecosystem forward. It’s a rare marvel. That said, the benchmark is so good that it’s sometimes taken as the One True Measure of a web […]| Read the Tea Leaves
Update: this blog post sparked a lively debate. You may want to read the responses from Laurie Voss, Jeremy Keith, Aaron Gustafson, and Christian Heilmann. Progressive enhancement is a touchy subje…| Read the Tea Leaves
I’ve avoided writing this post for a long time, partly because I try to avoid controversial topics these days, and partly because I was waiting to make my mind up about the current, all-consu…| Read the Tea Leaves
Big news for me: after 6 years, I’m leaving Salesforce to join the folks at Socket, working to secure the software supply chain. Salesforce has been very good to me. But at a certain point, I…| Read the Tea Leaves
2024 was another lite reading year for me. The fact that it was an election year probably didn’t help, and one of my resolutions for 2025 is to spend a heck of a lot less time keeping up with the dreary treadmill of the 24-hour news cycle. Even videogames proved to be a better use […]| Read the Tea Leaves
In a previous post, I said that a web component’s connectedCallback and disconnectedCallback should be mirror images of each other: one for setup, the other for cleanup. Sometimes, though, you want to avoid unnecessary cleanup work when your component has merely been moved around in the DOM: This can happen when, for example, your component […]| Read the Tea Leaves
I’ve written a lot of JavaScript. I like JavaScript. And more importantly, I’ve built up a set of skills in understanding, optimizing, and debugging JavaScript that I’m reluctant …| Read the Tea Leaves
Every so often, the web development community gets into a tizzy about something, usually web components. I find these fights tiresome, but I also see them as a good opportunity to reach across R…| Read the Tea Leaves
Recently I got an interesting performance bug on emoji-picker-element: I’m on a fedi instance with 19k custom emojis […] and when I open the emoji picker […], the page freezes for like a full…| Read the Tea Leaves
Writing good benchmarks is hard. Even if you grasp the basics of performance timings and measurements, it’s easy to fool yourself: You weren’t measuring what you thought you were measur…| Read the Tea Leaves
Shadow DOM is a kind of retcon for the web. As I’ve written in the past, shadow DOM upends a lot of developer expectations and invalidates many tried-and-true techniques that worked fine in t…| Read the Tea Leaves
Web components are kind of having a moment right now. And as part of that, shadow DOM is having a bit of a moment too. Or it would, except that much of the conversation seems to be about why you sh…| Read the Tea Leaves
In my day job, I work on a JavaScript framework (LWC). And although I’ve been working on it for almost three years, I still feel like a dilettante. When I read about what’s going on in …| Read the Tea Leaves
Dave Rupert recently made a bit of a stir with his post “If Web Components are so great, why am I not using them?”. I’ve been working with web components for a few years now, so I…| Read the Tea Leaves
Update: This post represents my views before I joined the Microsoft Edge team, and before I got involved with browsers or web standards in general. I leave it up as a historically interesting artif…| Read the Tea Leaves
A few months ago, I gave a talk on CSS performance at performance.now in Amsterdam. The recording is available online: (You can also read the slides.) This is one of my favorite talks I’ve ev…| Read the Tea Leaves
Five years ago, I started a journey to build a better Mastodon client – one focused on performance and simplicity. And I did! Pinafore is the main Mastodon client I’ve used myself since I fir…| Read the Tea Leaves
Five years ago, I was all-in on Mastodon. I deleted my Twitter account, set up a Mastodon instance, and encouraged my friends to join. A year later, I wrote my own Mastodon client in an attempt to …| Read the Tea Leaves
I’ve been doing web performance for a while, so I’ve spent a lot of time in the Performance tab of the Chrome DevTools. But sometimes when you’re debugging a tricky perf problem, …| Read the Tea Leaves