This Week In React #117: React criticism, useEvent, Next.js, Remix, Gatsby, Expo, Storybook, Ignite, React-Native, TS, Qwik...
Tags: react, reactnative
Published: 2022-09-28 09:48:19


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

Hi everyone!

This week we have some interesting React criticisms to read.

We also have various interesting routing-related news: Next.js, React-Router, Expo...

The newsletter **is finally back to its usual weekly rhythm**! I'm just back from vacations, and I took the opportunity to change my email provider: I'm now using [ConvertKit](https://thisweekinreact.com/ck). This gives me more flexibility on the email rendering and will allow me to introduce some new features later ;)

---

**To support me:**

- 😘 **Recommend the newsletter to your friends**: it really helps!
- 💸 [**Sponsor the newsletter**](https://thisweekinreact.com/sponsor) or [**sponsor me**](https://github.com/sponsors/slorber)
- 🧵 [**Retweet the latest Twitter thread**](https://slo.im/thread)
- 📨 Reply to this [**email**](mailto:sebastien@thisweekinreact.com): feedback is welcome

---

## ⚛️ React 

**[React I Love You, But You're Bringing Me Down](https://marmelab.com/blog/2022/09/20/react-i-love-you.html)**

The author of React-Admin gives a fair criticism of React on many aspects (forms, useContextSelector, refs, deps array...). Don't miss [Dan Abramov's response](https://twitter.com/dan_abramov/status/1572590212647391235).

**[Next.js Layouts RFC in 5 minutes](https://vercel.com/blog/next-js-layouts-rfc-in-5-minutes)**

The file-system based Next.js router will be significantly upgraded in the next major release. It includes support for nested layouts (like in Remix). This allows to avoid unnecessary unmount/remount of a layout during browsing, but also to manage data loading and errors. This article gives a quick overview. See also [Delba's thread](https://twitter.com/delba_oliveira/status/1568291558776274945).

**[React Router 6.4](https://remix.run/blog/react-router-v6.4)**

Big update: as expected, many Remix APIs (data-loading, mutation...) have finally been moved to React-Router. See the [2min video](https://www.youtube.com/watch?v=aX74DbFT5nI)

**[What’s New In Gatsby 2022?](https://www.smashingmagazine.com/2022/09/new-gatsby-2022/)**

Paul upgraded his blog to the latest Gatsby v4 version and shares with us how he used the latest features. Deferred Static Generation can significantly reduce build time. See also [Gatsby 5 Umbrella Discussion](https://github.com/gatsbyjs/gatsby/discussions/36609) and the video [Gatsby v5 Alpha Showcase](https://www.youtube.com/watch?v=C-WrnfUm33k): partial hydration is coming!

**Extras**:

- 🧑‍🎓Beta docs: [useCallback](https://twitter.com/dan_abramov/status/1570021510659579904) + [useMemo](https://twitter.com/dan_abramov/status/1568602727147520000)
- 💬 [useEvent update](https://github.com/reactjs/rfcs/pull/220#issuecomment-1259938816): the `useEvent` prototype is implemented and available via `@experimental`. Some concerns will lead to the opening of a new RFC. If I understand correctly it is possible that this hook will never be released but another solution will be adopted.
- 💬 [Dan Abramov - "in what ways is react 18 faster than react 17?"](https://www.reddit.com/r/reactjs/comments/xmr9tg/comment/ippsuin/)
- 📜 [The new wave of Javascript web frameworks](https://frontendmastery.com/posts/the-new-wave-of-javascript-web-frameworks/): a good overview of the frontend ecosystem of Flash until today. Focus on React and its various challengers: Vue, Svelte, Solid, Qwik, Astro, Fresh...
- 📜 [Get in Zoomer, We're Saving React](https://acko.net/blog/get-in-zoomer-we-re-saving-react/): article with interesting ideas. I didn't quite understand what the conclusion is except that React can do better and its challengers don't really improve things 😅
- 📜 [useState with URLs: How to persist state with useSearchParams](https://blog.logrocket.com/use-state-url-persist-state-usesearchparams/): explains how and why to persist React state in querystring
- 📜 [An apparent React bug](https://phelipetls.github.io/posts/surprising-react-bug/): related to behavior of the `<details>` element
- 📜 [When to use “useImperativeHandle” and “forwardRefs” in React 18](https://betterprogramming.pub/when-to-use-useimperativehandle-and-forwardrefs-in-react-18-89cce42b3309)
- 📜 [I18n with Storybook](https://storybook.js.org/blog/internationalize-components-with-storybook/): shows how to bring full i18n support in Storybook: locale dropdown switch, RTL support...
- 📜 [Storybook community showcase #3](https://storybook.js.org/blog/community-showcase-3/)
- 📜 [The Basics of Remix](https://css-tricks.com/the-basics-of-remix/)
- 📜 [React and Observables from RxDB](https://www.sabre.com/locations/poland/react-and-observables-from-rxdb/)
- 📜 [Automated Rule Docs With Docusaurus and Remark](https://typescript-eslint.io/blog/automated-rule-docs-with-docusaurus-and-remark/)
- 📜 [Me & React: 5 Years in 15 Minutes](https://valeriavg.dev/me-and-react-5-years-in-15-minutes)
- 🐦 [Mitosis - Write components with Sveltejs syntax, compile to other frameworks d](https://twitter.com/Steve8708/status/1573444026006585345)
- 🎥 React Finland [day 1](https://www.youtube.com/watch?v=zE8PDM_7xoQ) + [day 2](https://www.youtube.com/watch?v=rHjwZu0EmlQ)
- 🎥 [5 Pro-Level React Do's & Don'ts](https://www.youtube.com/watch?v=4FhJkX18fS8)
- 🎥 [freeCodeCamp - Code a Minecraft Clone with JavaScript, React, Three.js](https://www.youtube.com/watch?v=qpOZup_3P_A)
- 🐦 [React is focused on the problems that matter more](https://twitter.com/heyImMapleLeaf/status/1567960223759093760): interesting conversations. See also [Evan You](https://twitter.com/youyuxi/status/1569485243077529602) comment.
- 🐦 [React form without useState](https://twitter.com/DavidKPiano/status/1569361453928300545)
- 🚧 [MUI Base: the headless alternative to Material UI](https://twitter.com/MUI_hq/status/1570695041034731520)
- 🎙️ [JS Party #244 - The spicy React debate show 🌶️](https://changelog.com/jsparty/244)
- 📦 [Its fine](https://github.com/pmndrs/its-fine): a collection of advanced escape hatches for React. Useful for [bridging React context between renderers in the React-Three-Fiber ecosystem](https://twitter.com/0xca0a/status/1573064826339094528)
- 📦 [Theatre.js v0.5](https://www.theatrejs.com/blog/theatre-05-is-out): new 3D editor, useful for React-Three-Fiber
- 📦 [TinyBase 2.0](https://twitter.com/tinybasejs/status/1570864399728136193): reactive datastore with React bindings
- 📦 [React-Tether 3.0](https://github.com/danreeves/react-tether/releases/tag/v3.0.0): one of the very first positioning libs for React seems to be back in business
- 📦 [TanStack Query 4.4](https://github.com/TanStack/query/releases/tag/v4.4.0): decoupled from React, brings the support of another framework: SolidJS.
- 🥳️ [Next.js merged 10000 pull-requests](https://twitter.com/github/status/1574750716966498304)

---

## 📱 React-Native

**[RFC: File System-Based Native Routing with Expo and React Native](https://blog.expo.dev/rfc-file-system-based-routing-in-react-native-7a35474722a)**

Evan Bacon is working on a new Expo router based on file-system conventions, similar to Next.js or Remix. He tells us all we need to know about this highly anticipated feature that brings the DX of the web to mobile. This should considerably reduce the boilerplate of our apps, but also improve discoverability, deep linking, indexing, loading data, error handling... See also this [thread](https://twitter.com/Baconbrix/status/1574837248029331495) and this [podcast](https://podrocket.logrocket.com/expo-router).

- 📦 [Announcing Ignite 8.0: "Maverick"](https://shift.infinite.red/announcing-ignite-8-0-maverick-fbbdafbb738e). InfiniteRed's popular React-Native boilerplate gets a nice update. Many improvements: unification Expo/Vanilla RN, redesign, i18n...
- 📦 [FlashList 1.3 - MasonryFlashList](https://twitter.com/naqvitalha/status/1574416547426496513): to reproduce a grid layout in React-Native, similar to Masonry/Pinterest
- 🥳️ [TypeScripts types have been internalized in v0.71](https://twitter.com/thymikee/status/1572132314280300546). No more need for `@types/react-native`.
- 🥳️ [React-Native reach 1M downloads/week](https://twitter.com/thymikee/status/1574441040626552832)
- 🐦 [0.70: notable improvement in stacktraces](https://twitter.com/thymikee/status/1568257655323475972)
- 🎨 [Amazon Interactive Video Service demo](https://twitter.com/nightstomp/status/1572576326934208513): React-Native more performant than TikTok?
- 🎨 [Software Mansion - Shared Element Transition + Reanimated sneak peek demo](https://twitter.com/swmansion/status/1572246971829608449)
- 📜 [Testing React Native WebView with React Native Testing Library](https://coolsoftware.dev/testing-react-native-webview-with-react-native-testing-library/)
- 🎙 [The React Native Show #16 - React Native at Microsoft](https://www.callstack.com/podcasts/react-native-at-microsoft-ep-16)
- 🎙 [React-Native-Radio #247 - Revisiting common complaints about React Native 5 years later](https://reactnativeradio.com/episodes/rnr-247-revisiting-common-complaints-about-react-native-5-years-later-interview-with-hodeem)
- 🔗️ [There's a Snack for That](https://www.snackforthat.com/): Expo Snacks collection


---

## 🧑‍💻 Jobs

🧑‍💼 [**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

- [Qwik and Qwik City have reached beta!](https://www.builder.io/blog/qwik-and-qwik-city-have-reached-beta): cutting-edge framework, React challenger based on resumability instead of hydration
- [TypeScript 4.9 beta](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9-beta/): new feature `satisfies` highly anticipated!
- [Token CSS](https://twitter.com/tokencss/status/1571823928187633664): possible alternative to Tailwind?
- [Updates from the 92nd TC39 meeting](https://dev.to/hemanth/updates-from-the-92nd-tc39-meeting-5fi6): small update
- [Cloudflare - workerd: the Open Source Workers runtime](https://blog.cloudflare.com/workerd-open-source-workers-runtime/)
- [Meta - MemLab: An open source framework for finding JavaScript memory leaks](https://engineering.fb.com/2022/09/12/open-source/memlab/)
- [Type-Level TypeScript](https://type-level-typescript.com/)
- TotalTypeScript [Tips](https://www.totaltypescript.com/tips) + [Zod tutorial](https://www.totaltypescript.com/tutorials/zod)
- [Ezno, new type-checking compiler for JavaScript](https://twitter.com/robpalmer2/status/1573244310644199425)
- [Turborepo 1.5](https://twitter.com/turborepo/status/1573017581459488769)
- [tRPC 10 beta](https://twitter.com/alexdotjs/status/1571807618254905344)
- [2022 Web Almanac](https://almanac.httparchive.org/en/2022/)
- [Chrome Developers - Container queries begin to land in stable browsers](https://developer.chrome.com/blog/cq-polyfill/)
- [WebKit Features in Safari 16.0](https://webkit.org/blog/13152/webkit-features-in-safari-16-0/)
- [Best practices for creating a modern npm package](https://snyk.io/blog/best-practices-create-modern-npm-package/)

---

[![Next.js routing showing a ridiculously complex file-system based routing tree](https://thisweekinreact.com/emails/issues/117/meme.png)](https://twitter.com/thekitze/status/1568300470107783168)