Going after OSS projects that are openly governed isn't going to do what you want it to. Vercel makes its money from its hosting platform and paid products. OSS is not a paid product and while contributes goodwill doesn't directly impact the bottomline. And these project's reach well exceed Vercel.
30.09.2025 16:29 — 👍 98 🔁 13 💬 7 📌 3
Innovating React w/ Ricky Hanlon
YouTube video by Ryan Carniato
For the first time in the 4 years I've been doing Friday streams, I will be having a @react.dev Core Team member as a guest.
I'm excited to welcome @ricky.fm on to talk all things React. Past, present, future.
www.youtube.com/live/3vw6EAm...
24.09.2025 17:19 — 👍 86 🔁 14 💬 1 📌 5
all of that is in the pipeline for 2.0
18.09.2025 09:40 — 👍 0 🔁 0 💬 0 📌 0
Ricky's reaction to this was one of my favorites
bsky.app/profile/rick...
18.09.2025 02:08 — 👍 1 🔁 0 💬 0 📌 0
without a bundler, the "use server" will do nothing and the function will run on the client side instead of the server side. but with a bundler, it will allow you to directly interact with server side apis
18.09.2025 01:45 — 👍 0 🔁 0 💬 1 📌 0
both screenshots show client AND server code
solidstart uses "use server" compiler directive, svelte uses .remote.ts, both require bundler plugins to work.
this has nothing to do with SSR, this is making an RPC call to the server to fetch posts when the component is rendered on the client
18.09.2025 01:43 — 👍 0 🔁 0 💬 1 📌 0
well and the "use server"
17.09.2025 02:45 — 👍 1 🔁 0 💬 1 📌 0
Ryan beat me to it lol bsky.app/profile/ryan...
16.09.2025 17:46 — 👍 1 🔁 0 💬 1 📌 0
You can still opt in to 2 - hold previous consistent state. Just wrap the state update in a transition, and set some pending state to true. Since transitions in Solid 2.0 don't get entangled by default, you still have full control over the granularity of pending states.
16.09.2025 17:44 — 👍 2 🔁 0 💬 1 📌 0
Now even though the state tears, the user has a clear indication that something is happening in the background and it's expected to see old state. This also works with state that is derived from async sources, as well as multiple async sources. This provides more control than implicit grouping
16.09.2025 17:44 — 👍 1 🔁 0 💬 1 📌 0
This also provides the developer full control over how and where to manage pending indicators.
If the above solid example was written with 2.0 primitives, you can very easily add a pending indicator using `isPending`, which can work with data that is async or derived from async sources.
16.09.2025 17:44 — 👍 1 🔁 0 💬 2 📌 0
While defaulting to 3 might seem like the default experience is broken or inconsistent, it's actually the most natural way of handling async updates. it's exactly how "fetch in useEffect" or non-suspense loading works. all state updates come in as they complete, no blocking or suspending by default.
16.09.2025 17:44 — 👍 2 🔁 0 💬 1 📌 0
Defaulting to 2 is sensible because the existing content stays on screen. But when every state update is held until all async resolves, you might click a button, see nothing happening for a while, and think that something is broken. pending states also get lumped together quite often.
16.09.2025 17:44 — 👍 2 🔁 0 💬 1 📌 0
Defaulting to 1 is very awkward because the moment you click a button or submit a form that causes refetching, huge chunks of content disappear from the screen. It's a very jarring experience, and the only way to show a pending indicator is by adding a useTransition hook that wraps every update.
16.09.2025 17:44 — 👍 1 🔁 0 💬 1 📌 0
So none of this discussion is about "what UX are we building". In those terms all 3 are "broken" in my opinion.
This discussion is about the default behavior you get out of the framework, and how easy is it for the developer to opt in to a different behavior and/or a pending indicator.
16.09.2025 17:44 — 👍 5 🔁 0 💬 1 📌 0
React defaults to 1, Svelte defaults to 2, Solid defaults to 3.
To be honest, none of them are great options for the UX, which means ultimately it is the developer's responsibility to add pending indicators to let the user know something is happening or some data is out of date.
16.09.2025 17:44 — 👍 5 🔁 0 💬 1 📌 0
1 - Suspend, or don't show anything until the async completes and fall back to a suspense boundary.
2 - Hold, or keep the previous consistent state on the screen until the async completes.
3 - Tear, or show state updates as they come in on the UI.
16.09.2025 17:44 — 👍 3 🔁 0 💬 1 📌 0
I love that we have all three links here that show the three possible behaviors when there is pending async work on an existing UI component.
16.09.2025 17:44 — 👍 3 🔁 0 💬 1 📌 0
can you elaborate on "reverse the graph"?
i just see this
10.09.2025 22:16 — 👍 0 🔁 0 💬 0 📌 0
now hit the retry button
10.09.2025 22:10 — 👍 1 🔁 0 💬 0 📌 0
if you fetch in server components or relay fragments then you're fine, but useSuspenseQuery users are probably gonna be hit with this a whole lot more
10.09.2025 21:57 — 👍 0 🔁 0 💬 0 📌 0
i wonder if the perceived slowness is not just perceived but real slowness caused by suspense blocking component level data fetching
10.09.2025 21:56 — 👍 0 🔁 0 💬 1 📌 0
Posted this on twitter as a comparison in the DX of the upcoming SvelteKit (left) and SolidStart (right)
Almost everything I care about in DX is identical between these two, but I understand different people care about different things
Thoughts? Any meaningful differences I should know?
13.08.2025 01:38 — 👍 52 🔁 1 💬 12 📌 1
congrats on finally shipping this!
14.06.2025 01:46 — 👍 4 🔁 0 💬 0 📌 0
if Meta's usage of React has led to certain heuristics being developed to prevent over-fetching, it makes sense that you'd want to offer those heuristics as a first class citizen within React, and you might also think that the broader ecosystem benefits from the same things.
13.06.2025 02:44 — 👍 1 🔁 0 💬 0 📌 0
i might be totally off-base here, but it's possible that the opinions around data fetching with React are a consequence of how React gets used within Meta (and possibly Vercel), rather than what the general ecosystem is doing.
13.06.2025 02:44 — 👍 3 🔁 0 💬 1 📌 0
it's not a question of capability. both solid and svelte can easily build a temporary cache of sorts in the derived primitives that hold the previous values for a short amount of time in case the dependencies revert back.
it just sounds like a terrible api to offer developers.
13.06.2025 02:14 — 👍 3 🔁 0 💬 1 📌 0
you can't decide what requests are unnecessary as someone who's responsibility is to show data on the UI that is consistent with its dependencies
you can offer heuristics, but they have to be wrapped in an opt-in api, not the default that has to be opted out of
13.06.2025 02:11 — 👍 3 🔁 0 💬 1 📌 0
out of the box caching solutions make it difficult for the ecosystem to build solutions that suit specific use cases. there's no cache strategy that suits everyone.
even something as simple as "keep the last piece of data around for 30 seconds" leads to super annoying experiences
13.06.2025 00:24 — 👍 2 🔁 0 💬 0 📌 0
i don't see how caching data that is no longer needed by the UI is a concern that rendering frameworks should concern themselves with
or have you forgotten the biggest complaints people had with nextjs app router for the longest time until dynamicIO
13.06.2025 00:21 — 👍 2 🔁 0 💬 1 📌 0
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!
building an innovative local-first, data-centric PKM OS on top of @haikuos.bsky.social, an alternative desktop OS. #FOSS #PKG currently a personal research project in need of your valued support 😌
https://sen-labs.org
https://github.com/sen-laboratories
25 years on the web.
Makes CouchDB, PouchDB & #offlinefirst.
CEO at @bsky.neighbourhood.ie.
ASF Member & CouchDB PMC Chair.
Made JSConf EU, Greenkeeper, Hoodie, Mustache.js.
Dissatisfied with the status-quo.
Soft Boy. Likes birds, bikes & bees.
Occasional OCaml programmer. Host of Signals and Threads http://signalsandthreads.com
Catalan living in New York
he/they(((🏳️🌈)))
President of Ecma International
Developing JavaScript at Bloomberg and in Ecma TC39
Opinions are my own, not representing Bloomberg, TC39 or Ecma
https://jviide.iki.fi • A cruel and incompetent charlatan.
I'm a software engineer. Author of Inferno, Lexical and Ripple. Former React core team engineer, and core maintainer of Svelte.
Minister (priest) in the Episcopal Church (🏳️🌈🏳️⚧️❤️), creator of the Leptos web framework for Rust (github.com/leptos-rs/leptos) and of venite.app
Pragmatist & Principal Front-End Engineer. My hobbies include having lots of hobbies, losing interest in my hobbies, and pursuing old hobbies. Lifelong passion in software development and gaming. Recent interests include woodworking, astronomy, and cooking
Building awesome things @egghead.io & @badass.dev
Teaching developers @ Cursor, previously @vercel.com
FE/DX Engineer / 🇰🇷 / https://xiniha.dev
Building 3D HTML Elements ✨ https://lume.io
Solid.js infra team. https://solidjs.com
Custom Elements advocate.
⚒️ SpaceX, NASA, Velodyne Lidar, AKQA, IMVU, SF Fed
Chief Instigator @Netlify.com
Opinions are not my own. As soon as I say something I become new me who hates anything old me did.
https://youtube.com/@parasocialfix
CEO of HTMX
react at meta
formerly: v8/chrome at google
🌐 recompiled.dev
Transfem Infosec girlie. Privacy and open source enthusiast
fixing @t3.gg’s bad code.
software should feel good to use
purveyor of things @ ping.gg (YC W22)
http://uploadthing.com | http://pic.ping.gg