This Week In React #147: RSCs, Next.js, Remix, Error Boundary, JSX, Raycast, Spotify, Triplex, ReMDX, Astro, TypeScript...
Tags: react, reactnative
Published: 2023-06-07 19:09:00

---
series: This Week In React
canonical_url: https://thisweekinreact.com/newsletter/147
---

Hi everyone!

This week, we're celebrating [10 years of React](https://twitter.com/sebastienlorber/status/1662957673573130244)! 🥳️

There have been quite a few interesting articles these last 2 weeks, particularly related to the complexity of introduced with Server Components. Dan Abramov has published some interesting resources on the subject. Remix and Redwood have announced their intention to support RSCs.

On the React-Native side, 3 conferences have been held recently and playlists are becoming available on YouTube. I [had a great time at the React-Native-Connection](https://twitter.com/sebastienlorber/status/1664584407775051779), a new React-Native conference in Paris. Thanks to everyone who came and made this first edition a success.

So cool, the newsletter [won a React Open Source Award](https://twitter.com/sebastienlorber/status/1664667086860308481) at the React Summit conference! Thanks to everyone who voted for me, I wasn't expecting to win given the other nominees 😆

[![award](https://thisweekinreact.com/emails/issues/147/award.jpg)](https://twitter.com/sebastienlorber/status/1664667086860308481)

---

💡 Subscribe to the [official newsletter](https://thisweekinreact.com?utm_source=dev_crosspost) to receive an email every week!

[![banner](https://thisweekinreact.com/img/TWIR_POST.png)](https://thisweekinreact.com?utm_source=dev_crosspost)

---

## 💸 Sponsor

[![Start UI](https://thisweekinreact.com/emails/issues/144/start_ui.jpg)](http://web.start-ui.com?utm_source=newsletter&utm_term=this-week-in-react)

**[Start UI [web] - Opinionated web app UI starter](http://web.start-ui.com?utm_source=newsletter&utm_term=this-week-in-react)**

Our **free and open source UI web app starter** offers a quick and easy way to bootstrap your next project. It includes **best practices & production ready tools** to help you get started right away, saving you time and effort in the initial setup phase.

Comes with built-in **features** like 🔐 Authentication, 📱Responsive Layout, 🧑‍💻 User Management, 🇫🇷 Internationalization & Right-to-Left support, 🌚 Dark Mode, 🎛 Advanced components for easy development. You can try out the [example app](http://demo.start-ui.com).

Ready to use with **TypeScript**, **NextJS**, Chakra UI, TanStack Query, Storybook and more.

[🚀 Start UI [web] on GitHub](http://web.start-ui.com)

---

## ⚛️ React

[![Why do Client Components get SSR'd to HTML?](https://thisweekinreact.com/emails/issues/147/client-component.jpg)](https://github.com/reactwg/server-components/discussions/4)

**[Why do Client Components get SSR'd to HTML?](https://github.com/reactwg/server-components/discussions/4)**

Dan Abramov's short visual explanation of the difference between the Client Tree (what we already knew) and the Server Tree (new). I found this diagram interesting, because it demystifies an easy confusion: Client Components are in fact what we used to call simple React components. During SSR, **Client Components are executed on the server**, exactly as before.

---

[![How the Raycast API and extensions work](https://thisweekinreact.com/emails/issues/147/raycast.jpg)](https://www.raycast.com/blog/how-raycast-api-extensions-work)

**[How the Raycast API and extensions work](https://www.raycast.com/blog/how-raycast-api-extensions-work)**

Raycast is an extensible launcher for MacOS, an app renowned for its quality. This article explains the steps they went through to implement their plugin system. They didn't want to compromise on UX and DX: no WebView nor Electron, good security, and the possibility of using npm packages. They finally opted to create a custom React renderer that runs in a separate Node process, and drives native views with Swift through a JSON bridge. It looks a lot like React-Native.

---

- 🥳️ [Celebrating 10 Years of React](https://vercel.com/blog/10-years-of-react): Vercel is celebrating a decade of React by publishing a [round table video](https://www.youtube.com/watch?v=g5BGoLyGjY0) about all the latest React innovations, with Andrew, Sebastian and Delba.
- 👀 [React `<Catch>` API?](https://twitter.com/wongmjane/status/1661786321176911872): upcoming support for Error Boundaries without class component?
- 👀 [Remix + RSC POC](https://twitter.com/ryanflorence/status/1663587026384584704): Remix is finally planning to implement Server Components, and gives one of the reasons why [here](https://twitter.com/remix_run/status/1661017634480201734).
- 💬 [React WG - RSC from Scratch. Part 1: Server Components](https://github.com/reactwg/server-components/discussions/5): Dan Abramov offers a complete deep dive into implementing Server Components from scratch. Part 1 (of 3) is available and describes how to implement the Server Components side.
- 📖 [Next.js Docs Update - Project Organization page](https://twitter.com/delba_oliveira/status/1662211824211877889)
- 📜 [Is React Having An Angular.js Moment?](https://marmelab.com/blog/2023/06/05/react-angularjs-moment.html): does the arrival of Server Components represent a paradigm shift similar to Angular.js vs Angular 2? No, because Server Components are an optional new feature and the rest of React continues to work as before. This article does warn, however, that it may be a little early to recommend and adopt RSCs, and the ecosystem isn't fully ready.
- 📜 [Opinionated notes on React Server components](https://github.com/nilshartmann/react-server-component-material/blob/notes-on-rsc/notes-on-rsc.md): set of notes and reflections on RSCs. Comprehensive and well-documented resource, with many relevant external references.
- 📜 [Isomorphic Development](https://meijer.ws/articles/isomorphic-development): interesting thoughts on the complexity Server Components bring. It's not the Server Components themselves that are complex, but the new hybrid nature of our codebase, and its less well-defined boundaries.
- 📜 [The evolution of React APIs and code reuse](https://frontendmastery.com/posts/the-evolution-of-react-patterns/): reviews the different patterns used over time, and their trade-offs (mixins, HOCs, render props, hooks, RSCs).
- 📜 [Why We Are Dropping Support For Next Js](https://www.stormkit.io/blog/why-we-are-dropping-support-for-next-js): the Stormkit deployment platform is abandoning support for Next.js, which was too complex for their small team to handle. Instead, they propose to use a React + Vite template that supports SSR.
- 📜 [A better learning path for React with server components](https://scastiel.dev/better-learning-path-react): what if RSCs actually made React easier to learn? I think it makes sense if you adopt a fresh perspective.
- 📜 [RedwoodJS’ Next Epoch: All In on React Server Components](https://tom.preston-werner.com/2023/05/30/redwoods-next-epoch-all-in-on-rsc.html): Tom Preston-Werner (creator of GitHub) announcing that the Redwood framework plans to implement React Server Components. Until now, Redwood generated an SPA without SSR (limited for SEO), and the forced use of GraphQL was not always the best choice.
- 📜 [Solving hydration errors in Remix](https://www.jacobparis.com/content/remix-hydration-errors): good advice on debugging React hydration errors. This can also be applied to other frameworks.
- 📜 [What is JSX.IntrinsicElements?](https://www.totaltypescript.com/what-is-jsx-intrinsicelements): TypeScript uses IntrinsicElements to find out which JSX elements are natively supported. It is possible to declare your own native elements, which is what frameworks like React do.
- 📜 [Deploying Next.js on the edge with SST](https://engineering.udacity.com/deploying-next-js-on-the-edge-with-sst-is-sst-the-game-changer-its-claimed-to-be-1f05a0abc27c): positive feedback on using OpenNext and SST to deploy a Next.js app on AWS.
- 📜 [Spotify - Multiple Layers of Abstraction in Design Systems](https://engineering.atspotify.com/2023/05/multiple-layers-of-abstraction-in-design-systems/): Spotify explains how their React design system exposes 3 levels of abstraction (config, slots, custom).
- 📦 [TypeScript 5.1](https://devblogs.microsoft.com/typescript/announcing-typescript-5-1): this new TypeScript version is important for React as it allows better typing of JSX for React, and allows a component to return a Promise (async Server Component), a string, array, boolean... new React typedefs have already been [published](https://twitter.com/sebsilbermann/status/1664356039876124672)!
- 📦 [Triplex - React Three Fiber visual editor](https://twitter.com/itsdouges/status/1664874971481382913)
- 📦 [useHooks.com v2.0 - SSR-safe hooks collection](https://usehooks.com/)
- 📦 [ReMDX - Beautiful Minimalist React & MDX Presentations](https://github.com/cpojer/remdx)
- 📦 [Next-Typesafe-Url - Fully typesafe and zod validated routing for Next.JS](https://github.com/ethanniser/next-typesafe-url)
- 📦 [Redux Toolkit v2.0.0-beta.0](https://twitter.com/acemarke/status/1663707088478953474)
- 📦 [Pastel v2.0 - A Next.js-like framework for CLIs made with Ink](https://twitter.com/vadimdemedes/status/1661343197535129601)
- 📦 [React Aria + React Spectrum - May 24 2023 releases](https://twitter.com/devongovett/status/1661765315825643521)
- 📦 [Astro v2.6 - Middleware, hybrid SSR, custom client directives...](https://astro.build/blog/astro-260/)
- 🔗 [React Handbook](https://reacthandbook.dev/)
- 🎥 [Are React Server Components Really Slower?](https://www.youtube.com/watch?v=3Q2q2gs0nAI): benchmark showing that Pages Router from Next.js is faster than App Router, but the user experience can be better with the latter thanks to streaming.
- 🎥 [How to NOT Poison Your React Server Components](https://www.youtube.com/watch?v=BZlwtR9pDp4): use of the `server-only` package to avoid importing server code into your Client Components.
- 🎥 [Remix Conf - React Core Panel Q&A](https://www.youtube.com/watch?v=WiEtFPYGgbM)

---

## 💸 Sponsor

[![Nylas](https://thisweekinreact.com/emails/issues/147/Nylas.png)](https://info.nylas.com/firesidechat-openai-registrationpage.html?utm_source=twir&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P&utm_content=2023-06-07-Issue-openaireplay)

**[OpenAI + Nylas chat on generative AI : Watch now!](https://info.nylas.com/firesidechat-openai-registrationpage.html?utm_source=twir&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P&utm_content=2023-06-07-Issue-openaireplay)**

Want an inside look at the future of generative AI? Evan Morikawa, Applied Engineering Manager at OpenAI, and Christine Spang, CTO and Co-Founder at Nylas, dive into what’s next for generative AI.

They’ll discuss what it takes to deliver and maintain AI solutions at scale, what AI's next stage of maturity looks like, and much more. [Get the replay now](https://info.nylas.com/firesidechat-openai-registrationpage.html?utm_source=twir&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P&utm_content=2023-06-07-Issue-openaireplay).

Want to start building with ChatGPT + Email API calls in React? [Here’s a guide to get you started.](https://www.nylas.com/blog/how-to-build-with-nylas-using-chatgpt/?utm_source=twir&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P&utm_content=2023-06-07-Issue-chatgptblog)

---

## 📱 React-Native

- 👀 [Nearly ¼ of the top Shopping Apps on the Apple App Store use React Native](https://twitter.com/Baconbrix/status/1664285684583002112): React-Native apps get the best ratings! See also other categories [Foot & Drinks](https://twitter.com/Baconbrix/status/1661775514074247169) and [Finance](https://twitter.com/Baconbrix/status/1662866951784235008).
- 👀 [Help us Kotlin-ify React Native tests](https://twitter.com/cortinico/status/1666001895360454660): the start of a migration of React-Native from Java to Kotlin, starting with testing.
- 👀 [React-Skia-Experiment](https://github.com/wcandillon/react-skia-experiment): William Candillon is experimenting with making the React-Native-Skia library universal ([tweet](https://twitter.com/wcandillon/status/1662037035102683136)).
- 👀 [Portal - Apple Vision Pro app using React-Native](https://twitter.com/Baconbrix/status/1665816002712436736)
- 📜 [How BlueSky Structure Their App and Manage State](https://alexkondov.com/reading-code-bluesky/): guided exploration of the BlueSky open-source codebase,using Expo, React-Native-Web, Mobx...
- 🔗 [React Native Performance Issues Catalogue](https://spangled-split-858.notion.site/React-Native-Performance-Issues-Catalogue-9338979a2a5648e883331ef2050e963c): a Notion DB that lists the causes and symptoms of React-Native perf problems to help you fix them.
- 📦 [React-Native 0.72.0-RC.5](https://github.com/facebook/react-native/releases/tag/v0.72.0-rc.5): new Golden Release Candidate.
- 📦 [vscode-expo-tools](https://twitter.com/cedric_dev/status/1666113468078997507)
- 📦 [style-variants - solution for creating dynamic and reusable styles](https://github.com/oktaysenkan/style-variants)
- 🎥 [App.js 2023 - Youtube Playlist](https://www.youtube.com/playlist?list=PLSk21zn8fFZCfYEMpSqQOHMgyNKc8B7_s)
- 🎥 [Chain React 2023 - Youtube Playlist](https://www.youtube.com/playlist?list=PLFHvL21g9bk30F2UaJfn6TqJn15MAoBOc)
- 🎙️[React-Native-Radio 266 - Chain React Roundup](https://reactnativeradio.com/episodes/rnr-266-chain-react-roundup) + [React-Native-Radio 267 - React Native Windows With Chiara Mooney](https://reactnativeradio.com/episodes/rnr-267-react-native-windows-with-chiara-mooney)
- 🎙️ [React Native Show Coffee Talk #10 - Vercel news, React Canaries & RN macOS 0.71](https://www.youtube.com/watch?v=qvPOkvdG0ZI)

---

## 🧑‍💻 Jobs

🧑‍💼 [**Passionfroot - Senior Full-stack Engineer (Remix) - €160k+, Berlin/remote**](https://passionfroot.recruitee.com/o/senior-fullstack-engineer)

Passionfroot's mission is to empower the independent businesses of tomorrow via YouTube, Podcasts, Social Media, and Newsletters. Join us in building a tool that will empower creators globally to build scalable, sustainable businesses.

🧑‍💼 [**Callstack - Senior React Native Developer - Fully Remote, PLN 21-32k net on B2B, monthly**](https://www.callstack.com/senior-react-native-developer)

Do you want to work on the world's most used apps? Would you like to co-create the React Native technology? Join the Callstack team of React & React Native leaders. Check our website for more details. We are looking forward to seeing your application - show us what you've got!

🧑‍💼 [**G2i - 100% Remote React Native Jobs**](https://twitter.com/gabe_g2i/status/1563204813881425926?s=20&t=ArRLC77BpRwXXCdx8fnUqw)

We have several roles open for developers focused on React Native! Pay is ~160k plus 10% bonus. You must have production experience with RN and be based in the US. DM [@gabe_g2i](https://twitter.com/gabe_g2i) to learn more and don't forget to mention This Week in React.

💡 [How to publish an offer?](https://thisweekinreact.com/sponsor)

---

## 🔀 Other

- [An introduction to @scope in CSS](https://fullystacked.net/posts/scope-in-css/)
- [Running Promises in Parallel: A Visual Guide](https://julesblom.com/writing/running-promises-in-parallel)
- [One Hour Advanced TypeScript Workshop](https://type-level-typescript.com/articles/one-hour-workshop)
- [JavaScript Macros in Bun](https://bun.sh/blog/bun-macros)
- [New to the web platform in May](https://web.dev/web-platform-05-2023/)
- [Introducing the popover API](https://developer.chrome.com/blog/introducing-popover-api/)
- [Web Share API is now a W3C Recommendation](https://www.w3.org/blog/news/archives/9931)
- [WebKit Features in Safari 17 beta](https://webkit.org/blog/14205/news-from-wwdc23-webkit-features-in-safari-17-beta/)
- [Deno 1.34: deno compile supports npm packages](https://deno.com/blog/v1.34)
- [Parcel 2.9](https://parceljs.org/blog/v2-9-0/)
- [XState v5 beta](https://stately.ai/blog/announcing-xstate-v5-beta)
- [Rspack 0.2](https://twitter.com/rspack_dev/status/1664510907379228672)

---

## 🤭 Fun

[![alt](https://thisweekinreact.com/emails/issues/147/meme.jpg)](https://twitter.com/sophiebits/status/1663710200078151681)

See ya! 👋