Devon Govett

@devongovett.me

I write javascript

Huge React Aria release! 🏝️ Expandable table rows 📉 90% fewer dependencies 🔥 Sub-path imports – improved tree shaking, faster builds, and easier discoverability 🪟 Virtualizer window scrolling ➡️ GridList horizontal orientation 💾 NumberField and RangeCalendar commit behavior

The next version of React Aria has 90% fewer dependencies (from 127 down to just 13). It also supports subpath imports, e.g. "react-aria-components/Button". This means easier upgrades, faster builds, more effective tree shaking, and improved micro-frontend support. 🚀

Looks like Vite 8 is using Lightning CSS as the default CSS minifier! Most next-generation build tools are now using it, including Turbopack, Rspack, Tailwind, Parcel, Bun (a port), and now Vite. ⚡️

Lightning CSS is now used for CSS minification by default. You can use the build.cssMinify: 'esbuild' option to switch back to esbuild. Note that you need to install esbuild as a devDependency.

I'm often asked why you would use a JS library like React Aria for modals instead of the HTML <dialog> element, so I wrote up a detailed response. One of the main features of <dialog> (top layer) is also one of its weaknesses. github.com/adobe/react-...

Modal a11y · adobe react-spectrum · Discussion #9696

Hi, I have 2 questions related to the Modal component. In the documentation example, I tells us to use <Dialog> inside the modal. Why is it internally a <section role="dialog"> instead of a <dialog...

github.com

New React Aria release! 🎁 New `render` prop – customize DOM element, integrate router links & animation libraries 📆 Improved DateField UX – constrain invalid dates on blur instead of while typing 🤖 Agent skills 🔎 Improved doc search 🐞 80+ bug fixes react-aria.adobe.com/releases/v1-...

v1.15.0 | React Aria

New year, new release, and the shine hasn’t worn off from our new documentation website! This month’s release includes expanded customization options via a new render prop, greater input flexibility i...

react-aria.adobe.com

In the next version of React Aria Components, you can use the `render` prop to customize the rendered DOM element. This also receives the component state, which makes it easy to drive animations.

import {Button} from 'react-aria-components';
import {motion} from 'motion/react';

<Button
  render={(domProps, {isPressed}) => (
    <motion.button
      {...domProps}
      animate={{scale: isPressed ? 0.9 : 1}} />
  )}>
  Press me
</Button>

Facebook's Static Hermes is kind of incredible. It can compile JavaScript into C, which is then optimized into native machine code. I just compiled the Less.js source code into a C library. Then I called it from Rust as a native Parcel plugin (no Node). Wild. 👨‍🔬 devongovett.me/blog/static-...

How to compile JavaScript to C with Static Hermes

Lately, I've been working on porting more of Parcel to Rust, and investigating ways to embed JS-based plugins. This post describes how I used Static Hermes to compile Less.js to a native C library tha...

devongovett.me

Introducing the new React Aria docs! 🎉 All-new content and search experience. Interactive CSS and Tailwind examples to get you started quickly – just install with shadcn. New guides and full example apps. MCP server and AI integrations. Check it out! react-aria.adobe.com

If you’re curious how React Server Components integrate with a bundler, how “use client” actually works, and how RSCs can even benefit client rendered apps, tune into my talk at React Conf at 2:30 PST today!