Awesome Reviewers

When using async/concurrent flows (streaming, dehydration/rehydration, optimistic updates), ensure you never persist “in-flight” async state and you always return promises from async callbacks.

1) Don’t persist promises during streaming/dehydration

<PersistQueryClientProvider
  client={queryClient}
  persistOptions={{
    persister,
    // Persist only queries that have resolved (not pending promises)
    dehydrateOptions: { shouldDehydrateQuery: defaultShouldDehydrateQuery },
  }}
>
  {children}
</PersistQueryClientProvider>

2) Don’t drop promise lifecycles in concurrency callbacks

useMutation({
  onSettled: () => queryClient.invalidateQueries({ queryKey: ['todos'] }),
});

Practical checklist: