This Week In React #144: Million.js, Layout Animations, Qwik, Lingui, Remix, React-Router, React-Native macOS, Expo Modules...
Tags: react, reactnative
Published: 2023-05-03 16:28:12

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

Hi everyone!

This week is "launch week" for Vercel which should make some nice announcements about React, Next.js and its cloud offer. We already have a small preview of what is coming very soon in Next.js!

There are quite a few great articles to read this week, including some interactive ones. I particularly liked to learn more about Million.js and its concept of "block virtual DOM".

On the React-Native side, the macOS platform is catching up with the release of v0.71, and Expo makes it easier than ever to use local native modules.

There are a lot of React conferences in the next weeks, we should have great announcements! By the way, you might see a flyer for my newsletter at one of them! I'm counting on you to convince your colleagues to sign up for the newsletter.

Speaking of conferences, [React Summit](https://reactsummit.com/?utm_source=email&utm_medium=thisweekinreact) (Amsterdam June 2-6) is the biggest React conference in the world. They offer us a 5% discount (code "ThisWeekInReact5").



---

💡 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

[![Introducing storage on Vercel](https://thisweekinreact.com/emails/issues/144/vercel.jpg)](https://vercel.com/blog/vercel-storage)

**[Introducing storage on Vercel](https://vercel.com/blog/vercel-storage)**

Vercel has just launched its edge-first storage offering, particularly suited for use in React Server Components and Next.js:

- Vercel KV: store key-value Redis, based on Upstash.
- Vercel Postgres: PostgreSQL database, based on Neon.
- Vercel Blob: file storage, based on Cloudflare R2.

It's [Vercel Ship week](https://vercel.com/ship): more news should be announced in the next few days. The image chosen leads us to believe that there will be a Next.js release tomorrow, introducing a new feature **Next.js Server Actions**. This also reveals the will to improve [progressive enhancement](https://twitter.com/sebastienlorber/status/1653701538336915456) in React apps, in a way quite similar to Remix: this form can also work without JavaScript or hydration.

Note: this example is not vulnerable to SQL injections because it uses template literals.

---

[![Million.js - Virtual DOM: Back in Block](https://thisweekinreact.com/emails/issues/144/million.jpg)](https://millionjs.org/blog/virtual-dom)

**[Million.js - Virtual DOM: Back in Block](https://millionjs.org/blog/virtual-dom)**

Interactive article that presents Million.js and its "Block Virtual DOM" concept. Its approach to diffing is different: non-recursive, based on static analysis, compilation and dirty checking, quite similar to Svelte.

Million.js does not replace React, but integrates with it to improve performance. It is recommended to use it only in some very specific cases: a lot of static content and UI trees with a stable structure.

---

[![The Interactive Guide to Rendering in React](https://thisweekinreact.com/emails/issues/144/rendering.jpg)](https://ui.dev/why-react-renders)

**[The Interactive Guide to Rendering in React](https://ui.dev/why-react-renders)**

Interactive article that explains when React re-render a component. A good resource for beginners, with detailed explanations on setState(fn), batching, memo, StrictMode etc...

---

- 🐦 [Dan Abramov - "If we thought Qwik model was better we would have literally implemented it"](https://twitter.com/dan_abramov/status/1651055386101796864)
- 🐦 [CSS scoping - upcoming CSS feature useful for React devs](https://twitter.com/sebastienlorber/status/1653432768544534531)
- 📜 [Making animated tooltip with React and Framer Motion](https://sinja.io/blog/animated-tooltip-with-react-framer-motion): interactive article that implements a nice tooltip system with Floating UI and beautiful Frame Motion layout animations.
- 📜 [Building a Type-Safe Tailwind with vanilla-extract](https://www.highlight.io/blog/typesafe-tailwind): Tailwind is a good solution, but still has some flaws. This article gives an in-depth look at Vanilla-Extract / Sprinkles, a good typesafe alternative.
- 📜 [The URL is the ultimate global state management tool](https://www.jacobparis.com/guides/url-as-state-management): encourages the use of query-string, with some React examples.
- 📜 [Find and fix performance bottlenecks in your Remix app with Server Timing](https://www.jacobparis.com/guides/remix-server-timing)
- 📜 [Building a WebGL Carousel with React Three Fiber and GSAP](https://tympanus.net/codrops/2023/04/27/building-a-webgl-carousel-with-react-three-fiber-and-gsap/)
- 📜 [Server Components vs. SSR](https://www.webscope.io/blog/server-components-vs-ssr)
- 📜 [Best YouTube Channels to learn React in 2023](https://www.code-insights.dev/posts/best-youtube-channels-to-learn-react-in-2023)
- 📦 [Qwik v1.0](https://www.builder.io/blog/qwik-v1): official v1 release of a framework that challenges React with its resumability concept. React can be used in a Qwik application, which should facilitate the adoption.
- 📦 [Lingui 4.0](https://lingui.dev/blog/2023/04/26/announcing-lingui-4.0): overview of the i18n lib, and presents the new v4 features. This lib looks like a good alternative to React-Intl: ICU syntax, message extraction, framework-agnostics, React support...
- 📦 [Remix 1.16](https://github.com/remix-run/remix/releases/tag/remix%401.16.0): stabilizes support for CSS Modules, CSS imports, Vanilla Extract, PostCSS, Tailwind...
- 📦 [React-Router 6.11](https://twitter.com/remix_run/status/1652000618620555264)
- 🎥 [45% failed Dan's Server Component Quiz](https://www.youtube.com/watch?v=AGAax7WzStc)
- 🎥 [Reactathon 2023 Day 1 Livestream](https://www.youtube.com/watch?v=gJaN9CnFqrI)
- 🎙️ [The React Core team talks React Forget and the future](https://twitter.com/PodRocketpod/status/1653429138387243010)
- 👥 [React Summit](https://reactsummit.com/?utm_source=email&utm_medium=thisweekinreact) (Amsterdam, June 2-6) is offering us -5% on tickets (code "ThisWeekInReact5").


---

## 💸 Sponsor

[![Nylas](https://thisweekinreact.com/emails/issues/144/nylas.png)](https://www.nylas.com/?utm_source=TWIR&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P-DSU&utm_content&utm_term)

**[Nylas: Powering email, calendar, and contacts in the products you build](https://www.nylas.com/?utm_source=TWIR&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P-DSU&utm_content&utm_term)**

The [Nylas Email and Calendar APIs](https://www.nylas.com/?utm_source=TWIR&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P-DSU&utm_content&utm_term) allow developers to build communications features that connect them to all major service providers in the world - with a single integration.

Nylas makes selecting a use case and a server-side SDK language easy. You'll get a [step-by-step tutorial complete with a **ready-to-use React frontend**](https://www.nylas.com/blog/how-to-build-email-templates-with-react/?utm_source=TWIR&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P-DSU&utm_content=&utm_term=) and download-ready codebase with your API credentials. Stop building and maintaining individual integrations with multiple providers and [start launching email and calendar features](https://www.nylas.com/?utm_source=TWIR&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P-DSU&utm_content&utm_term) with guaranteed 99.99% uptime and no maintenance downtime.

[Start building with Nylas for free!](https://dashboard.nylas.com/register?utm_source=TWIR&utm_medium=sponsoredemail&utm_campaign=FY23Q2-TWIR-2P-DSU&utm_content=&utm_term=)

---

## 📱 React-Native

[![Introducing React Native macOS 0.71](https://thisweekinreact.com/emails/issues/144/rnmacos.jpg)](https://devblogs.microsoft.com/react-native/2023-04-27-announcing-macos-71/)

**[Introducing React Native macOS 0.71](https://devblogs.microsoft.com/react-native/2023-04-27-announcing-macos-71/)**

Microsoft skipped the v0.69 and v0.70 releases to go directly to v0.71. The goal is now to stay up to date with the other platforms: v0.72 work is in progress. This platform version alignment looks super useful: according to feedback it is not easy to mix different React-Native versions within a single monorepo.

The newly released v0.71 brings experimental support for Fabric, as well as all the new features that have recently been released on other platforms: TypeScript, Flexbox... Microsoft and Meta collaborate and the use of this platform seems to grow within the 2 companies: Meta uses React-Native macOS on Messenger Desktop for example.

---

- 🧵 [File-based Expo Router demo](https://twitter.com/Baconbrix/status/1652404780881289216): Evan Bacon offers a complete Expo Router demo with mobile and web support.
- 🐦 [`npx create-expo-module --local`](https://twitter.com/aleqsio/status/1651268836593655808): great new Expo feature that makes it easy to create a local native module, without needing a monorepo.
- 🐦 [`npx create-expo`](https://twitter.com/Baconbrix/status/1652372955450441729): command to create a new Expo project.
- 🐦 [Bluesky app (iOS + Android + web) built by 1 dev with Expo](https://twitter.com/GergelyOrosz/status/1652679796818694146): Gergely Orosz's statement is causing a lot of debate on Twitter.
- 📦 [Ignite v8.7.0](https://twitter.com/ir_ignite/status/1651064452781953024): replaces the e2e Detox tests with Maestro.
- 📦 [Tamagui 1.17 - selectionStyles](https://twitter.com/tamagui_js/status/1651432667412566016)
- 📦 [react-native-iconify](https://github.com/oktaysenkan/react-native-iconify)
- 📦 [react-native-dnd](https://github.com/mgcrea/react-native-dnd)
- 📦 [react-native-use-list](https://github.com/dozsolti/react-native-use-list)
- 🎥 [How React Native Was Created At Facebook](https://www.youtube.com/watch?v=On9ghjix77c): Christopher Chedeau looks back at the history of React-Native, a project he more or less saved from a probable death.
- 🎥 [React Native Transitions with Skia](https://www.youtube.com/watch?v=PzKWpwmmRqM): William Candillon shows how to use image transitions based on shaders and gestures. This may require some adaptation of existing glsl shaders.
- 🎥 [Is this the Worst Volume Control? React Native and Reanimated](https://www.youtube.com/watch?v=FqdcRBqVS78)
- 🎙️ [RNR 265 - Chain React is Back!!](https://reactnativeradio.com/episodes/rnr-265-chain-react-is-back)
- 👥 [App.js](https://appjs.co/) (Krakow, May 10-12) is offering us [-20% on workshops](https://ti.to/appjs/2023/discount/ThisWeekinReact20) (code "ThisWeekinReact20").
- 👥 [Chain React](https://chainreactconf.com/) (Portland, May 18-19) is offering us -10% on entries (code "thisweekinreact").
- 👥 [React-Native-Connection](https://reactnativeconnection.io/) (Paris, 1er June) is offering us -10% on entries (code "REACTHEBDO").

---

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

- [Deno 1.33](https://twitter.com/deno_land/status/1652030907396530188)
- [Deno KV](https://deno.com/blog/kv)
- [Favour TypeScript Types Over Interfaces](https://www.lloydatkinson.net/posts/2023/favour-typescript-types-over-interfaces/)
- [Practical Guide To Not Blocking The Event Loop](https://www.bbss.dev/posts/eventloop/)
- [TailwindCSS vs. UnoCSS](https://dev.to/mapleleaf/tailwindcss-vs-unocss-2a53)
- [Configuring ESLint, Prettier, and TypeScript Together](https://blog.joshuakgoldberg.com/configuring-eslint-prettier-and-typescript-together/)
- [JS private class fields considered harmful](https://lea.verou.me/2023/04/private-fields-considered-harmful/)
- [StackBlitz - WebContainers now run on Safari, iOS, and iPadOS](https://blog.stackblitz.com/posts/webcontainers-are-now-supported-on-safari/)
- [Why I Like Using Maps (and WeakMaps) for Handling DOM Nodes](https://www.macarthur.me/posts/maps-for-dom-nodes)

---

## 🤭 Fun

[![alt](https://thisweekinreact.com/emails/issues/144/meme.jpg)](https://twitter.com/sebastienlorber/status/1653385919460696068)

See ya! 👋