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!
08.10.2025 16:25 β π 15 π 2 π¬ 0 π 0
View overlooking a lake with palm trees in the foreground.
What a nice view to wake up to for React Conf!
06.10.2025 16:42 β π 21 π 0 π¬ 0 π 0
Yes. We're still planning a TagField, which would allow "inline" editing of the tags (like the gmail "To" field). But you can get pretty close with Select + TagGroup + Autocomplete example I showed.
03.10.2025 16:12 β π 2 π 0 π¬ 0 π 0
Yes! bsky.app/profile/devo...
02.10.2025 21:16 β π 1 π 0 π¬ 0 π 0
<Select>
<Label />
<SelectValue>
<TagGroup />
</SelectValue>
<Button />
<Popover>
<Autocomplete>
<SearchField />
<ListBox />
</Autocomplete>
</Popover>
</Select>
Here's the demo shown in the video combining a Select with a TagGroup. You can add a TagGroup within a SelectValue and access the selected items via the render prop function. It also uses Autocomplete to allow filtering. Composition ftw! π
stackblitz.com/edit/rac-sel...
02.10.2025 21:15 β π 4 π 0 π¬ 2 π 1
Big React Aria release! π
π₯³ Multi Select!
π¬ ComboBox onAction prop, e.g. "create" item
β‘οΈ Disclosure animation
β
New SelectionIndicator component β animations in Tabs, ToggleButtonGroup, etc.
π± Improved modal behavior in iOS 26
π Calendar selectionAlignment
react-spectrum.adobe.com/releases/202...
02.10.2025 20:15 β π 76 π 6 π¬ 7 π 1
Cool. I've been testing it with some React Aria demos I'm working on. Very excited about it.
01.10.2025 22:29 β π 3 π 0 π¬ 1 π 0
No ViewTransition? π’
01.10.2025 22:23 β π 6 π 0 π¬ 1 π 0
Pretty amazing that we can now implement swipeable Tabs with native CSS. Updating the React Aria demo I made a few years ago to use native scroll snapping, scroll timeline, and anchor positioning instead of Framer Motion. Feels smooooooth! π
stackblitz.com/edit/rac-swi...
29.09.2025 19:32 β π 66 π 3 π¬ 1 π 0
G174: Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast | WAI | W3C
Btw WCAG actually covers this. But the path to get from each page to the accessibility settings needs to itself be accessible by default so users can find it. www.w3.org/WAI/WCAG21/T...
27.09.2025 02:26 β π 0 π 0 π¬ 1 π 0
I agree that user customization is helpful, but WCAG is a good default. I donβt think itβs acceptable to make the UI inaccessible by default just because there are settings to change it. Users may not be aware of these settings.
27.09.2025 02:19 β π 2 π 0 π¬ 2 π 0
WCAG says 3:1. I know the algorithm isnβt perfect but the spirit is pretty clear I think. Weβve been working on similar components recently so itβs been on my mind. There are also other ways to pass than a dark border or inverted background, like adding an indicator line, bolding the text etc.
27.09.2025 02:14 β π 1 π 0 π¬ 0 π 0
None of them have enough contrast to tell which one is selected
27.09.2025 01:56 β π 0 π 0 π¬ 1 π 0
Looking forward to speaking at React Conf about how Server Components and bundlers work together!
26.09.2025 15:45 β π 19 π 0 π¬ 0 π 0
You can add a "Create" option to a React Aria ComboBox in just a few lines of code.
stackblitz.com/edit/szjf6ul...
23.09.2025 18:15 β π 16 π 1 π¬ 0 π 0
~140
18.09.2025 21:03 β π 1 π 0 π¬ 0 π 0
I think I finally found a solution to reliably prevent scrolling behind modals on iOS! π²
Works when tapping inputs, with different keyboard sizes, when the address bar is collapsed or expanded, programmatic focus, dialog scroll animations, etc.
Coming soon to React Aria! π
18.09.2025 18:55 β π 47 π 1 π¬ 1 π 0
Animating React Aria Tabs, ToggleButtonGroup, etc. is about to be super easy with the new SelectionIndicator component. π₯³
β’ Native CSS transitions, no animation library needed.
β’ Works with SSR with no flicker before JS runs.
β’ No ResizeObserver.
β’ Enter + exit animations.
16.09.2025 20:54 β π 32 π 3 π¬ 2 π 0
In particular, Parcelβs asset graph is language agnostic (CSS, images, etc are natively supported). It also supports multiple environments (eg ssr and csr) in a single module graph, which enabled things like RSC support in a non-hacky way. And itβs a bundler, so dev and prod work the same way.
16.09.2025 14:29 β π 4 π 0 π¬ 1 π 0
Parcel solved all of those issues 5+ years ago π
16.09.2025 14:26 β π 4 π 0 π¬ 1 π 1
In the next release of React Aria, disclosures are animatable with 2 lines of code. π
height: var(--disclosure-panel-height);
transition: height 200ms;
Works with browser page search too!
15.09.2025 18:32 β π 36 π 3 π¬ 1 π 0
The rest of the sentence is talking about the order things occur in time (βrenders ahead of timeβ) so I would assume βbeforeβ also refers to time. Maybe restructuring the whole sentence instead of just that phrase would be better.
14.09.2025 16:58 β π 1 π 0 π¬ 1 π 0
Ehhhh, not necessarily. We say SSR for build time too and thatβs way more confusing. I canβt think of anything better.
14.09.2025 16:24 β π 0 π 0 π¬ 1 π 0
Thatβs why I said βbefore the client loadsβ. How important is it that it happens before SSR? It either has to be before or during SSR to happen before the client loads. One vs two passes is kind of an implementation detail? I just think of it as outputting HTML or βJSONβ.
14.09.2025 15:55 β π 0 π 0 π¬ 1 π 0
I would say βbundlingβ is creating the chunks (build time), not determining which to load (runtime). In client-only apps thatβs done in the browser with dynamic import(), and in RSCs it happens during rendering on the server.
14.09.2025 15:46 β π 0 π 0 π¬ 1 π 0
Bundling happens at build time, not at request time so I donβt think thatβs right.
14.09.2025 15:39 β π 0 π 0 π¬ 1 π 0
Btw I think SSR needs a more specific name now. Iβve been saying βHTML renderingβ or βSSR to HTMLβ. RSCs are also rendering that happens server side, but not to HTML. π€·π»ββοΈ
14.09.2025 15:38 β π 1 π 0 π¬ 1 π 0
Thatβs still before the client loads. I guess if you want to be even more clear that it happens before SSR, maybe βbefore HTML and client renderingβ but itβs hard to capture in only one sentence. I would say something more general first and then have a diagram or something showing the stages.
14.09.2025 15:36 β π 0 π 0 π¬ 2 π 0
Not sure what you mean by this. They do run on the server or during the build, both of which are before the client loads?
14.09.2025 15:25 β π 0 π 0 π¬ 1 π 0
Hmm, technically it is after bundling in current implementations (thereβs no per-request bundling Iβm aware of). I would say βrenders ahead of time, before the client loadsβ or something like that.
14.09.2025 15:19 β π 0 π 0 π¬ 1 π 0
I build simple and fast things. Part of Preact team.
Helping folks build better websites
Remix/React Router @Shopify πΏ
Philadelphia
Building Turbopack at @Vercel. Formerly @parceljs at @atlassian, and @facebook. I heard React was good.
React at Meta https://mattcarrollcode.com
Working on Turbopack @ Vercel
Previously a maintainer of Parcel
web performance and DevTools, mostly.
In '97 I wrote a paper for English class on HTML Image Maps. I haven't changed much since.
front-of-the-front end developer.
usually writing CSS or listening to prog (or both).
they/them
Creator of jQuery, Chief Software Architect at Khan Academy, Japanese print nerd. https://johnresig.com/ https://ukiyo-e.org/ (bot: @ukiyo-e.org)
design + code - shadcn.com
Next.js team @vercel.com
youtube.com/samselikoff
building teams that help teams build
They/Them. Open source. Comic books. Board games.
Prev: Babel, Yarn, Flow, Parcel, Biome
I donβt post here, follow me on X: x.com/adamwathan
Redux maintainer, building time-travel devtools at Replay.io. I blog about React, Redux, and TS at https://blog.isquaredsoftware.com . Answering questions anywhere there's a textbox on the internet, and otherwise out on the golf course!
only raw thoughts here (like very raw, with typos)