Emil Kowalski

@emilkowalski109k followers

Working at @Linear, teaching at

Open on X
Top outlier
48.8×
Best organic post
Peak views
743k
Single post
Bookmarks
53k
Across 98 organic posts
Last scan
Oct 16
Community cache
Posts 98 posts
#DatePost↓ OutlierViewsLikesRepostsBookmarks
1Jan 16, '24Introducing Animations on the web A course about how to craft animations that make people feel something. It contains everything I know about motion on the web.48.8×743k4.3k2953.9k
2Apr 8, '25The registration for my animation course is open for the next 10 days. Now with new lessons and components. We'll build all of these and more, source code included.27.6×420k1.4k90864
3Jan 14, '25The registration for my animation course is open for the next 10 days. Now, with a new CSS Animations module! We'll build all of these components and more, source code included.27.1×412k1.8k981.4k
4Oct 14, '25A year at Linear26.6×405k3k771.2k
5Oct 7, '25You can enroll in my animation course for the next 10 days! It's the perfect way to learn the theory behind great animations, but also how to build them in code. We'll cover all of22.1×336k1.9k761.3k
6Jul 25, '23Introducing Vaul - an unstyled drawer component for React.17.4×265k1.8k165914
7Sep 3, '24My animation course is live! It contains everything I know about animations on the web. We'll build all of these and more.16.5×250k2.5k1341.9k
8Aug 4, '25An easy way to make your interface feel more responsive is to add a subtle scale down effect when a button is pressed. A scale of 0.97/0.98 scale on the :active pseudo-class with a16.3×247k3.9k1412.7k
9Oct 7, '24Today is my first day at @linear Excited to be joining this talented team!14.7×223k2.9k18124
10Nov 27, '23Tried building family's tray system on the web. It's not as good as their native implementation, but the combination of Vaul and framer motion gets you pretty close14.4×218k1k53459
11Sep 1, '25Tooltips tip: Tooltips should have a delay before appearing to prevent accidental activation. Once a tooltip is open, hovering over other tooltips should open them with no delay an13.9×212k3.5k1131.2k
12Jul 8, '25You can enroll in my animation course for the next 10 days! It's the perfect way to learn the theory behind great animations, but also how to build them in code. We'll cover all of13.8×210k1.4k75829
13Feb 23, '23Introducing Sonner - an opinionated toast component for React.13.3×202k2k147825
14Apr 25, '24I don't share this one often, but is a project I made last year. It contains a bunch of interviews with designers and engineers from companies like Vercel and Linear. Thought you m11.7×178k2k1362.3k
15Jan 3, '23Introducing my new small side project: I decided to interview designers and engineers about their work as I am fascinated by how other people approach their craft.11.6×176k1.2k102536
16Mar 5, '24View post on X11.5×175k2.6k3971.2k
17Sep 24, '25Every design looks better in light mode10.3×157k2.3k131148
18Sep 20, '23Just released version 1.0 of Sonner. Added simple documentation with @shuding's Nextra, improved the API + you are now able to use Toaster in server components thanks to @huozhi.10.0×151k48632131
19Dec 27, '23Theo just made a great ad for Sonner9.7×148k72220144
20Jul 31, '24Final version of Clerk's toast component9.7×148k1.1k28378
21Jul 15, '25Animating in Public9.4×142k1.3k114675
22Dec 5, '23We've updated the navbar. It's built on top of @raunofreiberg's initial work and is using Radix.8.8×134k88827284
23Jun 23, '25Loader exploration from last year at Linear with @yannglt. It's a mix of `translateZ` and `rotateY`.8.7×133k1.4k33541
24Nov 21, '23During Vercel's hackathon last week, @kevinrupert and I built a time machine for preview deployments. Pressing the 'i' key activates a slider that allows you to compare the differe8.6×131k86060171
25May 22, '24Experimenting with stacked modals8.2×124k1.7k59946
26Aug 11, '25Animating from `scale(0)` usually feels "off". Try animating from a higher initial scale instead (0.9+). It helps it feel more gentle and elegant. Here's the difference between ini8.1×123k2.9k841.4k
27Sep 26, '24Introducing Vaul 1.0. A drawer component for React. Rewritten, improved, with new docs.7.9×120k1.9k133881
28Sep 30, '257 Practical Animation Tips7.9×120k1.2k121970
29Mar 17, '25A mix of clip path and CSS transitions7.9×119k2.2k58822
30Aug 25, '25Hover transitions seen tens, maybe even hundreds of times a day can make your interface feel slower. Make them snappy by removing the transition altogether.7.6×116k1.9k61659
31Mar 11, '24We will build all for of these in Animations on the web. Registration closes in 4 days, March 15th.7.1×108k96939441
32May 13, '24Trying to get some Family-like fluidity with shared layout animations in framer motion. It's still very very wip, there's some stretching etc, will post more wips soon!7.1×108k95622494
33Mar 8, '24Today is my last day at @vercel 🖤 Joining Vercel was a dream come true for me and I'm thankful for the chance I was given 18 months ago. I grew a lot during my time here and had t7.0×107k1.3k1075
34Jun 19, '24Great animations6.7×103k1.2k114863
35Jul 28, '25Keep your animations fast. A faster-spinning spinner makes you think the app loads faster. It improves perceived performance. The same applies to user-initiated actions. Use `ease-6.7×102k1.8k92576
36Aug 29, '23Added snap points to Vaul over the weekend6.5×99k39915110
37Sep 4, '25You Don't Need Animations6.5×98k1.5k157801
38Dec 10, '2420246.4×98k1.8k49756
39Apr 29, '25Good vs Great Animations6.1×93k1.3k140919
40Dec 11, '23Thanks for using my stuff in 2023! I'm working on a new open source component that will be released in early 20246.1×92k1k31268
41Jan 22, '24You can now use Vaul as a side or top drawer by simply adding position="left" for example. Thanks to everyone that uses Vaul and to all contributors!5.8×89k97737349
42Aug 15, '25An easy way to make your dropdowns feel better is to make them origin-aware. They should scale in from the trigger. In this case, `transform-origin: top left`. The default is `cent5.8×88k1.7k78936
43Nov 29, '23Published family's tray system on my site so you can try it out5.8×88k53125207
44Mar 29, '24Been adding 4px of blur to animations recently and I kinda like it?5.7×87k1.1k18573
45May 7, '24I might be a bit biased, but drawers are a great addition to the web5.6×85k1.2k27596
46Apr 29, '24The new chapter of the course has dropped and the registration is open for the next five days. We'll build all of these components and more, source code included.5.4×83k85742452
47Feb 24, '25Developing Taste5.4×83k1.2k159747
48Nov 13, '23I tried to build a web version of Amie's split screen over the weekend. These types of things are so easy to build with framer motion5.2×79k72919236
49Nov 16, '22Toggle your theme using clip-path5.1×01.7k118510
50Nov 1, '23Spent some time improving the dynamic island, the animations should feel a bit better now5.0×76k63529220
51Nov 10, '25An intro animation I made a while back at Linear. It consists of a 4px blur, Y transform, and a subtle stagger.4.9×74k1.3k24657
52Mar 7, '24We've shipped our new Geist documentation at @vercel. It's not only a visual update, we also improved the DX and provided better instructions on how to use our colors and component4.8×73k61334263
53Jul 9, '24The Magic of Clip Path4.8×73k80179490
54Mar 26, '24Liking this background blur to highlight the toast when necessary. It uses a radial mask to create a smooth transition on each side.4.6×69k1.3k29583
55Oct 23, '25If you ever notice a 1px shift at the end of your animation, use `will-change: transform`. This will let the GPU handle the animation and prevent any inconsistencies.4.6×69k1.8k611.1k
56Oct 28, '24Another use case for clip-path4.5×68k1.3k25407
57Jul 18, '25More than 900 designers and engineers have joined my animations course in the last 10 days. That's more than 6,600 students in total since January 2024. Extremely grateful. You sti4.4×67k65412309
58Feb 14, '24Excited about this one4.4×67k77919207
59Apr 11, '25Wrote a short post on how to build a "Hold to Delete" button.4.2×64k1.2k57710
60Jun 27, '23Playing around with a dynamic island clone. It's not perfect, but I'll share some improvements over time4.1×63k69428155
61Jul 22, '24I love getting paid to do things I'd be doing in my free time anyways4.0×61k6985052
62Jun 25, '25Sometimes the best animation is no animation :)4.0×61k1k5456
63Apr 2, '24Had fun building this one over the weekend4.0×61k88025311
64Sep 22, '25A way to make your interface feel faster is to use `ease-out` easing for enter and exit animations. This curve accelerates at the beginning, which feels more snappy than `ease-in` 4.0×60k1.4k61745
65May 29, '25Animated navigation at Linear with Radix's Navigation Menu3.9×60k1k32442
66Oct 30, '23Added dark mode to my personal site, and changed the fonts to Geist3.8×58k360899
67Apr 22, '24One of the components we'll build in the chapter that is dropping next week.3.8×58k74624286
68Mar 14, '22Been working on a toast lately3.8×01.5k57291
69Apr 8, '24Tried recreating Family's trash interaction3.7×57k1k36335
70Jul 4, '24One of the most underrated CSS properties. It's also great for animations, working on a post about it.3.7×56k85426288
71Apr 17, '25Was fun to work on this page together with the rest of the Web team at Linear. Press T or use cmdk to see it in light mode!3.6×54k1.1k11316
72Jul 4, '23Published the dynamic island component on my site so you can try it out3.5×53k47537156
73Aug 15, '23Working on animating Safari's theme-color to match the overlay for Vaul.3.4×52k34610108
74May 20, '25CSS Transforms3.4×51k85387449
75Nov 7, '23I wrote an article about how I built Vaul, a drawer component for React3.3×51k40127151
76Sep 12, '23We are using Vaul in production at Vercel now! You can drag to dismiss, inputs in drawers should work better now as well.3.3×50k4811694
77Aug 28, '23Making scale animations origin-aware is often overlooked, but it feels nicer. See a before/after below.3.3×50k36816125
78Aug 19, '25When showing multiple elements at once, try applying a slight delay to each one for a smoother transition. For product UI, the delay between two elements should not be higher than 3.3×50k1.4k30655
79Feb 6, '24Trying some stuff out and I kinda like that the button changes color depending on the state that it's in?3.2×48k56114194
80Nov 26, '24Momentum3.0×46k83928190
81Feb 26, '24Added drag to dismiss here3.0×46k68020208
82Oct 9, '25I was surprised by how many students liked the .mdc file in the course (works great with tools like Cursor). Each lesson now also has a markdown version. Feed it to an LLM, ask abo2.9×45k68212280
83Mar 1, '22I had a ton of fun building the command menu @Compound and thought I'd share some technical details about it 🧵2.9×079044415
84Jun 11, '24Worked on some fun UI2.8×42k75119300
85Dec 22, '23You can now use Sonner and Vaul in shadcn/ui! Thanks to @shadcn for implementing it.2.7×41k5792493
86Aug 1, '25We are looking for a designer on the web team at Linear. Come work with us :)2.7×41k56024143
87Feb 4, '25Rotating images using clip path and some gradients2.5×38k82616270
88Apr 3, '25Sonner and Vaul are currently getting downloaded over 4,200,000 times from npm per week which is insane to me. Thank you all for using it!2.5×38k780953
89Jan 29, '25You can now swipe toasts to dismiss in Linear. Using Sonner under the hood2.3×35k66119106
90Apr 19, '24Sharing this little button animation + a bunch of other stuff later today in the behind-the-scenes email from the course. Watch your inbox around 7pm ET2.3×34k4304187
91May 22, '25Did some `rotateX()` animations for the latest agents page at Linear2.1×33k73717227
92Mar 1, '24Working on new Geist docs with the amazing @glennui2.1×32k51317145
93Feb 20, '24I released Sonner exactly one year ago. It now has more than 300,000 weekly npm downloads, which is a crazy number to me. Thank you for using it!2.0×30k437718
94Jun 20, '22Built a new /design page inspired by @raunofreiberg quick links to preview all the sites2.0×059620255
95Aug 14, '25Few shots from Linear's Product Intelligence packaging1.6×24k5117131
96May 27, '22⌘ + k in Spotify gives you this 🤯1.2×05413156
97Sep 5, '22Very excited to say that tomorrow will be my first day @vercel. Thrilled to work with amazing people on amazing products.1.0×0505412
98Sep 12, '21Recreated Vercel's Tabs component for a side project. Would you be interested in a blog post where I explain how to build it?0.8×03351253

Scan another creator

@

Run this on any account.

XOutlier builds this table for every public profile you open on x.com, with live data and every post, not just the top 50.