Sign in

Artem Zakharchenko

@kettanaito.com
4.9K followers 228 following 5.7K posts

Software engineer. Author of mswjs.io and @bytebinding.com. Teacher at EpicWeb.dev and egghead.io. Storyteller @zakarcher.com. My debut book "LOGGERHEADS" is out 👇 zakarcher.com/books/loggerheads

PostsRepliesMedia
Artem Zakharchenko @kettanaito.com · 7h
More 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.
A digital display shows version number v3.x alongside a statistic of 346.4K, suggesting a software or app usage metric.
150
Artem Zakharchenko @kettanaito.com · 08/10/2026
I 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 ❤️
A partnership graphic featuring MSW, a heart emoji, and the Beehiiv logo next to each other.
0240
Artem Zakharchenko @kettanaito.com · 08/10/2026
MSW 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.
Code snippet showing various import statements from the MSW (Mock Service Worker) library for handling different types of web requests.
2141
Artem Zakharchenko @kettanaito.com · 07/10/2026
Integrating 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.
Code snippet shows a Vite configuration file importing and using the MSW plugin for application integration.
2291
Artem Zakharchenko @kettanaito.com · 05/10/2026
I'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!
A dropdown menu displays options related to Mock Service Worker, including MSW, Source, Data, and Serve, with a clean, modern design.
1161
Artem Zakharchenko @kettanaito.com · 28/09/2026
It appears I've got a release that fixes.
A list of software fixes with bullet points and checkmarks, highlighting specific terms in blue such as "forbidden" and "Native."
030
Artem Zakharchenko @kettanaito.com · 26/09/2026
Thanks! Sorry, but it called for a meme.
A Spider-Man meme saying "You know I'm somewhat of a writer myself".
140
Artem Zakharchenko @kettanaito.com · 25/09/2026
I 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 · 25/09/2026
It's a patch version, have mercy!
020
Artem Zakharchenko @kettanaito.com · 24/09/2026
Have to make some changes to the EPUB of my book, which gives me one more reason to dogfood @bytebinding.com. Nice.
A screenshot of the Byte Binding application open on the book details page, featuring the cover image for the book Loggerheads.
180
Artem Zakharchenko @kettanaito.com · 23/09/2026
Man, 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.
Icons of various animals: dog, moose, rat, dove, zebra, each with a sound button indicating the sounds they make.
030
Artem Zakharchenko @kettanaito.com · 21/09/2026
An oddly satisfying diff.
0100
Artem Zakharchenko @kettanaito.com · 21/09/2026
This 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.
Code snippets illustrate proper and improper cleanup methods for WebSocket tests, emphasizing memory management in asynchronous operations.
2364
Artem Zakharchenko @kettanaito.com · 17/09/2026
Come 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...
A photo of me giving a public talk in front of a crowd.
071
Artem Zakharchenko @kettanaito.com · 15/09/2026
It'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.
A TypeScript test file using Vitest to check a code snippet’s functionality, specifically for copying code to the clipboard.
4671
Artem Zakharchenko @kettanaito.com · 13/09/2026
In 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/2026
Why would I rate my own book? What kind of elaborate trap is this? No author should be the subject of such open cruelty.
The rating prompt from Goodreads for me to rate my own book.
030
Artem Zakharchenko @kettanaito.com · 12/09/2026
What a heartwarming review to see 😊 I hope more people enjoy the stories I write for myself.
Five-star review praising a heartfelt love story, highlighting its engaging nature and satisfying conclusion.
120
Artem Zakharchenko @kettanaito.com · 10/09/2026
Question: 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/2026
Say what you want, these look real nice together.
2320
Artem Zakharchenko @kettanaito.com · 10/09/2026
If 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/2026
A 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 · 08/09/2026
No way.
A webpage of the Mock Service Worker documentation using a light theme.
1190
Artem Zakharchenko @kettanaito.com · 07/09/2026
Sometimes you're successful in your 30s. Something in your 40s. What matters is your continuous delivery.
1160
Artem Zakharchenko @kettanaito.com · 07/09/2026
Hold on, what if...?
Code snippet shows a Vite configuration file importing the MSW plugin and exporting a default configuration object.
3511
Artem Zakharchenko @kettanaito.com · 03/09/2026
I take back all I said about Windows. This is funny.
0261
Artem Zakharchenko @kettanaito.com · 02/09/2026
Can 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/2026
Not 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/2026
Now, 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/2026
User 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/2026
I 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/2026
Here's how all the pieces come together to create a session:
110
Artem Zakharchenko @kettanaito.com · 28/08/2026
All things considered, Zed is a gorgeous editor.
4180
Artem Zakharchenko @kettanaito.com · 28/08/2026
MSW 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 ❤️
User engagement statistics display 200,000 users with a recent increase of 200,020, represented by small profile images.
0100
Artem Zakharchenko @kettanaito.com · 26/08/2026
I 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/2026
Me: I gotta make this code faster, there's no way it takes 2s+ to run. The code:
5682
Artem Zakharchenko @kettanaito.com · 25/08/2026
Solid 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/2026
Someone broke this little fellow for Gmail and it's infuriating.
040
Artem Zakharchenko @kettanaito.com · 19/08/2026
Really digging TanStack's new logo.
The umbrella from the Bring Me The Horizon's album "That's The Spirit".
0110
Artem Zakharchenko @kettanaito.com · 18/08/2026
That was some good eclipse.
A dark landscape features jagged cliffs under a sky illuminated by a striking red eclipse with a vertical light beam.
180
Artem Zakharchenko @kettanaito.com · 14/08/2026
Wake up, honey, a new side quest just dropped.
041
Artem Zakharchenko @kettanaito.com · 12/08/2026
I love tinkering with CSS animations 😍
1110
Artem Zakharchenko @kettanaito.com · 11/08/2026
Releasing a new version of @bytebinding.com.
A screenshot of GitHub actions listing multiple stages of the release pipeline, most in progress.
050
Artem Zakharchenko @kettanaito.com · 11/08/2026
Tell me you don't have respect for your time without telling me. I'm never going back to Windows.
2201
Artem Zakharchenko @kettanaito.com · 09/08/2026
Here's the cover I did for Loggerheads.
A book cover for the Loggerheads novelette.
151
Artem Zakharchenko @kettanaito.com · 09/08/2026
The logic in Apple's Silo is in short supply.
2110
Artem Zakharchenko @kettanaito.com · 07/08/2026
The 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/2026
Seems like people trust my profile as it is.
2150
Artem Zakharchenko @kettanaito.com · 05/08/2026
So 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.
A screenshot of the Byte Binding application open. A "Chapter I" heading is visible on the page in the middle, followed by the book's contents. A style is being edited in a sidebar to the right. A book's outline is listed to the left.
140
Artem Zakharchenko @kettanaito.com · 27/07/2026
5. Finished GraphQL subscriptions support that's coming in MSW 3.0.
Code snippet showing a GraphQL subscription that publishes a comment with the text "hello world" to a specified API endpoint.
140