Alex Vipond 's Avatar

Alex Vipond

@alexvipond.dev.bsky.social

I'm into web development and social impact. Working on BetterHelp and Baleada πŸ‡ΊπŸ‡ΈπŸ‡­πŸ‡³ https://alexvipond.dev https://baleada.dev

53 Followers  |  107 Following  |  48 Posts  |  Joined: 25.10.2024  |  2.07

Latest posts by alexvipond.dev on Bluesky

/sigh, makes sense... seems obvious now, but 3-4 shipped design systems too late. 😬

01.08.2025 19:29 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

◼️

(borg cube)

21.07.2025 19:46 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

It depends on the author's motivations & intentions. Did the author use non-standard syntax because they think it's a better DX? If so, it's a library. Did they use non-standard syntax because of platform constraints, and will they deprecate in favor of the standard? If so, it's still a polyfill IMO

17.07.2025 16:07 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Release v3.6.0-alpha.1 Β· vuejs/core Features vapor mode (#12359) (bfe5ce3) Please see About Vapor Mode section below for details. Performance Improvements reactivity: refactor reactivity core by porting alien-signals (#12349) (3...

Something happened today at VueConf China!

github.com/vuejs/core/r...

12.07.2025 08:24 β€” πŸ‘ 143    πŸ” 26    πŸ’¬ 1    πŸ“Œ 7

AustralianToast

20.06.2025 03:16 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

If this is the Laracon game, it might be the screeching tires of a lamborghini delivering the potato to the next player. Call it a Yamborghini

19.06.2025 23:59 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

10x25 binoculars
10" carbon steel pan
No. 5 1/2 jack plane
Safety razor
Open-back headphones
Guitars

18.06.2025 04:06 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Alex Vipond β€” web development, social impact I'm into web development and social impact. I write code and create content for these topics, and I share it on my website.

"Shitty code reviews make great LLM prompts"β€”just some thoughts about meaningful code reviews that advance others' careers and make your team stronger.

alexvipond.dev/blog/shitty-...

14.06.2025 19:34 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I think you're not aloneβ€”the React Aria slots syntax is very similar to other frameworks like Vue and Svelte, but the implementation is different (relies on React Context rather than render props), so I could see opportunity for confusion.

Any specific components where slots are more difficult?

12.06.2025 22:52 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Highly recommend spending some time horsing on the dedicated roads and paths. No shortcuts, absurd climbs, or hypotenuses allowed, just pure intended vanilla gameplay

12.06.2025 21:12 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Learn React Aria Learn React Aria with this book and annotated codebase, so you can build a world-class component library.

I'm thinking about writing a book about how to build a custom component library from scratch on top of React Aria πŸ€”

If that sounds interesting to you, put your email in here! learnreactaria.com

11.06.2025 02:36 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Alex Vipond β€” web development, social impact I'm into web development and social impact. I write code and create content for these topics, and I share it on my website.

Something that sounds easy, but is tricky to get right: wrap text around the Dismiss button of a clickable card.

The tricky part is making sure you don't sacrifice accessibility features like grouping, labeling, focus rings, etc. Here's how I do it: alexvipond.dev/blog/wrap-te...

11.06.2025 02:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Ooo that just blew my whole mind 🀯🀯🀯

I do see an argument where scoped slots make sure we use scoped data only where the component author intended. And I suppose scoped slots save us the extra effort of setting up a template ref in the parent.

But defineExpose as an alternative to scoped slots...🀯

04.06.2025 01:47 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I've pushed template ref usage very, very far, but still haven't found a use case where defineExpose feels right. IMHO if a parent component needs to read child state, the state should be lifted up, not accessed through template refs

03.06.2025 22:11 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

The earplugs are very underrated! You're still gonna hear the baby cry, which is what you want and need to do, but it really takes the edge off. New parents don't need more cortisol

12.05.2025 00:07 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

The ebook Rethinking Reusability in Vue by @alexvipond.dev provides a deep dive on reusability design patterns in Vue 3 πŸ“— - madewithvuejs.com/rethinking-r...

30.04.2025 11:28 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

Cries in `const { 2: lettuce } = data`

30.04.2025 04:08 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Copy-pasteable:

"tailwindCSS.experimental.classRegex": [
[
"\\/\\*\\* tw \\*\\/([\\s\\S]*?)\\/\\*\\* endtw \\*\\/",
"(?:'|\"|`)([^\"'`]*)(?:'|\"|`)"
],
]

22.04.2025 02:24 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
VS Code settings to apply tailwind intellisense

VS Code settings to apply tailwind intellisense

Code example of Tailwind classes in JS, where intellisense doesn't work out of the box

Code example of Tailwind classes in JS, where intellisense doesn't work out of the box

Simpler example of comment-enabled Tailwind Intellisense at work

Simpler example of comment-enabled Tailwind Intellisense at work

This VS Code config will add @tailwindcss.com Intellisense to all code between a starting comment /** tw */ and an ending comment /** endtw */

This is incredibly useful for reusable classes tucked away in a JS variable or helper function, which TW Intellisense won't automatically check

22.04.2025 02:24 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Alex Vipond β€” web development, social impact I'm into web development and social impact. I write code and create content for these topics, and I share it on my website.

I live and breathe :where(:not()) on legacy SCSS. For a while my only gotcha was lack of Safari 13 support, but in most cases it was still worth it, and now the app has dropped Safari 13 support so it's all good

Related: alexvipond.dev/blog/styling...

24.03.2025 22:11 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 0    πŸ“Œ 1

_You_ can ignore the fringes. People directly affected by their actions can't.

08.03.2025 04:38 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Video thumbnail

HUGE React Aria release! 🍿

πŸ” Autocomplete: Command Palette, Searchable Select + Submenu
πŸ†• 3 new components: Toast, Tree, Virtualizer
🧩 Custom Menu/Popover/Tooltip triggers
πŸŒ‰ Table colspan
πŸ‘† usePress interop, fixing 15+ issues
πŸ’¨ Tailwind v4
πŸ“… DatePicker RTL

react-spectrum.adobe.com/releases/202...

06.03.2025 17:43 β€” πŸ‘ 120    πŸ” 18    πŸ’¬ 4    πŸ“Œ 5

Click the menu icon to open the menu, then toggle reactions on and off

27.02.2025 22:07 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Alex Vipond β€” web development, social impact I'm into web development and social impact. I write code and create content for these topics, and I share it on my website.

I've found LLMs to be pretty fantastic at writing custom, project-specific ESLint rules. Super fun way to open up new doors for code quality, and here's how you get it working with ESLint in your project: alexvipond.dev/blog/add-pro...

13.02.2025 19:52 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Alex Vipond β€” web development, social impact I'm into web development and social impact. I write code and create content for these topics, and I share it on my website.

The solution to this nasty NextJS bug no longer lives exclusively in the comment sections of random old GitHub issues alexvipond.dev/blog/dont-li...

13.02.2025 01:14 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
rollup treeshaking config for Vite app

rollup treeshaking config for Vite app

Vite apps can shave off some bundle size by setting `build.rollupOptions.treeshake` to `smallest`.

This allows rollup to treeshake more aggressivelyβ€”for example, it will now shake unused third-party libraries that didn't set `sideEffects: false` in their package.json.

11.02.2025 15:11 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I implemented all this in a component I call `PortaledPositioned`, which is reusable for all popups (selects, menus, modals, tooltips, etc.) in the design system I'm building.

Haven't decided how to release this code yet, but it'll be available eventually. Hit me up if you want an early look!

28.01.2025 17:25 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

4. Else, anchor the popup to the controller. Set max height to 50dvh minus half the height of the popup controller. Try anchoring to the bottom first, then top, then right, then left. (In all cases I've tested, either the top or bottom works, and the right & left fallbacks are just there for safety)

28.01.2025 17:25 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

1. Portal the popup to the end of the `body`.

2. If screen size indicates mobile device, use a drawer design. Bottom drawer for portrait, side drawer for landscape.

3. Else if the browser doesn't support CSS anchor positioning, center the popup on the screen, on top of a semi-transparent underlay.

28.01.2025 17:25 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Video thumbnail

Here's my progressively enhanced design & positioning logic for popups, implemented with CSS, Tailwind, ResizeObserver, and Vue.

Zero usage of `getBoundingClientRect`, scroll listeners, or any other techniques that thrash the layout or block rendering!

28.01.2025 17:25 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

@alexvipond.dev is following 20 prominent accounts