"全フォームに散らばる dirty 制御" を、factory に隠す // プロダクト固有の dirty 仕様を factory に閉じ込める const useForm = <T, C, V>(props: UseFormProps<T, C, V>, shouldAccessDirtyFields = true) => { const form = _useForm<T, C, V>(props); // formState は Proxy 購読 ── dirtyFields に触って未保存検知を安定化 if (shouldAccessDirtyFields) form.formState.dirtyFields; return { ...form, // setValue 経由は shouldDirty: true をデフォルト化 setValue: (...args) => form.setValue(args[0], args[1], { shouldDirty: true, ...args[2] }), }; }; export const hookFormFactory = <T, C, V>() => ({ useForm: useForm<T, C, V>, useFormContext: useFormContext<T, C, V>, FormProvider: FormProvider<T, C, V>, useWatch: useWatch<T, any, V>, }); ① ライブラリの一般解 では届かない部分を埋める ② 製品仕様 ( dirty / 離脱 ) を 1 箇所に閉じ込めた ③ AI が触る面積 が小さくなり、出力が安定する Copyright Hacobu, Inc. 11