Sign in

Ricky

@ricky.fm
14K followers 917 following 2.5K posts

React core team • Forbes 30 worst over 30

PostsRepliesMedia
Ricky @ricky.fm · 25/06/2026
Merged with some formatting edits, thanks @maxwellcohen.bsky.social!
171
Ricky @ricky.fm · 11/02/2026
That already works, this is the trace I built the docs from trace.cafe/t/BseVMSJlNx
110
Ricky @ricky.fm · 10/02/2026
Does this diagram help? It uses the React Performance Tracks to explain what React is doing, and what you'll see when you use the tracks: github.com/reactjs/reac...
3303
Ricky @ricky.fm · 08/02/2026
Adding more information to React error pages github.com/reactjs/reac...
0381
Ricky @ricky.fm · 31/01/2026
It’s a caveat listed below this
100
Ricky @ricky.fm · 15/01/2026
140
Ricky @ricky.fm · 15/01/2026
codesandbox.io/p/sandbox/co...
2210
Ricky @ricky.fm · 03/12/2025
i’m cackling
030
Ricky @ricky.fm · 22/11/2025
This part in particular isn’t accurate. Popstate navigations are transition enabled, but they commit without yielding if possible. The bug is specially using useOptimistic inside popstate, which most users won’t do themselves and arguably the router shouldn’t either.
160
Ricky @ricky.fm · 18/11/2025
I think we need to dig a bit deeper, because I think the way this is testing the behavior is making it seem worse without showing the benefit. To start, what is the use case for app awaiting in navigation here?
100
Ricky @ricky.fm · 28/10/2025
🤝
0110
Ricky @ricky.fm · 26/10/2025
Anyone remember asm.js? It allowed you to add "use asm" directives to functions and runtimes would compile them to binary. It was ahead of its time, but was criticized as forking JavaScript syntax and creating vendor lock in for Firefox. It became WebAssembly.
4572
Ricky @ricky.fm · 17/10/2025
I documented the initial process here, I seeded the WG with the React 18 members, and I think the best way to manage invites for now is to have a current WG member refer you be invited:
220
Ricky @ricky.fm · 15/10/2025
The same is true of React right now. Many of the new features feel worse than before because they're not integrated into the things you need to use them. But once they are, they will unlock better user experiences with less code than was possible before.
190
Ricky @ricky.fm · 15/10/2025
It's going to take some time for libraries, frameworks, and apps to understand and implement these patterns. In a lot of ways we've taken a step backwards, so we can get even further. But that's the way innovations work - they're never linear.
270
Ricky @ricky.fm · 15/10/2025
The ideal is no more than 3 paints: - a busy state, local to the interaction - a loading state for new pages - the final content, animated in
170
Ricky @ricky.fm · 15/10/2025
Slow network should automatically reveal loading states:
130
Ricky @ricky.fm · 15/10/2025
This is the same when navigating to new pages. Fast network should feel instant:
140
Ricky @ricky.fm · 15/10/2025
As network slows, feedback should remain fast and well designed loading states should automatically kick in:
181
Ricky @ricky.fm · 15/10/2025
When network is fast, apps should feel synchronous:
151
Ricky @ricky.fm · 15/10/2025
which is easier?
2151
Ricky @ricky.fm · 14/10/2025
Meme “JACOBS
BY
MARC JACOBS
FOR
MARC BY MARC JACOBS
IN COLLABORATION WITH
MARC JACOBS FOR MARC BY MARC JACOBS”
1290
Ricky @ricky.fm · 08/10/2025
Part 2 is on the schedule, I’m just going to start the demo over and finish the talk from there
3401
Ricky @ricky.fm · 02/10/2025
yeah the time slicing demo was a classic. it's so good that everyone still talks about it, but it over shadowed the second half of the talk for the I/O benefits and the vision for "async react"
120
Ricky @ricky.fm · 02/10/2025
Finally, since this example is using Activity (stable today) and ViewTransition (stable soon), React animates to the result. While that animation is in progress, React has nothing to do. So it does some more work on the hidden Activities, so they're ready to show next
170
Ricky @ricky.fm · 02/10/2025
After feedback is shown, React can begin working on the result of the click. It renders the DOM to and starts loading data. Then React commits it to the DOM and waits for things like images, fonts, or CSS to load:
170
Ricky @ricky.fm · 02/10/2025
When a user clicks, React prioritizes the updates needed to show feedback for their click. Things like active button states, pending spinners, or optimistic state, all other updates wait for that to finish:
2101
Ricky @ricky.fm · 02/10/2025
This is React Fiber:
3594
Ricky @ricky.fm · 27/09/2025
cooking
screenshot of terminal: 

