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 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!
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.