diff --git a/src/effector/__tests__/fork/serialize.test.ts b/src/effector/__tests__/fork/serialize.test.ts index cc883532a..c07e4afa9 100644 --- a/src/effector/__tests__/fork/serialize.test.ts +++ b/src/effector/__tests__/fork/serialize.test.ts @@ -85,6 +85,16 @@ test('serialize: ignore with fork(values)', async () => { expect(serialize(scope)).toEqual({b: 1}) }) +test('serialize: ignore with fork(values) for unchanged stores', async () => { + const $a = createStore(0, {sid: 'a', serialize: 'ignore'}) + + const scope = fork({ + values: [[$a, 1]], + }) + + expect(serialize(scope)).toStrictEqual({}) +}) + describe('serialize: custom', () => { test('base case', async () => { expect.assertions(4) diff --git a/src/effector/fork/fork.ts b/src/effector/fork/fork.ts index 31bbc419c..d8920ae79 100644 --- a/src/effector/fork/fork.ts +++ b/src/effector/fork/fork.ts @@ -4,6 +4,7 @@ import type {Domain, ValuesMap, HandlersMap, Scope, Store} from '../unit.h' import {normalizeValues} from './util' import {createScope} from './createScope' import {forEach} from '../collection' +import {getMeta} from '../getter' type ForkConfig = { values?: ValuesMap @@ -39,6 +40,12 @@ export function fork( Object.assign(scope.values.sidMap, sidMap) forEach(unitMap, (value, unit) => { scope.values.idMap[(unit as Store).stateRef.id] = value + + const serialize = getMeta(unit, 'serialize') + const sid = getMeta(unit, 'sid') + if (serialize === 'ignore') { + scope.sidSerializeSettings.set(sid, {ignore: true}) + } }) scope.fromSerialize = !Array.isArray(config.values) && !(config.values instanceof Map)