This Week In React #154: Server Components, Remix, Next.js, ElementRef, SVG Sprites, NextUI, Storybook, Hermes...
Tags: react, reactnative
Published: 2023-08-03 07:38:01

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

Hi everyone!

Once again this week, we've got some great React articles, especially on Server Components!

Last week, I asked whether you preferred direct links or links to Twitter. Your answer was unanimous: **direct links**. On top of that, the Twitter/X experience has been degraded for anonymous users who can no longer see the discussions. So I'll try to avoid Twitter links, with a few exceptions for which I'll use the 🐦 emoji.

---

💡 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

[![Frontendmasters](https://thisweekinreact.com/emails/issues/151/frontendmasters.png)](https://frontendmasters.com/courses/enterprise-ui-dev/?utm_source=email&utm_medium=thisweekinreact&utm_content=uidev)

**[Enterprise UI Development (With React): Testing & Code Quality](https://frontendmasters.com/courses/enterprise-ui-dev/?utm_source=email&utm_medium=thisweekinreact&utm_content=uidev)**

Managing or migrating large apps and codebases? This video course covers what you need to know to scale efficiently whilst maintaining code quality. Covers unit testing, CI pipelines, mocking, code coverage, and more.

---

## ⚛️ React

[![Understanding React Server Components](https://thisweekinreact.com/emails/issues/154/understandingrsc.jpg)](https://vercel.com/blog/understanding-react-server-components)

[**Understanding React Server Components**](https://vercel.com/blog/understanding-react-server-components)

New Vercel article that gives a good overview of React Server Components, their implementation in Next.js, why they exist, when to use them and their limitations. Also covers various related topics: Server Actions, code-splitting, caching, suspense, selective hydration...

---

[![Everything I wish I knew before moving 50,000 lines of code to React Server Components](https://thisweekinreact.com/emails/issues/154/everythingrsc.jpg)](https://www.mux.com/blog/what-are-react-server-components)

[**Everything I wish I knew before moving 50,000 lines of code to React Server Components**](https://www.mux.com/blog/what-are-react-server-components)

Awesome article on RSCs! Feedback that details the 3 main challenges encountered during the adoption at Mux: no CSS-in-JS, no React Context, and additional complexity. Also provides answers to many questions and a strategy for adopting RSCs incrementally.

---

- 👀 [React Working Group - List of libraries that support React Server Components](https://github.com/reactwg/server-components/discussions/6)
- 🐦 [React devs, it's time to start using `Array.prototype.with()`](https://twitter.com/sebastienlorber/status/1686059338647957509)
- 📜 [Speeding up the dbt™ docs by 20x with React Server Components](https://dagster.io/blog/dbt-docs-on-react): feedback on a POC migration of an Angular 1 app to Next.js App Router and React Server Components. Very significant gains reported in terms of loading time, memory consumption, CPU blocking.
- 📜 [Shopify’s platform is the Web platform](https://shopify.engineering/shopifys-platform-is-the-web-platform): Shopify now recommends Remix for creating "Admin Apps", which run in an iframe and communicate with the parent app via an "App Bridge" based on `postMessage()`. An interesting frontend/React architecture for those building a platform that need decoupling.
- 📜 [Partially Controlled Components: A Declarative Design Pattern in React](https://www.jameskerr.blog/posts/partially-controlled-react-components/): introduces a new term/concept to describe components capable of offering both controlled/uncontrolled state on demand, with granularity applicable to the whole state, or a slice of it.
- 📜 [Use svg sprite icons in React](https://www.jacobparis.com/content/svg-icons): explains how to use SVG sprites (more optimised than React SVG components) in a Remix context with a codegen step.
- 📜 [Strongly Type useRef with ElementRef](https://www.totaltypescript.com/strongly-type-useref-with-elementref): TIL about the `ElementRef` TypeScript type, which is used to obtain the type of a React ref from any component, quite similarly to how `ComponentProps` works.
- 📜 [10 Essential React Performance Optimization Techniques for Faster Web Applications](https://techreactlearning.blogspot.com/2023/07/10-essential-react-performance.html)
- 📜 [Remix Error Handling Essentials](https://otiv.dev/blog/essential-remix-error-handling)
- 📦 [Lucia v2.0](https://lucia-auth.com/blog/lucia-2): Lucia is a TypeScript authentication library gaining momentum recently. Including Next.js and Remix integrations.
- 📦 [Million.js Automatic Mode beta](https://million.dev/docs/automatic): now analyses your React code and automatically optimises it with Million.js!
- 📦 [Redwood v6](https://github.com/redwoodjs/redwood/releases/tag/v6.0.0): new stable release with Vite, Prisma 5, Storybook 7, Suspense Router... Prepares the ground for the introduction of streaming support and React Server components.
- 📦 [NextUI Version 2.0](https://nextui.org/blog/nextui-v2)
- 📦 [Joi UI beta - design-agnostic lib from the MUI team](https://mui.com/joy-ui/getting-started/)
- 📦 [Storybook 7.2](https://storybook.js.org/blog/july-2023-update/)
- 📦 [Auto-Form - Automatically creates a @shadcn/ui form based on a zod schema](https://github.com/vantezzen/auto-form)
- 📦 [Framer Motion 10.5 - inView API](https://www.framer.com/motion/in-view/)
- 📦 [Zustand 4.4](https://github.com/pmndrs/zustand/releases/tag/v4.4.0)
- 🎥 [Must Know App Router Secret: Promises For Props](https://www.youtube.com/watch?v=ViVa5JPGrf4)
- 🎙️ [This Month in React – July 2023](https://podcasters.spotify.com/pod/show/reactiflux/episodes/This-Month-in-React--July-2023-e27ijk5)

---

## 💸 Sponsor

[![CoderPad: Code together before you work together](https://thisweekinreact.com/emails/issues/154/coderpad.png)](https://coderpad.io/?utm_medium=3pmedia&utm_source=ThisWeekInReact&utm_campaign=23-Q3-3PMedia-ThisWeekInReact-ACQ-All-Global-Newsletter)

[**CoderPad: Code together before you work together**](https://coderpad.io/?utm_medium=3pmedia&utm_source=ThisWeekInReact&utm_campaign=23-Q3-3PMedia-ThisWeekInReact-ACQ-All-Global-Newsletter)

Hiring front-end developers is hard. 😩 But 4,000+ engineering teams — including at Netflix, Spotify and LinkedIn — have found a better way! 🤠 Skip the algorithm interviews and **run front-end interviews in a fully customizable and collaborative IDE** - where you can:

- drag and drop a React (and Angular or Vue) repo
- add packages with npm install
- let candidates use ChatGPT live in the interview
- watch & share code playback after the interview

Use CoderPad to run fast, fair and real coding interviews that candidates and interviewers trust. [Sign up for free today & hire with confidence](https://coderpad.io/?utm_medium=3pmedia&utm_source=ThisWeekInReact&utm_campaign=23-Q3-3PMedia-ThisWeekInReact-ACQ-All-Global-Newsletter).

---

## 📱 React-Native

[![Measure Hermes engine performance in React Native with Flashlight](https://thisweekinreact.com/emails/issues/154/hermes.jpg)](https://www.bam.tech/article/measure-hermes-engine-performance-in-react-native-with-flashlight)

[**Measure Hermes engine performance in React Native with Flashlight**](https://www.bam.tech/article/measure-hermes-engine-performance-in-react-native-with-flashlight)

The developers at BAM benchmarked the impact of the Hermes runtime on the app start-up time and memory consumption of a React-Native Android app using their [Flashlight](https://github.com/bamlab/flashlight) performance tool. For those who were still in doubt, Hermes clearly outperforms JSC.

---

- 🐦 [Apple Store - 1/5 of top 100 Sports apps use React-Native](https://twitter.com/Baconbrix/status/1684579413688750082)
- 🐦 [React-Native now has end-2-end tests](https://twitter.com/SzymonRybczak/status/1684870142839160832): great news for React-Native release process and QA, the official RNTester app is now tested with Appium and WebDriver.
- 📜 [Dynamic imports supported in react native](https://dev.to/dannyhw/dynamic-imports-supported-in-react-native-273j): the Webpack feature `require.context` (used to import a folder of modules dynamically) has been ported to Metro for the needs of Expo Router. This allows [Storybook React-Native 6.5.5](https://github.com/storybookjs/react-native/releases/tag/v6.5.5) to create an index of stories without a codegen step (in preview), and opens up other interesting possibilities.
- 📜 [Apple - List of APIs that require declared reasons now available](https://developer.apple.com/news/?id=z6fu1dcu): React-Native iOS developers need to prepare for new constraints.
- 📦 [VisionCamera 3.0.0-rc.4](https://github.com/mrousavy/react-native-vision-camera/releases/tag/v3.0.0-rc.4): a number of significant changes in this RC, in preparation for the expected arrival of v3.
- 🎥 [How to make a bottom sheet with React Native Reanimated](https://www.youtube.com/watch?v=lYYiuXcTnnE)

---

## 🧑‍💻 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


- 👀 [New unofficial Observable API proposal](https://github.com/domfarolino/observable)
- 📊 [Help Design the Inaugural State of HTML Survey!](https://lea.verou.me/blog/2023/design-state-of-html/)
- 📜 [Core Web Vitals for Search Engine Optimisation](https://csswizardry.com/2023/07/core-web-vitals-for-search-engine-optimisation/)
- 📜 [Is Jamstack Officially Finished?](https://remotesynthesis.com/blog/goodbye-jamstack/)
- 📜 [New to the web platform in July](https://web.dev/web-platform-07-2023/)
- 📜 [dnt — Publish a hybrid npm module for ESM and CommonJS](https://deno.com/blog/publish-esm-cjs-module-dnt)
- 📦 [Woodpile - SWC AST visitor in Javascript](https://github.com/kwonoj/woodpile)

---

## 🤭 Fun

[![alt](https://thisweekinreact.com/emails/issues/154/meme.jpg)](https://twitter.com/fireship_dev/status/1684324664699674625)

See ya! 👋