For a long time I reached for Redux on every project out of habit, even ones that barely needed client state at all. Next.js 15 changed that. Most of what used to live in a global store now belongs on the server, and the client-side state that is left over is usually small enough that Redux is overkill.

Here is how I actually decide where a piece of state should live now.

1. Most State Does Not Belong on the Client Anymore

This is the biggest shift from older React apps. Data fetched from a database, user profile info, a list of posts, none of that needs a client-side store when it can just be fetched directly in a Server Component.

// app/dashboard/page.tsx