This Week In React #156: Server Actions, React Falls Behind, Expo Builds, Suspense Throttling, Obsidiosaurus, Expo DevTools...
Tags: react, reactnative
Published: 2023-08-17 08:39:54

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

Hi everyone!

This week, we've got many articles from the React and React-Native community, and the latest Expo Launch Party announcements. Some articles are very long, and I didn't have time to read them all.

📷 I've been too busy creating the newsletter's [**Instagram account**](https://www.instagram.com/thisweekinreact/)! I plan to post visual React news and tips there, including the best memes I couldn't include here 🤭.

🧑 I've also removed the Jobs section, which didn't add much: I'll see later how to reintegrate it.

👥 For React-Native devs: [React Native EU](https://www.react-native.eu/) (Wrocław/Poland, 7-8 September) is offering us a [-15% discount on admissions](https://ti.to/react-native-eu/2023/discount/thisweekinreact15).

---

💡 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

[![Enterprise Grade APIs for Feeds, Chat, & Video!](https://thisweekinreact.com/emails/issues/153/stream.jpg)](https://getstream.io/video/voice-calling/?utm_source=thisweekinreact&utm_medium=sponsorship&utm_content=&utm_campaign=thisweekinreact_July2023_video_klmh22)

[**Enterprise Grade APIs for Feeds, Chat, & Video!**](https://getstream.io/video/docs/react/?utm_source=thisweekinreact&utm_medium=sponsorship&utm_content=&utm_campaign=thisweekinreact_July2023_video_klmh22)

Stream is the maker of enterprise-grade **APIs** and **SDKs** that help product and engineering teams solve two common problems at scale: in-app chat and social activity feeds.

With Stream, developers can integrate any type of messaging or feed experience into their app in a fraction of the time it would take to build these features from scratch. Stream Chat makes it easy for developers to integrate rich, real-time messaging into their applications.

Stream provides robust client-side SDKs for popular frameworks such as [**React**](https://getstream.io/chat/sdk/react/?utm_source=thisweekinreact&utm_medium=sponsorship&utm_content=&utm_campaign=thisweekinreact_July2023_video_klmh22), [**React-Native**](https://getstream.io/chat/sdk/react-native/?utm_source=thisweekinreact&utm_medium=sponsorship&utm_content=&utm_campaign=thisweekinreact_July2023_video_klmh22), Expo, Flutter, Android, Angular, Compose, Unreal, and iOS.
Unlock enterprise-grade features, functions, and UI components completely free for your startup or side project with the Maker Account.

[**Try the new React Video tutorial!**](https://getstream.io/video/docs/react/?utm_source=thisweekinreact&utm_medium=sponsorship&utm_content=&utm_campaign=thisweekinreact_July2023_video_klmh22)

---

## ⚛️ React

[![Can React Server Actions finally fix forms?](https://thisweekinreact.com/emails/issues/156/serveractions.jpg)](https://www.mux.com/blog/what-are-react-server-actions)

[**Can React Server Actions finally fix forms?**](https://www.mux.com/blog/what-are-react-server-actions)

A great introduction to Server Actions, a forthcoming React feature that has already been integrated into Next.js 13.4 (experimental). Includes a short tutorial on uploading a video with a title. Server Actions can return a response to give feedback to the user, but it's clear that this isn't yet an ideal DX.

In my opinion, Server Actions should aim to fully support progressive enhancement. This probably requires to introduce a "flash" API to manage feedback without any client-side JavaScript. This exists in many backend frameworks, and Remix offers a ([`session.flash()`](https://remix.run/docs/en/main/utils/sessions#sessionflashkey-value)) API. Related info that might interest you: with [`action.$$FORM_ACTION`](https://twitter.com/sebastienlorber/status/1689921046856474625) you can extend React's progressive enhancement behavior.

---

- 💸 [Zero To Shipped - Master Fast-Paced Fullstack Development and **Finally** ship that product](https://www.zerotoshipped.com/)
- 🧑‍🎓 [React.dev - Using TypeScript](https://react.dev/learn/typescript): new official documentation page.
- 💬 [Next.js RFC - Google Tag Manager and gtag in next/third-parties](https://github.com/vercel/next.js/discussions/53868): offers to integrate Google Analytics using a hook rather than a component, with possibly Web Worker support.
- 🐦 [Million.js Automatic Mode - Video trailer](https://twitter.com/aidenybai/status/1689773623827943424)
- 📜 [Things you forgot (or never knew) because of React](https://joshcollinsworth.com/blog/antiquated-react): a very long criticism of React, considered to be an outdated framework. It's still an interesting read, even if [I disagree](https://github.com/josh-collinsworth/joco-sveltekit/issues/35#issuecomment-1680817566) and think the author is unfair.
- 📜 [Fantastic closures and how to find them in React](https://www.developerway.com/posts/fantastic-closures): explains what a stale closure is in React and presents various cases that can introduce this problem, then proposes a solution based on `useRef()`.
- 📜 [The simplest example to understand Server Actions in Next.js](https://scastiel.dev/simplest-example-server-actions-nextjs): very simple Server Actions example, easy to understand, and providing a practical way of making RPC calls to your API.
- 📜 [On React Suspense’s throttling](https://andreigatej.dev/blog/on-react-suspense-throttling/): highlights a surprising behaviour of React when you nest `<Suspense>`.
- 📜 [Quit Your YAP-ing](https://kyleshevlin.com/quit-your-yapping): encourages you to abandon the "Yet-Another-Prop" syndrome and use composition instead.
- 📜 [Node.js's Config Hell Problem](https://deno.com/blog/node-config-hell): Deno's criticism of projects like Next.js, which often have dozens of configuration files.
- 📜 [Supabase - Vercel Integration and Next.js App Router Support](https://supabase.com/blog/using-supabase-with-vercel): an integration worth studying. Includes APIs with interesting names like `createClientComponentClient` 😅.
- 📜 [Lifting Off with Astro](https://remotesynthesis.com/blog/lifting-off-with-astro/)
- 📜 [Form Validation with React Hook Form](https://claritydev.net/blog/form-validation-react-hook-form)
- 📜 [Introducing a new lint rule for React Testing Library](https://blog.testdouble.com/posts/2023-07-31-a-new-rtl-lint-rule/)
- 📜 [How to Use Jotai and useTransition for Mutation](https://blog.axlight.com/posts/how-to-use-jotai-and-use-transition-for-mutation/)
- 📜 [Coding the stars - An interactive constellation with Three.js and React Three Fiber](https://supabase.com/blog/interactive-constellation-threejs-react-three-fiber)
- 📦 [React Aria - August 9 Releases - HTML form submit/reset, DropZone, FileTrigger...](https://react-spectrum.adobe.com/releases/2023-08-09.html)
- 📦 [Natuerlich - Composable interactions for WebXR experiences - With React-Three-Fiber support](https://github.com/coconut-xr/natuerlich)
- 📦 [Reakit - August 2023 update](https://newsletter.ariakit.org/p/all-things)
- 📦 [Obsidiosaurus - Obsidian -> Docusaurus Converter](https://github.com/CIMSTA/obsidiosaurus)
- 📦 [tw2panda - Easily migrate code from Tailwind to Panda CSS](https://github.com/astahmer/tw2panda)
- 🎥 [Why I Stopped Using Next.js And Chose Astro Instead](https://www.youtube.com/watch?v=BoeZqPaYw9s)
- 🎥 [Responsive Framer Motion with Tailwind CSS](https://www.youtube.com/watch?v=xSuxsfn13xg)
- 🎥 [Dominik Dorfmeister: React Query With The App Router](https://www.youtube.com/watch?v=R4NHXrvwZWA)

---

## 💸 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

[![Expo Preview - Fully customizable builds on EAS Build](https://thisweekinreact.com/emails/issues/156/easbuild.jpg)](https://expo.dev/changelog/2023/08-10-custom-builds)

[**Expo Preview - Fully customizable builds on EAS Build**](https://expo.dev/changelog/2023/08-10-custom-builds).

Expo has come up with a new system for EAS Build that allows you to customise the flow with a Yaml file, which should give you a lot of flexibility to use the monorepo tools of your choice (Nx, Turbo, Rush...) or add your own CI steps. It looks quite similar to GitHub Actions. TIL: it seems EAS is using Fastlane on iOS builds.

---

- 👀 [Expo Proof of concept - expo-sqlite integration with CR-SQLite](https://expo.dev/changelog/2023/08-10-cr-sqlite): SQLite and CRDT integration to ease creation of local-first mobile apps.
- 👀 [Expo Proof of concept - Expo CLI Dev Tools Plugins](https://expo.dev/changelog/2023/08-10-dev-tools-plugins): Expo wants to offer a plug-in system for creating DevTools, and presents us a demo with Apollo DevTools. This should eventually replace Flipper plugins.
- 🐦 [Reanimated on react-native-windows demo](https://twitter.com/piaskowyk/status/1689982162886430721)
- 🐦 [Async Components + use() hook demo](https://twitter.com/SzymonRybczak/status/1691037156712599552)
- 🐦 [Half of the Top 20 iOS Sports apps are powered by React Native](https://twitter.com/Baconbrix/status/1690805340290301954)
- 📜 [Tale of a Web Developer Improving Startup Performance for a large React Native App](https://medium.com/engineering-udaan/reacting-to-change-tale-of-a-web-developer-improving-startup-performance-for-a-large-react-native-854f8a4850fd)
- 📜 [Adding React-Native to a complex app - 4-part series](https://www.nearform.com/blog/adding-react-native-to-a-complex-app-part-1-planning/)
- 📜 [Getting started with react native storybook](https://dev.to/dannyhw/getting-started-with-react-native-storybook-96c)
- 📜 [Exploring React Native's New Architecture: A Peek into the New Architecture](https://blog.devvivek.tech/exploring-react-natives-new-architecture-a-peek-into-the-new-architecture)
- 🎙️ [The React Native Show Podcast #25 - Databases for mobile apps React Native & Realm](https://www.callstack.com/podcasts/databases-for-mobile-apps-react-native-realm)
- 👥 [React Native EU 2023](https://www.react-native.eu/) (Wrocław, September 7–8, 2023) is offering us [-15% on conference tickets](https://ti.to/react-native-eu/2023/discount/thisweekinreact15) with code "thisweekinreact15".

---

## 🔀 Other

- 📣 [Gecko (Firefox) - Intent to Prototype: :has selector](https://twitter.com/intenttoship/status/1690045325539520523)
- 📜 [What Does It Mean for Web Browsers to Have a Baseline](https://thenewstack.io/what-does-it-mean-for-web-browsers-to-have-a-baseline/)
- 📜 [Deprecating the unload event](https://developer.chrome.com/blog/deprecating-unload/)
- 📜 [A Blog Post With Every HTML Element](https://www.patrickweaver.net/blog/a-blog-post-with-every-html-element/)
- 📜 [How layout position impacts three big web performance levers](https://performance.shopify.com/blogs/blog/how-layout-position-impacts-three-big-web-performance-levers)
- 📦 [Announcing TypeScript 5.2 RC](https://devblogs.microsoft.com/typescript/announcing-typescript-5-2-rc/)
- 📦 [Zod 3.22 - readonly()](https://twitter.com/colinhacks/status/1691172205516984322)
- 👥 [ViteConf 2023 - October 5th](https://viteconf.org/23/)

---

## 🤭 Fun

[![alt](https://thisweekinreact.com/emails/issues/156/meme.jpg)](https://twitter.com/DanStepanov/status/1689511613026775040)


See ya! 👋