Skip to content

State management


Technologies with less than 10% awareness not included. Each ratio is defined as follows:

  • Retention: would use again / (would use again + would not use again)
  • Interest: want to learn / (want to learn + not interested)
  • Usage: (would use again + would not use again) / total
  • Awareness: (total - never heard) / total
We asked members of the React Native community to share their opinions about the results

We have seen many client-state libraries increasing in popularity in the last year: Zustand, Jotai, and Legend State all make a strong showing in the Interest category, but are still relatively low in Usage. The pattern I am seeing here is that devs want less boilerplate with their state management. A common criticism leveled at the ever-popular Redux library (Usage is second only to the built-in hooks) is that diffs are large compared to the size of the change. Redux Toolkit helps a lot, but newer libraries go even further, often consolidating state and actions into one primitive, while still relying on either familiar selectors (Zustand) or Proxy-based automatic observers (Legend State, Mobx, Valtio) to prevent unnecessary re-renders.

Meanwhile Recoil is still trying to find its legs, even after all these years. Jotai has a similar design to Recoil but is fairing much better in retention, and slightly better in interest. I expected Legend State to do better in terms of interest - but it's a relative new-comer in this group. On the server-state side of things, TanStack Query and Apollo are neck and neck in usage, but Apollo is falling in retention. This surprises me. I expected both to do well in retention.

Once you've learned useQuery (each library provides similar versions of this hook), you're off to the races. Apollo, though, has a steeper learning curve (compare the caching capabilities for an example). If I had to guess at why TanStack Query is edging out Apollo in retention and interest, that would be my guess. This is consistent with the relative popularity of the client-state libraries - simpler is indeed usually better!

We asked members of the React Native community to share their opinions about the results

Colin Gray

Principal Engineer at Shopify

Sentiment Split

This chart splits positive (“want to learn”, “would use again”) vs negative (“not interested”, “would not use again”) experiences on both sides of a central axis.

Bar thickness represents the number of respondents aware of a technology. Click on the individual label to see more details.

Overall happiness

Other state management