Artem Zakharchenko @kettanaito.com · 7hMore and more developers are migrating to MSW 3.0. This is great to see. Meanwhile, I'm addressing reported issues to make sure you have the best mocking experience possible. 150
Artem Zakharchenko @kettanaito.com · 08/10/2026I am beyond thrilled to welcome @beehiiv.com as MSW partner! Their support makes sure I can keep working on better API mocking for everyone. Thank you ❤️ 0240
Artem Zakharchenko @kettanaito.com · 08/10/2026MSW 3.0 brings granular import paths to keep that module graph under control. While we're keeping the root "msw" exports as-is (apart from "graphql"), the recommended way to import things is from the designated import paths. 2141
Artem Zakharchenko @kettanaito.com · 07/10/2026Integrating MSW into Vite-based projects has become silly simple with the new "msw/vite" plugin! And yes, this works with Vitest, too. The plugin integrates MSW client and server-side and keeps the worker script up-to-date for you, automatically. 2291
Artem Zakharchenko @kettanaito.com · 05/10/2026I've moved the docs for all the ecosystem packages under mswjs.io and refreshed their logos to be more aligned. Hopefully, this will help developers discover you can do much more with your API mocks! 1161
Artem Zakharchenko @kettanaito.com · 25/09/2026I need to start public shaming companies and projects that still patch globals in 2026. Nothing speaks of myopic, juvenile API design like mutating things you don't own. Look, one of the alternatives from me, for free: 2200
Artem Zakharchenko @kettanaito.com · 24/09/2026Have to make some changes to the EPUB of my book, which gives me one more reason to dogfood @bytebinding.com. Nice. 180
Artem Zakharchenko @kettanaito.com · 23/09/2026Man, I just want to know the proper names of all the sounds a dog makes. I'm not a toddler, I'm a writer, I swear. 030
Artem Zakharchenko @kettanaito.com · 21/09/2026This is such a silly mistake and yet I see you making it all the time in your tests. ❌ Do NOT run cleanup after assertions ✅ Schedule the cleanup via hooks or use Disposable Objects A seemingly tiny change that'll have tremendous impact on your tests, especially memory-wise. 2364
Artem Zakharchenko @kettanaito.com · 17/09/2026Come learn component testing from me in person! Accessibility-first, beautifully set up, and running in a real browser with Vitest. One of my best selling workshops on Epic Web now live. 📆 October 5th, 9:00 🇨🇿 Prague More info: www.frontkon.tech/events/fron... 071
Artem Zakharchenko @kettanaito.com · 15/09/2026It's crazy how Vitest has replaced not just JSDOM but also React Testing Library with their Browser Mode. I'm absolutely loving this 😍 Once you write a single test like this, you will never want to go back. 4671
Artem Zakharchenko @kettanaito.com · 13/09/2026In the new version of MSW docs, all code snippets will feature type definitions for all APIs thanks to Shiki's fantastic Twoslash. This will also allow us to drop redundant explanations as you can inspect the types yourself now. 0200
Artem Zakharchenko @kettanaito.com · 12/09/2026Why would I rate my own book? What kind of elaborate trap is this? No author should be the subject of such open cruelty. 030
Artem Zakharchenko @kettanaito.com · 12/09/2026What a heartwarming review to see 😊 I hope more people enjoy the stories I write for myself. 120
Artem Zakharchenko @kettanaito.com · 10/09/2026Question: can I schedule a callback to the absolute end of the event loop, no matter how many frames it will have? Example: 332
Artem Zakharchenko @kettanaito.com · 10/09/2026Say what you want, these look real nice together. 2320
Artem Zakharchenko @kettanaito.com · 10/09/2026If you let your agent write component tests for you, you're in BIG trouble. Why? Because agents were trained on prehistoric tests still using JSDOM. Yikes 🤢 Join me on 📆 October 5th in 🇨🇿 Prague for a live workshop to learn component testing in the real browser with Vitest. 1130
Artem Zakharchenko @kettanaito.com · 10/09/2026A Vite plugin allows MSW to have a single, unified, and automated integration that's pre-configured for the environment. A single "virtual:msw" is your entrypoint to anything network throughout the app. See this example of both client and server mocking in TanStack Start. 2393
Artem Zakharchenko @kettanaito.com · 07/09/2026Sometimes you're successful in your 30s. Something in your 40s. What matters is your continuous delivery. 1160
Artem Zakharchenko @kettanaito.com · 03/09/2026I take back all I said about Windows. This is funny. 0261
Artem Zakharchenko @kettanaito.com · 02/09/2026Can someone explain GitHub usage billing to me. This is wild. I had 700 out of 3000 minutes a few hours ago when I got Pro. Since then, I had 6 commits triggering actions, 145m total. This is 2,5h at best. How did I manage to max out the 3000 minutes quota? 440
Artem Zakharchenko @kettanaito.com · 01/09/2026Not cool, man. Not cool. And you know how I noticed this? My generated routeTree file went insane and began dancing while I switched between branches. 160
Artem Zakharchenko @kettanaito.com · 30/08/2026Now, my designing days are long behind me. The best I can do for now in the software I build is to provide contextual separation for the actions usually stuffed in a single toolbar. Let's break this down. 110
Artem Zakharchenko @kettanaito.com · 30/08/2026User interfaces have settled on the somewhat standardized functionality of inline toolbar, that being reminiscent of the software older than many reading this post. But here's the thing: it's coming from the era where very little consideration was given to things, to begin with. 130
Artem Zakharchenko @kettanaito.com · 30/08/2026I have such a bone to pick with inline toolbars. Have you ever stopped to consider how terribly they are designed? A rant on toolbar design: 2200
Artem Zakharchenko @kettanaito.com · 30/08/2026Here's how all the pieces come together to create a session: 110
Artem Zakharchenko @kettanaito.com · 28/08/2026MSW hits another big milestone: 200,000 repositories on GitHub depend on it for their tests and development. Thank you for choosing tools made with care ❤️ 0100
Artem Zakharchenko @kettanaito.com · 26/08/2026I want you to read this module carefully and then realize that this is an Electron app view that reads from fs both on load and user action and then displays a dynamic context menu based on data sent from the client. What a proper RPC does to a man, huh. 000
Artem Zakharchenko @kettanaito.com · 26/08/2026Me: I gotta make this code faster, there's no way it takes 2s+ to run. The code: 5682
Artem Zakharchenko @kettanaito.com · 25/08/2026Solid 2.0 nails async data fetching in the most elegant way I've seen so far. Just take a look at this beauty: blocking vs non-blocking data fetch. 1301
Artem Zakharchenko @kettanaito.com · 21/08/2026Someone broke this little fellow for Gmail and it's infuriating. 040
Artem Zakharchenko @kettanaito.com · 11/08/2026Tell me you don't have respect for your time without telling me. I'm never going back to Windows. 2201
Artem Zakharchenko @kettanaito.com · 07/08/2026The server-side fetch discussion got me thinking that, perhaps, what we need is a proper, environment-agnostic representation of the underlying primitive of the network—HTTP message. 4251
Artem Zakharchenko @kettanaito.com · 05/08/2026So I built Byte Binding. I've already published my debut book, Loggerheads, with an early prototype of it, and I enjoyed the process so much I decided to make a full app out of it for every author out there who cares about beautiful editions of their books. 140
Artem Zakharchenko @kettanaito.com · 27/07/20265. Finished GraphQL subscriptions support that's coming in MSW 3.0. 140