-
Recoil
Recoil is an experimental state management library for React apps. It provides several capabilities that are difficult to achieve with React alone, while being compatible with the newest features of React.
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
The main reason most people reach for them is to be a data store, if you're using GraphQL for a backend, Relay/Apollo wipeout the need for that. If you're using a REST backend, I'd look at something like SWR and continue to avoid any of the above state management libraries. If you need the ability to share fairly static data across your component hierarchy, plain old React Context is going to work great. If, and only if, you need to share a bunch of data that can refresh faster than say once per second, then reach for Jotai/Zustand or take a good look at Recoil. Before reaching for one of those libraries, I'd run the React profiler and actually profile where your re-render performance issues are to confirm that you can't make your DOM updates faster or apply more intelligent memoization to your props/state/context first. If and only if that doesn't work, then its time to reach for a new State Management approach. And only your highly dynamic data should be managed using it.
The main reason most people reach for them is to be a data store, if you're using GraphQL for a backend, Relay/Apollo wipeout the need for that. If you're using a REST backend, I'd look at something like SWR and continue to avoid any of the above state management libraries. If you need the ability to share fairly static data across your component hierarchy, plain old React Context is going to work great. If, and only if, you need to share a bunch of data that can refresh faster than say once per second, then reach for Jotai/Zustand or take a good look at Recoil. Before reaching for one of those libraries, I'd run the React profiler and actually profile where your re-render performance issues are to confirm that you can't make your DOM updates faster or apply more intelligent memoization to your props/state/context first. If and only if that doesn't work, then its time to reach for a new State Management approach. And only your highly dynamic data should be managed using it.