diff --git a/packages/toolkit/src/query/core/buildSlice.ts b/packages/toolkit/src/query/core/buildSlice.ts index 3343b6dc3d..68361cf7f3 100644 --- a/packages/toolkit/src/query/core/buildSlice.ts +++ b/packages/toolkit/src/query/core/buildSlice.ts @@ -31,8 +31,8 @@ import type { EndpointDefinitions, QueryDefinition, } from '../endpointDefinitions' -import type { Patch } from 'immer' -import { applyPatches } from 'immer' +import { isDraft, Patch } from 'immer' +import { applyPatches, original } from 'immer' import { onFocus, onFocusLost, onOffline, onOnline } from './setupListeners' import { isDocumentVisible, @@ -208,7 +208,12 @@ export function buildSlice({ // Assign or safely update the cache data. substate.data = definitions[meta.arg.endpointName].structuralSharing ?? true - ? copyWithStructuralSharing(substate.data, payload) + ? copyWithStructuralSharing( + isDraft(substate.data) + ? original(substate.data) + : substate.data, + payload + ) : payload }