This Week In React #182: v18.3, useDeferredValue, 3D, Metro, Worklets, TC39, TypeScript, Effect, Rspack, GraphQL...
Tags: react, reactnative
Published: 2024-04-19 13:59:48

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

Hi everyone!

This week we have a nice Next.js release and many interesting community blog posts.

We can also feel that the React core team is working hard to polish the remaining details for React 19. Unexpectedly, a v18.3 is finally planned with extra warnings. React Native 0.74 is also around the corner.

This week I'd like to introduce you to [**ECMAScript News**](https://ecmascript.news/?utm_source=thisweekinreact). It's my favorite newsletter to keep up to date with ES, TC39, JS tooling, and runtimes.

Next week we have [React Connection](https://reactconnection.io/) and [React Native Connection](https://reactnativeconnection.io/) conferences in Paris. See you there for those that attend 👋. You can still get a [-20% discount](https://www.billetweb.fr/react-connection-2024?discount=TWIR) with my partner code "TWIR".


---

💡 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/182/marmelab.jpg)](https://marmelab.com/react-admin/)

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

Used by 25,000 companies, React-admin is the leading framework for building ERPs, internal tools, and B2B apps with React. Here are 3 reasons to try it:

1️⃣ **Rapid Development** 🏎️🏁 Boasts a library of 170+ hooks and components, allowing you to focus on the unique aspects of your application rather than repetitive CRUD operations.

2️⃣ **Customizable and Extensible** ✨💫 Built on a headless core, react-admin enables complete customization of your app's look and feel. And it gets out of the way when you need custom logic.

3️⃣ **Built-in Best Practices** 🤓 React-admin integrates 7 years of best practices in data fetching, performance, form handling, and security, ensuring a robust and enjoyable developer experience.

Best of all: it's free and seamlessly integrates with your API (no [SSO Tax](https://sso.tax/)). [**Try it now**](https://marmelab.com/react-admin/) 😉

---

## ⚛️ React

[![Next.js 14.2](https://thisweekinreact.com/emails/issues/182/next14.2.jpg)](https://nextjs.org/blog/next-14-2)

[**Next.js 14.2**](https://nextjs.org/blog/next-14-2)

Until we get React 19 and Next.js 15, this new minor version includes development, production, and caching improvements. The highlights are:

- Turbopack (RC): 99.8% of tests passing for `next dev --turbo`
- Build / Production Improvements: Reduced memory usage
- Caching Improvements: Configurable client-side cache revalidation with `staleTimes`
- Errors DX: Better hydration mismatch messages

I’m excited to see a great React hydration mismatch error dialog already implemented in Next.js! As I write this, Turbopack is 99.9% ready for development usage (6 integration tests missing). For build usage, it’s 75% ready so we’ll have to wait a bit more.

---

- 💸 [Clerk - A complete suite of embeddable UIs, flexible APIs, and admin dashboards to authenticate and manage your users.](https://go.clerk.com/JTqLYDZ)
- 👀 [React Core - Upcoming v18.3 release](https://github.com/facebook/react/pull/28843): The React team has finally decided to release a v18 minor version. It should not contain any behavior change but will emit new warnings for deprecated features to help us upgrade to React 19. It should warn us when using string refs, defaultProps on FC/memo components, or when spreading a key prop (🐦 [preview](https://twitter.com/sebastienlorber/status/1780519349247205589)).
- 👀 [React Core - useDeferredValue’s `initialValue`](https://github.com/reactjs/react.dev/pull/6747): In upcoming React 19 canary releases, this hook will take a new 2nd argument affecting the initial render. It will return the `initialValue` on initial render, and schedule a re-render in the background with the `value` returned.
- 👀 [React Core - Automatically reset forms after action finishes](https://github.com/facebook/react/pull/28804): This new React 19 behavior only affects uncontrolled inputs, and aligns with the native platform behavior (it will now be the same with/without JS). It will only affect uncontrolled inputs. They also added a new public API [DOM.requestFormReset](https://github.com/facebook/react/pull/28809) so that form abstraction authors can implement this behavior too.
- 👀 [React Core - DevTools v5.1](https://github.com/facebook/react/pull/28840)
- 👀 [React Core - Document new react-reconciler methods](https://github.com/facebook/react/pull/28750)
- 🗓 [React Summit](https://reactsummit.com/?utm_source=thisweekinreact) - 🇳🇱 Amsterdam - 14-18 June - Get a 10% discount with code "TWIR". Awesome lineup including Evan Bacon, Kent C. Dodds, Theo, Tim Neutkens, Mark Erikson, Fred Schott and so many others!
- 📜 [Zustand and React Context](https://tkdodo.eu/blog/zustand-and-react-context): I cannot agree more with Dominik that suggests putting your Zustand store instance in a React context. This way, you can initialize the store from props, make things easier to test, and allow using a store on multiple subtrees.
- 📜 [CSS in React Server Components](https://www.joshwcomeau.com/react/css-in-rsc/): Josh explains why Styled-Components/Emotion do not play well with RSC, and presents alternative solutions providing a similar styled API, like Linaria, Panda, or Pigment. Avoid FOMO, there's no need to adopt RSCs and these libraries now if your app already works fine.
- 📜 [R19, a dead-simple React 19 framework - Part 2 - The Code; How it works under the hood!](https://www.cmrg.me/blog/rsc-part-2-the-code): Great technical deep dive into what it takes to create a custom React 19 / RSC / Server Actions setup on top of Bun.
- 📜 [Rebuilding "Remix Contacts" in Next.js 14 with Transitions, Server Actions and Prisma](https://aurorascharff.no/posts/rebuilding-remix-contacts-in-nextjs-14-with-transitions-server-actions-and-prisma/): A nicely detailed walkthrough of converting an official Remix tutorial app to Next.js while preserving the progressive enhancement behavior. It also explains the differences between the 2 approaches and lists the pros/cons of each implementation. There’s no clear winner, although Remix looks quite competitive!
- 📜 [The Two-Tree Problem with Styling on the Web](https://danielnagy.me/posts/Post_jt4adn0o5bnr): An interesting read on the DOM/CSS tree separation, and whether React CSS-in-JS or Tailwind solves this problem. The author is pro-inline-style (like me BTW).
- 📜 [Improving our Jest execution time by 300%](https://www.camggould.com/posts/Jest-With-RTL-Is-Slow/): Investigations of Jest execution time on a React codebase. RTL getByRole was a bottleneck, among other things.
- 📜 [Empathetic Coding - Button Component](https://react-japan.dev/en/blog/empathetic-coding-button-component): Nice article showing the steps to design a React button component using TypeScript and Tailwind, keeping in mind maintenance and convenience.
- 📜 [Overcoming Next.js' Search Params Limitation in Layouts](https://www.nico.fyi/blog/workaround-layout-has-no-search-params): Suggest using parallel routes to overcome the limitation.
- 📜 [The process.env frontend time bomb (plus: a sustainable definition of “fixed”)](https://massimilianomirra.com/notes/the-frontend-process-env-time-bomb-plus-a-sustainable-definition-of-fixed): Instead of spreading process.env across your codebase, parses env variables with Zod and exposes app config in a React context.
- 📜 [How to Style a React Application](https://alexkondov.com/full-stack-tao-styling/)
- 📜 [Understanding Layout and Template Next.js App Router](https://www.nico.fyi/blog/understanding-layout-and-template-next-app-router)
- 📦 [Next.js View Transitions](https://next-view-transitions.vercel.app/): Shu from Vercel released a basic userland implementation of CSS View Transitions, although it looks possible that Next.js will provide this feature later.
- 📦 [XState Store](https://stately.ai/blog/2024-04-10-xstate-store): New tiny typesafe event-driven state manager, including a React useSelector API. This reminds me a bit of both Redux and Zustand.
- 📦 [Astro 4.6 - Manual i18n routing, move dev toolbar, CSRF protection, cookies…](https://astro.build/blog/astro-460/)
- 📦 [Next-Video 1.0 - The easiest way to add video in your NextJS app](https://github.com/muxinc/next-video/releases/tag/v1.0.0)
- 📦 [Mantine 7.8.0 - Uncontrolled form mode, form.getValues, form.watch, automatic px to rem conversions](https://mantine.dev/changelog/7-8-0/)
- 📦 [NextUI 2.3 - Date/Time/Calendar components](https://nextui.org/blog/v2.3.0)
- 🎥[Theo - From 0 to Production - The Modern React Tutorial (RSCs, Next.js, Shadui, Drizzle, TS and more)](https://www.youtube.com/watch?v=d5x0JCZbAJs)
- 🎥 [React Paris 2024 - Conf Talks YouTube Playlist](https://www.youtube.com/playlist?list=PL53Z0yyYnpWhUzgvr2Nys3kZBBLcY0TA7)
- 🎥 [Ryan Toronto - Handling RSC Errors in Next.js](https://www.youtube.com/watch?v=idEL0dv2V1A)

---

## 💸 Sponsor

[![FormBuilder SDK for React](https://thisweekinreact.com/emails/issues/171/tripetto.jpg)](https://tripetto.com/sdk/this-week-in-react/?utm_source=thisweekinreact&utm_medium=sponsor&utm_campaign=sdk)

**[FormBuilder SDK for React](https://tripetto.com/sdk/this-week-in-react/?utm_source=thisweekinreact&utm_medium=sponsor&utm_campaign=sdk)**

A complete form solution for React projects, used by Fortune 500 companies. With easy-to-use open-source components for building and running powerful forms inside your React app. Extensively documented, up in minutes, and deeply customizable.

- Builder for creating powerful forms;
- Runner for deploying forms and collecting data;
- Flexible form layouts (conversational, chat etc.) and styling;
- Extensible with custom question types;
- Complete docs, examples, and demos;
- Self-hosted without external dependencies;
- Start, test, and perfect for free.

TWIR exclusive: [Get 25% off your FormBuilder SDK license](https://tripetto.com/sdk/this-week-in-react/?utm_source=thisweekinreact&utm_medium=sponsor&utm_campaign=sdk).

---

## 📱 React-Native

[![Is Zero-Bundle-Size React Server Components possible in React Native?](https://thisweekinreact.com/emails/issues/182/rn0kb.jpg)](https://twitter.com/Baconbrix/status/1780259340458340360)

🐦 [Is Zero-Bundle-Size React Server Components possible in React Native?](https://twitter.com/Baconbrix/status/1780259340458340360)

Evan Bacon answers yes, and gives us a glimpse of what the future might hold in a server-driven React Native world. Exciting times ahead!

---

- 💸 [PowerSync – build local-first apps with simple state management and real-time reactivity. Non-invasive to existing architecture.](https://www.powersync.com/?utm_source=newsletter&utm_medium=sponsorship&utm_campaign=this-week-in-react)
- 🐦 [Brent Vatne's automatic batching demos](https://twitter.com/notbrent/status/1778266063832056285): See the New Architecture in action!
- 🐦 [Nice dialog component demo for destructive actions](https://twitter.com/marceloterreiro/status/1779657639745798411)
- 🐦 [The Ignite Cookbook site quietly received several new recipes](https://twitter.com/jamonholmgren/status/1778829659775676653): Supabase & PowerSync
- 🐦 [3D Rendering with RN on Vision Pro](https://twitter.com/o_kwasniewski/status/1780602815167283485)
- 👀 [rn.new - Pretty neat way to start a new React Native project](https://rn.new)
- 🗓 [App.js Conf](https://appjs.co/?utm_source=thisweekinreact) - 🇵🇱 Kraków - 22-24 May. Get a [10% discount](https://ti.to/appjs/2024/discount/TWIR) with code "TWIR".
- 📜 [Add shapes and textures to 3D animations with React, Expo and ThreeJS](https://www.themorrow.digital/blog/add-shapes-and-textures-to-3d-animations-with-react-expo-and-threejs): Last week, I wrote about an upcoming 3D animation library, but of course there’s already approaches to 3D in RN. This article describes one of them.
- 📜 [How To Implement Metro's Http Cache](https://andrei-calazans.com/posts/metro-http-cache/): Did you know that Meta uses a central cache for their RN devs, meaning that if one dev has already bundled something, another dev can benefit from the cache result. This article describes how remote HTTP caches work in Metro.
- 📜 [React Strict DOM: The Future of Universal Apps with React Native](https://blog.theodo.com/2024/04/react-strict-dom-react-native-web/)
- 📜 [Forgotten art of status bar design](https://brainsandbeards.com/blog/2024-forgotten-art-of-status-bar-design/)
- 📜 [Gist - Apple Privacy Manifest using Expo 50.0.17](https://gist.github.com/catalinmiron/d2cabb835088d0342bc48030464ee615)
- 📜 [react-native-worklets-core 1.0](https://github.com/margelo/react-native-worklets-core/releases/tag/v1.0.0)
- 📦 [VisionCamera 4.0.0-beta.15 - the first beta for Skia Frame Processors](https://github.com/mrousavy/react-native-vision-camera/releases/tag/v4.0.0-beta.15)
- 📦 [react-native 0.74.0-rc.9](https://github.com/facebook/react-native/releases/tag/v0.74.0-rc.9): Adds a template for an iOS privacy manifest to build step
- 📦 [Unistyle 2.6 + 2.7 - Add support for tvOS + visionOS](https://github.com/jpudysz/react-native-unistyles/releases)
- 📦 [RN Storybook v8.0.0-alpha.4](https://github.com/storybookjs/react-native/releases/tag/v8.0.0-alpha.4)
- 🎥 [Simon Grimm - 10 Epic React Native Animation Libraries](https://www.youtube.com/watch?v=8CZy6DjDXK0)
- 🎥 [The Size of Your App Matters | React Native Optimization Shorts 2](https://www.youtube.com/watch?v=d2xlQRoea-8)
- 🎙️ [Rocket Ship 38 - Expo EAS and 100 Snakes with Jon Samp](https://share.transistor.fm/s/6896005f)

---

## 🔀 Other

- 📜 [Updates from the 101th TC39 meeting - Set methods, Regex, Promise.try, isError, Signals…](https://dev.to/hemanth/updates-from-the-101th-tc39-meeting-1mm)
- 📜 [The Making of a TypeScript Feature: Inferring Type Predicates](https://effectivetypescript.com/2024/04/16/inferring-a-type-predicate/)
- 📜 [Deno - How we built JSR](https://deno.com/blog/how-we-built-jsr)
- 📜 [You probably don't need GraphQL](https://mxstbr.com/thoughts/graphql)
- 📜 [Node.js collaboration summit (2024 London)](https://nodejs.org/en/blog/events/collab-summit-2024-london)
- 📜 [Deep Dive into Rspack & Webpack Tree Shaking](https://github.com/orgs/web-infra-dev/discussions/17)
- 📦 [Safari Technology Preview 192 - CSS View transitions, URL.parse()](https://webkit.org/blog/15260/release-notes-for-safari-technology-preview-192/)
- 📦 [Rspack v0.6 - built-in css extract plugin, enable new treeshaking](https://www.rspack.dev/blog/announcing-0.6.html)
- 📦 [pnpm 9.0 - Drop Node 16, improve lockfile format and resolution](https://github.com/pnpm/pnpm/releases/tag/v9.0.0)
- 📦 [Biome 1.7 - improve ESLint/Prettier migration CLI](https://biomejs.dev/blog/biome-v1-7/)
- 📦 [Effect 3.0 - API Stable](https://effect.website/blog/effect-3.0)
- 📦 [gql.tada 1.5 - Pesisted Ops, Turbo mode, new CLI](https://gql-tada.0no.co/devlog/2024-04-15)

---

## 🤭 Fun

[![alt](https://thisweekinreact.com/emails/issues/182/meme.jpg)](https://twitter.com/bndkt/status/1780615189202907426)

See ya! 👋