Your revalidate probably works fine. The bug is useState(initialClients): the initial value is only read on the first render. When the server sends fresh initialClients, React ignores it because the state already exists.
If you don't need to edit the list locally, drop the state and render the prop directly:
export function ClientList({ clients }) {
return clients.map(...);
}If you do need local state (optimistic updates), look at useOptimistic instead of copying props into state.