git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   src/content/blog/2025/09/tbd/react-19-2.md
5640
Ricky @ricky.fm · 25/09/2025
is the desirable behavior here to paint every async request that comes in as fast as possible so there are flashes of intermediate frames? or are you thinking you'll add batching to defer a bit and limiting the number of paints at some point?
100
Ricky @ricky.fm · 25/09/2025
60ms is what good INP looks like for almost a million DOM nodes
000
Ricky @ricky.fm · 25/09/2025
"the scan loses very little performance" bruh the INP is off the charts
200
Ricky @ricky.fm · 23/09/2025
tag yourself I’m
“lots of gas but not much substance”
191
Ricky @ricky.fm · 23/09/2025
Are you specifically asking about how this directive for "use server" is used for defining a “sever component” which is meaningless since that directive is for sever functions?
@ Server Component
'use server'
export default async function Use
// This runs on the server
const user = await fetch /api/
return ( < div>
<h1>{user. name}</h1>
<p>{user. email}</p>
</div>
210
Ricky @ricky.fm · 22/09/2025
React:
110
Ricky @ricky.fm · 22/09/2025
Million:
100
Ricky @ricky.fm · 15/09/2025
this happens because count triggers the fallback, not deferredCount. it's basically the same pitfall as useTransition, but useDeferredValue has a note about it
This optimization requires SlowList to be wrapped in memo. This is because whenever the text changes, React needs to be able to re-render the parent component quickly. During that re-render, deferredText still has its previous value, so SlowList is able to skip re-rendering (its props have not changed). Without memo, it would have to re-render anyway, defeating the point of the optimization.
150
Ricky @ricky.fm · 15/09/2025
Screenshot from google "Yes, a materialized view is a type of database cache because it precomputes and physically stores the results of a query, allowing for faster read access compared to a standard, on-demand view. Like a cache, a materialized view stores data to improve performance by reducing the cost of repeated query execution. However, materialized views have a more formal structure, can have indexes built on them, and are typically refreshed on a scheduled or triggered basis, making them a persistent, performance-boosting resource rather than a temporary cache.
110
Ricky @ricky.fm · 14/09/2025
Notice how this RSC example doesn’t call a React.render() function like you might be familiar with on the client or SSR. You call a Parcel.renderRSC function:
100
Ricky @ricky.fm · 13/09/2025
Is it react-navigation? It looks like a simple_push which is configurable?
120
Ricky @ricky.fm · 13/09/2025
Blue sky: slow animation, but fast and cached reply loads
150
Ricky @ricky.fm · 13/09/2025
Twitter: fast animation, slow and uncached reply loads
130
Ricky @ricky.fm · 13/09/2025
The “use client” page has some diagrams already
010
Ricky @ricky.fm · 13/09/2025
Here's a repro with react-query. Since resetQueries is the only API to re-suspend on refetch, and resetQueries immediately resets the cache, any sync updates into a boundary will force the fallback - including isPending stackblitz.com/edit/usetran...
330
Ricky @ricky.fm · 13/09/2025
I don't know who needs to hear this, but here are some alternatives to fetching data in useEffect:
What are good alternatives to data fetching in Effects? 

Hide Details
Writing fetch calls inside Effects is a popular way to fetch data, especially in fully client-side apps. This is, however, a very manual approach and it has significant downsides:

Effects don’t run on the server. This means that the initial server-rendered HTML will only include a loading state with no data. The client computer will have to download all JavaScript and render your app only to discover that now it needs to load the data. This is not very efficient.
Fetching directly in Effects makes it easy to create “network waterfalls”. You render the parent component, it fetches some data, renders the child components, and then they start fetching their data. If the network is not very fast, this is significantly slower than fetching all data in parallel.
Fetching directly in Effects usually means you don’t preload or cache data. For example, if the component unmounts and then mounts again, it would have to fetch the data again.
It’s not very ergonomic. There’s quite a bit of boilerplate code involved when writing fetch calls in a way that doesn’t suffer from bugs like race conditions.
This list of downsides is not specific to React. It applies to fetching data on mount with any library. Like with routing, data fetching is not trivial to do well, so we recommend the following approaches:

If you use a framework, use its built-in data fetching mechanism. Modern React frameworks have integrated data fetching mechanisms that are efficient and don’t suffer from the above pitfalls.
Otherwise, consider using or building a client-side cache. Popular open source solutions include React Query, useSWR, and React Router 6.4+. You can build your own solution too, in which case you would use Effects under the hood, but add logic for deduplicating requests, caching responses, and avoiding network waterfalls (by preloading data or hoisting data requirements to routes).
2393
Ricky @ricky.fm · 13/09/2025
i tried
React Server Components
Server Components are for use in React
Server Components.
Server Components are a new type of Component that renders ahead of time, before bundling, in an environment separate from your client app or SSR server.
This separate environment is the "server" in React Server Components. Server
Components can run once at build time on your Cl server, or they can be run for each request using a web server.
• Server Components without a Server
• Server Components with a Server
• Adding interactivity to Server
Components
• Async components with Server
Components
230
Ricky @ricky.fm · 13/09/2025
you learn a lot about a website when the css fails to load
screenshot of a broken reddit home page with a giant blue Reddit logo and a post listed with broken styles. also Ego Nwodim is leaving SNL (according to a post in the screenshot)
0281
Ricky @ricky.fm · 12/09/2025
Yes!
Music
Clips
Events
Merch
You liked
2 songs • Hot Mulligan
120
Ricky @ricky.fm · 11/09/2025
How's this? github.com/reactjs/reac...
Screenshot of React docs with a note that says: "The Suspense component is activated by suspending. This includes:

Reading the value of a Promise with use.
Lazy-loading component code with lazy.
Data-fetching libraries that suspend, like TanStack Query and Relay.
Frameworks that support Server Components, like React Router v7 and Next.js App Router.
Suspense does not activate when data is fetched inside an Effect or event handler."
2120
Ricky @ricky.fm · 10/09/2025
Hm it still happens with only one boundary - so there's no batching or throttle of Suspense boundaries at all?
100