Steve Sewell Profile picture
Feb 17 9 tweets 5 min read
I've been digging into React Server Components via @ShopifyDevs Hydrogen, and I'm very impressed & excited

Here is a visual explanation of my understanding of RSC and what it means for you 🧵: Image
First, how do you author server components?

In short, they are just React components! With all the latest goodies of concurrent mode, such as elegantly fetching data via hooks

Server components can even fetch private data and are denoted by a file ending in *.server.js Image
Next, how do you load these components?

For Hydrogen, the top level is always a server component.

But, with some caveats, you can mix server components, client (aka traditional) components, and shared components (components that can render on server OR client), in one tree Image
So, how do pages load?

Because of the benefits of concurrent mode, like suspense, we can load pages via streams

For instance, with my Hydrogen app, the header loads immediately as HTML, and then the body (which has dynamic data) streams in each piece as it is ready Image
For the nerds: I find the streaming format very interesting

It is a mix of metadata and VDOM JSON.

It is separated by newlines so each line can be processed at a time, not having to wait for the final result to parse the body

It is fetched as /react?state={pathname:'/', ...} Image
Then, the coolest part. Client-side routing is done without a refresh and doesn't require any new JS to load

The client fetches the new VDOM from the server, which may process lots of JS that doesn't need to load in browser

As it streams in, React patches in the minimal changes Image
The result is a pretty great experience. With some caveats about new mental overhead in needing to have some concern about where is the best place to put certain data and logic (client/sever/shared), you have a very new, very performant way to build fast + dynamic React apps Image
Why have we been diving in? We've been integrating @builderio to Hydrogen and having a blast. It's a great new set of tools to build with for your whole team

github.com/builderio/buil…
Have any Qs or feedback? Please share!

And I invite anyone from the @ShopifyDevs or @reactjs team to correct me if I got anything wrong, I am still digging in to form my understanding and excited for more docs + examples to come

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Steve Sewell

Steve Sewell Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @Steve8708

Jan 25
Innovation in web performance has been 🔥 lately. Here are the projects you need to watch in 2022: 🧵
for extreme rendering performance, @solid_js is the obvious winner. you cannot beat their combination of crushing benchmarks + having an amazing DX and community
for having a huge community and adoption, @react + @nextjs is still the no brainer. the support, ecosystem, and talent in this community is unbeatable
Read 11 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(