Discover more from This Week In React
This Week In React #98: React 18 RC2, Framer Motion, 3D Avatar, Parca, React-Native, Solito, Flutter, TypeScript, Safari...
React 18.0.0-rc.2 has just been released (under npm tag
@rc). The React team published a blog post (+ 🧵 thread) to prepare us for the arrival of this new version. It includes the new concurrent features, which we can adopt incrementally.
They encourage us to test the release-candidate to detect the latest potential bugs, and offer a fairly complete upgrade guide by documenting the main api and behavioral changes. There is also a brief presentation of various new APIs.
Interactive article by Josh Comeau on his file-system structure choices to organize a React app. Strong opinion: he explains in particular why he prefers to group files by type rather than by feature. I don't necessarily agree with everything, but it's still an interesting read and has some good arguments.
Interactive article that presents layout animations with Framer Motion. Very well presented, with many examples. I really liked the example of Tabs with a shared layout animation: the API is quite intuitive, I didn't know it was that easy.
📜 How to Use Three.js And React to Render a 3D Model of Your Self: original article that proposes to create your own personal 3D avatar, display it with React-Three-Fiber and make it do some breakdance 😄 I really want to test that.
📜 Profiling Next.js apps with Parca: first time I hear about Parca. This seems to be an interesting continuous profiling tool for those who self-host their Node.js apps (with Kubernetes for example) but might also be handy to profile performance problems locally. In this example, the tool detects a performance problem related to the unnecessary use of immutability.
👥 Remix Conf Speakers have been announced
🎙️ Remix Podcast - Season 1: 12 episodes released
Content creators don’t like the grey forms of a headless CMS.
Visual tools like Wix or Webflow are either not flexible, complex to use or too flexible: a content creator should not decide on a margin, right?
React Bricks has the best of the 2 worlds: all the advantages of a Headless CMS and best in class Visual editing experience with no way to break the design system.
You create visually editable content blocks as React components using the react-bricks library. Content creators use these blocks to compose content with all the freedom they want and no more than they need.
Create your free account and start building now
Nicola reminds that the new architecture is coming, and presents the different initiatives to prepare the community:
The working group
The migration guide
The ability to easily enable the new architecture in React-Native 0.68 - coming soon
Conversion of third-party libs
The Hermes engine enabled by default
Fernando Rojo regularly pushes innovation in the field of cross-platform (see also Moti and Dripsy). Solito makes it possible to share even more code between web and mobile by offering navigation primitives shared between React-Navigation and Next.js. He's been working on this for a while, it's not the first iteration. It also offers a monorepo example to get you started fast.
*…in all the ways that don’t matter 😄
Jamon recognizes that Flutter is good on many aspects (DX, CLI, e2e tests, upgrades, performance...). He presents the tradeoffs of both frameworks quite fairly. There is no clear winner. Some important points on which Flutter can hardly compete: web support, sharing code and knowledge, and the ability to hire.
Interesting for a React-Native dev (and also related to the article above) because it highlights the limits of its competitor Flutter to support the web (where React-Native-Web works wellà). Flutter web is not a good choice for content sites, but can remain a good solution for heavier web apps. Note that React-Native-Skia on the web will have similar tradeoffs.
📜 Avoid Keyboard in React Native Like a Pro: exhaustive resource that documents with gifs the iOS and Android behavior of several ecosystem libs to manage the virtual keyboard: this is clearly not the easiest part of React-Native 😅
📦 React-Native-Performance: now supports iOS
📦 React-Native TVOS 0.66.3-2: Fabric support for Apple TV
📦 React-Native-Gesture-Handler 2.3: Fabric support
Start React Native: learn everything about gestures and animations with William Candillon
React-Native Weekly: stay up-to-date React-Native core updates
TypeScript Weekly: the best TypeScript links every week, right in your inbox.
Tailwind Weekly: all things Tailwind CSS, new issue every Saturday
G2i: pre-vetted remote React & React-Native developers you can trust on contract or full-time basis
Infinite Red: US React-Native experts making your idea a reality
Software Mansion: the co-creators of React Native and the technological core of many tech companies
The browser would simply ignore those type annotations and not do any type-checking, so TypeScript (or other type-checkers) remains relevant.
This is interesting in development: we can directly execute TypeScript code without any transformation in the browser. In production, we would continue to bundle the code, because minifying and removing types remains useful (see Ryan Cavanaugh's analogy with minification).
See also the dedicated proposal website.
Tao of Node - Design, Architecture & Best Practices: after his popular Tao of React, Alex shared an exhaustive list of principes he follows when developing Node.js apps.
A Complete Guide To TypeScript’s Never Type: complete article on the TypeScript bottom-type
twitter-api-typescript-sdk: finally an officiel SDK
SWC v1.2.154: minifier perf improvements
Vite 2.9 beta: much faster cold starts