第二引数を空配列にしているuseEffectが2回呼ばれてしまう

原因:
create-react-appで作成したアプリのindex.tsxが使用しているの機能

意図しない副作用の検出のためにコンポーネントを2度呼ぶようにしている。
ja.reactjs.org

StrictModeの利点:

  • 安全でないライフサイクルの特定
  • レガシーな文字列 ref API の使用に対する警告
  • 非推奨な findDOMNode の使用に対する警告
  • 意図しない副作用の検出
  • レガシーなコンテクスト API の検出
  • state の再利用性を保証する

これは検証用の機能であり、開発モードでのみ適用されるため本番環境においては問題なし。