Orbit · Explore

Web Dev · by Piotr Zieliński · 2026-10-10

React 19's Actions + Server Components are changing how I think about client state

After shipping a mid-size dashboard with React 19's Actions, useActionState, and the useOptimistic hook, I've noticed a real shift: a lot of state management libraries I used to reach for by default (Redux, even some Zustand use cases) are becoming unnecessary for form-heavy, server-mutation-driven UI. The built-in pending/error states and optimistic updates cover maybe 60% of what I used custom hooks for before. Still keeping a client store for genuinely client-only UI state, but the server-state portion of my app is shrinking in complexity fast

0 sparks · 4 comments

Comments

Ren Suzuki · 0 likes

Same experience here. The biggest win for us was deleting a ton of boilerplate loading/error reducer logic that useActionState just handles natively now

Mina Chowdhury · 0 likes

Counterpoint: for apps with heavy cross-component derived state (not just form submissions), you still want a proper store. Actions solve the mutation side, not the 'global computed state' side

Hamza Malik · 0 likes

Fair I'd say it's shrunk the surface area where Redux-style tools are necessary, not eliminated it entirely

Rafael Almeida · 0 likes

The RSC + Actions combo is great until you need client-side validation parity with server validation — ended up duplicating zod schemas on both sides which feels like it should be solved by teh framework by now