【React】react-hook-formでcheckboxがsubmitされないことがあった

Safariのみ、react-hook-formでcheckboxのvaluteがsubmitされないケースがありました。

reactやSafariのバージョンは下記になります。

react:18.2.0
react-hook-form:7.37.0
Safari:16.0
macOS Monterey:12.6

実際のソースコードで見ていきます。

Submitされるパターン

import { useForm } from "react-hook-form";
const Sample = () => { const { register, handleSubmit, } = useForm() const onSubmit = (data: any) => { console.log(data) } return ( <form onSubmit={handleSubmit(onSubmit)}> <label htmlFor="test">テスト</label> <input type="checkbox" {...register("test")} /> <input type="submit" /> </form> );
}
export default Sample

特別なことはしていません。

submitボタンを押下すると、onSubmit関数でコンソールログを表示します。

チェックボックスがチェックされていればログには{test: true}と表示され、チェックされていなければ{test: false}と表示されます。

これはSafariでも問題ありません。

Submitされないパターン

import { useState } from "react";
import { useForm } from "react-hook-form";
const Sample = () => { const { register, handleSubmit, } = useForm() const onSubmit = (data: any) => { console.log(data) } return ( <form onSubmit={handleSubmit(onSubmit)}> <label htmlFor="test">テスト</label> <input type="checkbox" {...register("test")} onChange={(e) => { console.log(e.target.checked); }} /> <input type="submit" /> </form> );
}
export default Sample

問題なのはこちらです。

1つ目と違うのはcheckboxのonChangeを追加してコンソールログを出力しているだけなのですが、なぜかSafariだとチェックをした状態でsubmitボタンを押下すると{test: false}と表示されます。

Chromeだとチェックをした状態だと{test: true}と表示されます。

謎です。

どなたか、解決策をご存知の方がいらっしゃたらTwitterで教えてくださいm(-_-)m