diff --git a/packages/react-form-nextjs/src/createServerValidate.ts b/packages/react-form-nextjs/src/createServerValidate.ts index b936f1e8e..41ddc4cb7 100644 --- a/packages/react-form-nextjs/src/createServerValidate.ts +++ b/packages/react-form-nextjs/src/createServerValidate.ts @@ -133,6 +133,5 @@ export const initialFormState: ServerFormState = { errorMap: { onServer: undefined, }, - values: undefined, errors: [], -} +} as unknown as ServerFormState diff --git a/packages/react-form-nextjs/tests/createServerValidate.spec.tsx b/packages/react-form-nextjs/tests/createServerValidate.spec.tsx new file mode 100644 index 000000000..a26db617c --- /dev/null +++ b/packages/react-form-nextjs/tests/createServerValidate.spec.tsx @@ -0,0 +1,22 @@ +import { describe, expect, it } from 'vitest' +import { mutateMergeDeep } from '@tanstack/react-form' +import { initialFormState } from '../src/createServerValidate' + +describe('initialFormState', () => { + it('should not contain values property', () => { + expect(initialFormState).not.toHaveProperty('values') + }) + + it('should not override client values when merged', () => { + const clientState = { + values: { name: 'client-name' }, + errors: [], + errorMap: {} + } + + // @ts-ignore + mutateMergeDeep(clientState, initialFormState) + + expect(clientState.values).toEqual({ name: 'client-name' }) + }) +}) diff --git a/packages/react-form-remix/src/createServerValidate.ts b/packages/react-form-remix/src/createServerValidate.ts index b936f1e8e..41ddc4cb7 100644 --- a/packages/react-form-remix/src/createServerValidate.ts +++ b/packages/react-form-remix/src/createServerValidate.ts @@ -133,6 +133,5 @@ export const initialFormState: ServerFormState = { errorMap: { onServer: undefined, }, - values: undefined, errors: [], -} +} as unknown as ServerFormState diff --git a/packages/react-form-remix/tests/createServerValidate.spec.tsx b/packages/react-form-remix/tests/createServerValidate.spec.tsx new file mode 100644 index 000000000..a26db617c --- /dev/null +++ b/packages/react-form-remix/tests/createServerValidate.spec.tsx @@ -0,0 +1,22 @@ +import { describe, expect, it } from 'vitest' +import { mutateMergeDeep } from '@tanstack/react-form' +import { initialFormState } from '../src/createServerValidate' + +describe('initialFormState', () => { + it('should not contain values property', () => { + expect(initialFormState).not.toHaveProperty('values') + }) + + it('should not override client values when merged', () => { + const clientState = { + values: { name: 'client-name' }, + errors: [], + errorMap: {} + } + + // @ts-ignore + mutateMergeDeep(clientState, initialFormState) + + expect(clientState.values).toEqual({ name: 'client-name' }) + }) +})