This Week In React #161: useFormState, Memo, Conform, Progressive Enhancement, Astro, Radix, React-Aria...

Sebastien Lorber - Oct 5 '23 - - Dev Community

Hi everyone!

This week I've found the React ecosystem rather quiet, but we've got some pretty cool articles to read.

React progressive enhancement is in the spotlight in both Remix and Next.js!


๐Ÿ’ก Subscribe to the official newsletter to receive an email every week!

banner


๐Ÿ’ธ Sponsor

Enterprise Grade APIs for Feeds, Chat, & Video!

Enterprise Grade APIs for Feeds, Chat, & Video!

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,ย React-Native, 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!


โš›๏ธ React

The Uphill Battle of Memoization

The Uphill Battle of Memoization

We want to create high-performance applications, and to do that we use React.memo, which avoids unnecessary re-renders. But these optimisations break too easily. Dominik shares with us several scenarios that lead to performance degradation, including the use of inlined objects/callbacks, or the use of JSX slots with a props like children.

I took the opportunity to give my opinion on Twitter: the performance of a React component should be better encapsulated. While we're waiting for the React-Forget compiler, there are a few lesser-known avenues to explore, such as the use of Babel plugins.


Accessible, Typesafe, Progressively Enhanced Modern Web Forms

Accessible, Typesafe, Progressively Enhanced Modern Web Forms

Kent shows us a few examples of Remix code and how easy it is to implement pending UI and optimistic UI. He recommends using a shared Zod schema to validate forms on the frontend, and extending it on the backend to eventually add additional rules. conform facilitates the use of a Zod schema to validate a FormData, and seems to be an underrated solution for managing a React form, from the local state to the server.



๐Ÿ’ธ Sponsor

A Non-Cloud Alternative to Google Forms that has it all

A Non-Cloud Alternative to Google Forms that has it all

If you are looking to set up a robust form management system fully integrated in your IT infrastructure that allows you to retain full control over the data flow, and you donโ€™t want to spend months and thousands of dollars to get it up and running, then SurveyJS is the way to go!

SurveyJS is a product suite of four open-source JavaScript libraries that allow you to create and edit multiple dynamic JSON-based forms in a drag-and-drop form builder, render them in your React app and store sensitive survey data within your in-house infrastructure. You can then render your custom surveys and forms as editable PDF files in a browser and visualize survey results with interactive charts and tables. Learn more now.


๐Ÿ“ฑ React-Native

Custom Apple Settings UI with Expo

Custom Apple Settings UI with Expo

Evan points out the few advantages of using the iOS settings screen. It's a pain to implement natively, and the ROI is low, but his Expo Config Plugin simplifies the task. He explains how to toggle an app's sound with a switch, or how to automate the display of your app's software licenses.



๐Ÿ”€ Other


๐Ÿคญ Fun

alt

See ya! ๐Ÿ‘‹

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .