This Week In React #179: useActionState, Redwood, React-Navigation, RN-Screens, CodePush, VisionOS...
Tags: react, reactnative
Published: 2024-03-29 10:03:29

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

Hi everyone!

Another week full of interesting news! I found many links, and saved a few of them for next week, which should be a quiet one due to Easter Monday.

It's exciting to see Waku and Redwood becoming stronger meta-frameworks, and new innovative experiments built on top of Bun such as Kotekan and a pre-rendering macro.

React Native also has interesting updates, notably a React Navigation v7 sneak peek, and a nice React Native Screen upgrade.

I was at [React.paris](https://react.paris/) last week. It was a really great conf, and it was nice to meet some of you! It's great that Paris is finally back in the React conf game.

The party is not over, because next month we also have [React Connection](https://reactconnection.io/) and [React Native Connection](https://reactnativeconnection.io/) on 22-23 April in Paris! The newsletter is once again a conf media partner. You can get a [-20% discount](https://www.billetweb.fr/react-connection-2024?discount=TWIR) with the code "TWIR", and we'll run a ticket giveaway on Twitter this Friday.


---

💡 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

[![React-admin: The Open-Source Framework for B2B apps](https://thisweekinreact.com/emails/issues/179/reactadmin.jpg)](https://marmelab.com/react-admin/)

**[React-admin: The Open-Source Framework for B2B apps](https://marmelab.com/react-admin/)**

With 23k stars and 500,000 daily users, react-admin is the framework of choice for single-page applications (ERPs, Admins, B2B apps). Compatible with Vite, Next, and Remix, it builds upon acclaimed libraries like react-hook-form, react-query, react-router and material-ui to accelerate your development game.

🌟 Key characteristics include:

- 🔌 Backend agnostic: Connects to any REST or GraphQL API
- 🧩 Rich library with over 200 application building blocks
- 🛠 Complete customization: Replace any component with your own
- 💻 Great developer experience
- 👑 Amazing user experience

[Join React-admin’s community](https://discord.gg/tKyDzXHJ7f) today and witness firsthand why it's the framework of choice for thousands of developers worldwide! [Try it now](https://marmelab.com/react-admin/Tutorial.html), it is free, forever! 😉

---

## ⚛️ React

[![React Server Components now in RedwoodJS](https://thisweekinreact.com/emails/issues/179/redwood.jpg)](https://redwoodjs.com/blog/rsc-now-in-redwoodjs)

[**React Server Components now in RedwoodJS**](https://redwoodjs.com/blog/rsc-now-in-redwoodjs)

Bighorn, the next Redwood “epoch” starting at v8.0, will bet all-in on React Server Components. This article explains why Redwood now prefers RSCs over GraphQL, which wasn’t the best DX to get started with for most devs and projects. GraphQL will remain supported and can be used alongside RSCs in the same app. Redwood Cells now allow you to export a new “data” function to load the Cell data.

You can try Redwood Bighorn today as a v8 canary release, but there are still many rough edges mentioned in the blog post, that they’ll fix before the official major release. There’s another interesting article to read [comparing Redwood routing conventions to Next.js and Remix](https://redwoodjs.com/blog/whats-different-comparing-the-router-in-nextjs-app-api-nextjs-pages-api-remix-and-redwoodjs).

---

- 💸 [React Universe Conf - We care about a diverse lineup, so we prolong our CFP until April 5. We encourage all women in tech to submit talks!](https://www.reactuniverseconf.com/?utm_campaign=React_Universe_Conf&utm_source=email&utm_content=This_Week_in_React)
- 👀 [React Core PR - useActionState](https://github.com/facebook/react/pull/28491): The PR is now merged and has been added to the [canary changelog](https://github.com/facebook/react/blob/main/CHANGELOG-canary.md).
- 💬 [Astro proposal - Form actions](https://github.com/withastro/roadmap/discussions/871): Astro is exploring options for form submissions and mutations to feed their new Astro DB product, taking into consideration React 19 islands using useActionState() and useFormStatus().
- 🐦 [Sebastian Silbermann (React core team) joins Vercel](https://twitter.com/sebsilbermann/status/1772229730747490691)
- 📖 [Remix new docs - CSS files](https://remix.run/docs/en/main/guides/css-files)
- 📜 [Power of Partial Prerendering with Bun](https://aralroca.com/blog/partial-prerendering): An interesting idea, using import attributes to pre-render React components thanks to a Bun macro.
- 📜 [A faster React.memo()](https://romgrk.com/posts/react-fast-memo/): Argues that React is using a generic shallowCompare function for React.memo() that could be greatly optimized by using a specialized comparison function that assumes the things to compare are React props.
- 📜 [What is a layout in React?](https://www.ericburel.tech/blog/what-layout-means-in-react): A good overview presenting how layouts are implemented differently in Remix, Next.js, or Astro.
- 📜 [Diving into the Node.js Website Redesign](https://nodejs.org/en/blog/announcements/diving-into-the-nodejs-website-redesign): Node.js just launched a new Next.js website and shares behind-the-scenes details. They considered Nextra but settled on a custom Next.js setup. The site is statically built, using ISR for dynamic content.
- 📜 [This Pattern Will Wreck Your React App's TS Performance](https://www.totaltypescript.com/react-apps-ts-performance): Matt recommends using “interface extends” instead of “&”, drawing on the story of a Sentry TS perf issue.
- 📜 [Utilizing useOptimistic() across the component tree in Next.js](https://aurorascharff.no/posts/utilizing-useoptimistic-across-the-component-tree-in-nextjs/): Explains why and how to share the useOptimistic value through a React context.
- 📜 [Why I Like React (even in 2024)](https://ejosh.co/de/2024/03/why-i-like-react-even-in-2024/)
- 📜 [Building a «hold to confirm» button with Framer Motion](https://sinja.io/blog/hold-to-confirm-button-react-framer-motion)
- 📜 [React useEffect and objects as dependency - 4 approaches to avoid unnecessary re-renders](https://profy.dev/article/react-useeffect-with-object-dependency)
- 📜 [React-Three-Fiber - Moebius-style post-processing and other stylized shaders](https://blog.maximeheckel.com/posts/moebius-style-post-processing/)
- 📜 [How to Build Your Own ChatGPT Clone Using Clerk & AWS Bedrock](https://conermurphy.com/blog/how-to-build-your-own-chatgpt-clone-using-clerk-aws-bedrock)
- 📜 [Exploring useSyncExternalStore, a lesser-known React Hook](https://blog.logrocket.com/exploring-usesyncexternalstore-react-hook/)
- 📜 [Remix Case Study - Shopify rebuilding Shop with Remix](https://remix.run/blog/shop-case-study)
- 📦 [Waku 0.20 - Introducing “pages router”](https://waku.gg/blog/introducing-pages-router): Waku continues to push toward becoming a first-class React meta-framework. The latest release adds a lightweight file-based router and the introduction article presents its conventions. You can choose between static or dynamic rendering on a per-page basis.
- 📦 [Kotekan - A simple React framework built on Bun, supporting React Server Components](https://kotekan.dev/blog/introducing-kotekan): My co-author Benedikt created his own experimental meta-framework, supporting React Server Components. Unlike other frameworks trying to stay decoupled from a specific runtime, Kotekan leverages tight coupling with Bun for both bundling and runtime. It looks like other interesting things are not mentioned in the intro post, notably a mobile app demo using react-strict-dom and StyleX. That’s impressive that the website is already built with it.
- 📦 [Radix Themes 3.0](https://www.radix-ui.com/blog/themes-3): This new version adds custom color palettes, many new components, and a new layout engine.
- 📦 [shadcn/ui update - Blocks](https://ui.shadcn.com/docs/changelog): Fully responsive, accessible, and composable ready-made components, starting with dashboard layouts and authentication pages.
- 📦 [@vite-pwa/remix - Zero-config PWA Plugin for Remix](https://github.com/vite-pwa/remix)
- 📦 [Remotion 4.0.130 - Lambda renders are now faster](https://www.remotion.dev/blog/faster-lambda)
- 🎥 [Jack Herrington - Finally Fix Your Issues With JS/React Memory Leaks](https://www.youtube.com/watch?v=qERgb3pWfu0)
- 🎥 [UI Engineering - Senior-Level Understanding of React Portals](https://www.youtube.com/watch?v=5F7GrlIPdJ4)
- 🎥 [Theo - The End Of React Router](https://www.youtube.com/watch?v=nZKlPtQqqgQ)
- 🎥 [James Quick - I Didn't Know Next.js Server Actions Could Do This (usage outside forms)](https://www.youtube.com/watch?v=ZZCXnNAOqqU)

---

## 💸 Sponsor

[![The only auth platform you need for enterprise clients](https://thisweekinreact.com/emails/issues/179/workos.jpg)](https://workos.com/?utm_source=thiswekkinreact&utm_medium=newsletter&utm_campaign=q12024)

**[The only auth platform you need for enterprise clients](https://workos.com/?utm_source=thiswekkinreact&utm_medium=newsletter&utm_campaign=q12024)**

WorkOS is a modern identity platform built for B2B SaaS.

⚡ Open-source login UI powered by Radix components, offering all the customizability you need

⚙️ Support for more complex features like single sign-on (SSO) and SCIM provisioning

⌨️ Flexible and easy-to-use APIs, helping companies like Vercel, Loom, and Webflow offer enterprise-grade auth in minutes

💰 User Management that is free up to 1 million monthly active users

[Get started with WorkOS ↗️](https://workos.com/?utm_source=thiswekkinreact&utm_medium=newsletter&utm_campaign=q12024)

---

## 📱 React-Native

This section is now co-authored with [Benedikt](https://twitter.com/bndkt). Feel free to send us your comments by email or on [Twitter](https://twitter.com/bndkt)!

[![React Navigation - Introducing Static API](https://thisweekinreact.com/emails/issues/179/rnav.jpg)](https://reactnavigation.org/blog/2024/03/25/introducing-static-api)

[**React Navigation - Introducing Static API**](https://reactnavigation.org/blog/2024/03/25/introducing-static-api)

Arguably one of the most used and most important React Native libraries out there is React Navigation. The current major version (6) was introduced roughly three years ago, and now it seems we’re getting closer to the next major release. With v7 (currently in alpha), React Navigation is (re-)introducing a static API, which lets you define screens from an object configuration. This allows type inference (if you’ve ever created types for a dynamic React Navigation tree you know what that relieves you of) and also makes deep linking config easier (or partly automatic, even).

Make sure to also read the [v7 upgrade guide](https://reactnavigation.org/docs/7.x/upgrading-from-6.x/) if you want to know about other changes coming!

---

- 💸 [Omlet - Measure React Native component usage in production. Track adoption and get data for codebase improvements in \<5 minutes setup](https://omlet.dev/?utm_campaign=partner_this-week-in-react_newsletter-quick-link-rn-mar-2024)
- 🐦 [React Native Server Components on visionOS demo](https://twitter.com/SzymonRybczak/status/1772987077488935208)
- 📜 [Building multi-window applications with React Native visionOS](https://www.oskarkwasniewski.dev/blog/react-native-visionos-multi-window-apps): Learn how to not only enable multiple windows in visionOS apps, but also how to share React state between them.
- 📜 [Expo - How to replace App Center and CodePush](https://expo.dev/blog/how-to-replace-app-center-and-codepush): As reported last week, CodePush is shutting down on March 31, 2025.
- 📜 Two Expo case studies: [Win your March Madness bracket with this Expo app](https://expo.dev/blog/march-madness-expo-app) and [incident.io harnesses the power of native modules and CNG](https://expo.dev/blog/incident-io-harnesses-the-power-of-native-modules-and-cng)
- 📜 [Rethinking Layout Practices - A minimalistic Stack component that sets the foundation for doing layout well](https://www.reactnative.university/blog/rethinking-layout-practices): Interesting take: Never layout using padding or margin on Text or View components and instead introduce a Stack component (Tamagui does this for example).
- 📜 [Optimize Your React Native App’s JavaScript Bundle](https://www.callstack.com/blog/optimize-react-native-apps-javascript-bundle): The title doesn’t give it away, but this is an interesting overview of alternative bundlers for RN. Sadly, all of these still have pretty big trade-offs compared to Metro.
- 📜 [How To Add Social Auth With AWS Amplify And React Native?](https://scientyficworld.org/social-auth-with-aws-amplify-and-react-native/)
- 📜 [Optimize React Native Apps' Battery Drain With Mobile-Dedicated Libraries](https://www.callstack.com/blog/optimize-battery-drain-in-react-native-apps)
- 📜 [How Can Higher-Order Components Improve Performance of React Native Apps?](https://www.callstack.com/blog/improve-react-native-performance-with-higher-ordered-components)
- 📦 [@dev-plugins/redux](https://www.npmjs.com/package/@dev-plugins/redux): Plugin for Expo Dev Tools to debug Redux stores.
- 📦 [react-native-screens 3.30.0](https://github.com/software-mansion/react-native-screens/releases/tag/3.30.0): Now includes a "go back" gesture and supports visionOS
- 📦 [react-native 0.74.0-rc.5](https://github.com/facebook/react-native/releases/tag/v0.74.0-rc.5)
- 🎙️ [RNR 292 - RNR Explains: Metro Bundler](https://reactnativeradio.com/episodes/rnr-292-rnr-explains-metro-bundler)
- 🎥 [Theo - The New React Native Architecture](https://www.youtube.com/watch?v=BdPkVl4Y8TQ)
- 🎥 [Rocket Ship 35 - React Native Skia with William Candillon](https://share.transistor.fm/s/15269c3f)
- 🎥 [Simon: Build a FinTech Clone with React Native (API Routes, Zustand, Tanstack Query, FaceID, Charts, Clerk)](https://www.youtube.com/watch?v=iDZBeIgcixk): Usually we pick short, but valuable videos to save you time. This one is over 5½ hours long(!), but I highly recommend it if you want to observe a state-of-the-art RN app build from start to finish.

---

## 🔀 Other

- 📜 [TypeScript Flow Nodes - How Type Inference Is Implemented](https://effectivetypescript.com/2024/03/24/flownodes/)
- 📜 [Optimizing Javascript for fun and for profit](https://romgrk.com/posts/optimizing-javascript/)
- 📜 [Why TypeScript Doesn't Include a throws Keyword](https://www.learningtypescript.com/articles/why-typescript-doesnt-include-a-throws-keyword)
- 📜 [JavaScript Visualized - Promise Execution](https://www.lydiahallie.com/blog/promise-execution)
- 📜 [Astro - Migrating 500+ tests from Mocha to Node.js](https://astro.build/blog/node-test-migration/)
- 📜 [Kuto, a reverse JS bundler](https://samthor.au/2024/kuto/)
- 📦 [VitePress 1.0 - Vite & Vue Powered Static Site Generator](https://blog.vuejs.org/posts/vitepress-1.0)
- 📦 [Microsoft TypeChat 0.1 - Get structured output from AI language models](https://microsoft.github.io/TypeChat/blog/announcing-typechat-0-1-0/)
- 🎥 [Node.js - The Documentary](https://www.youtube.com/watch?v=LB8KwiiUGy0)
- 🔗 [Runtime Compatibility - Display APIs compatibility across different JavaScript runtimes](https://runtime-compat.unjs.io/)

---

## 🤭 Fun

[![alt](https://thisweekinreact.com/emails/issues/179/meme.jpg)](https://twitter.com/ryanflorence/status/1770638771392049400)


See ya! 👋