Emil Kowalski
Eleven essays on interface craft by the author of Sonner and Vaul, including the argument for animating less
Tier A · StrongArticleProfileCourseemilkowal.ski
Emil Kowalski works on the Web team at Linear and worked on the design team at Vercel before that. The site is one page: a short note, four projects, then eleven essays. The essays are the reason to read it. "You Don't Need Animations" argues that most interfaces animate more often than they should, and it is the piece other designers cite. "Developing Taste" and "Train Your Judgement" treat taste as a skill rather than a gift. "Agents with Taste" asks how to hand that judgement to a model, which is a question few craft writers have taken on. "Friction as a Feature" defends deliberate slowness. "The Magic of Clip Path" and "7 Practical Animation Tips" are technical. "Building a Toast Component" and "Building a Drawer Component" are post-mortems of his own libraries. The four projects are Sonner, an opinionated React toast, Vaul, a React drawer, animations.dev, a paid course on web animation, and aiforui.dev. None of the four is in this corpus yet.
For an agent
Read "You Don't Need Animations" before you add motion to anything. It is the strongest published argument for restraint, and it comes from the person who wrote two widely used animated components, so it is not a purist complaint. Read "Agents with Taste" when a brief asks you to make a model produce good design. Almost no other craft essay addresses that problem directly. Cite the essay, not the site. Every piece sits at its own URL under /ui, and the home page is only an index. Note that /ui itself answers 404, so build a link from the essay slug rather than from the section.
Why it is here. Most writing about interface motion sells more of it. This author built Sonner and Vaul and then argued for using less, which is the rarer and more useful position.
Facts
- License
- Unknown
- Pricing
- Free, Paid
- Framework
- React
- Styling
- Not applicable
- Distribution
- Article, thread, or post
- Platform
- Web
- Content type
- Prose / writing, Code
- Agent readiness
- Structured documentation
- Accessibility
- Unknown
- Maturity
- Actively maintained
- Pricing detail
- The essays are free. The animation course at animations.dev is paid, and a banner on the site announced open enrolment with ten days left on 2026-08-29.
Notable for
- You Don't Need Animations
- Agents with Taste
- author of Sonner and Vaul
- design engineer at Linear, formerly Vercel
- eleven essays on taste and motion
Provenance
Verified 2026-08-29. HTTP 200. https://emilkowal.ski/ 200, 28 KB; the page reads "Emil Kowalski — Design Engineer. Today I work on the Web team at Linear ... Previously, I worked on the design team at Vercel."; a banner reads "Enrollment for my animation course is open! 10 days left to sign up."; the Projects list names aiforui.dev "AI for Designers and Engineers", Sonner "An opinionated toast component for React", animations.dev "A course on web animations" and Vaul "A drawer component for React"; the Writing list names Friction as a Feature, You Don't Need Animations, Agents with Taste, Building a Toast Component, Developing Taste, The Magic of Clip Path, 7 Practical Animation Tips, Train Your Judgement, Building an animation course and Building a Drawer Component. https://emilkowal.ski/ui/you-dont-need-animations 200, 105 KB. https://emilkowal.ski/ui 404, and /writing and /blog also 404. https://emilkowal.ski/llms.txt 404.
Also in Essays, Guides & Courses
6- Codrops · Creative front-end tutorials, demos, and a 2,000-site showcase, running since 2009
- Refactoring UI · 218-page design book for developers: 50 chapters of concrete UI tactics, plus assets
- Stripe Press · Stripe's book imprint: 19 titles on technology, science and progress
- a11yphant · Free interactive coding challenges that teach web accessibility basics
- AI-Native Designer · Defines AI-native vs AI-augmented design work and the five workflow shifts between them
- Building Glass for the Web · How Aave built a cross-browser refractive glass effect with feDisplacementMap