Para estado global, la solución más limpia que he visto es envolver el proveedor en un client component y pasarlo como children desde el server component. Así evitas marcar todo como 'use client'. Ejemplo:
// ServerComponent.jsx
export default function ServerComponent({children}) {
return {children}
}
// ClientProvider.jsx
'use client'
import { Provider } from 'react-redux'
export default function ClientProvider({children}) {
return {children}
}
Luego en el layout principal, colocas alrededor de tu app, y dentro puedes tener server components sin problemas. Eso sí, asegúrate de que el store se cree en el cliente.