動作が不安定なので react-transition-group を自前実装に置き換えました
動作確認環境
React 18.3.1 → 19.0.0
Next.js 15.1.5 (App router)
2年半の時を経て、昨年12月にメジャーアップデートの React 19 がリリースされました
このホームページも Next.js で動作しているので、React に大部分が依存しています
リリース直後にアップデートしたかったのですが、躓いてて最近やっと 18.3 からアップデートしました...
(最近は型アノテーションがだいぶ整備されたっぽく、以下のような問題は解消された感じがあります)
大きな躓きというのが、やはり「react-transition-group が動かない」でした
Next.js が 15 になった時と同じような問題に遭遇しました。もしよければ以下も参考にしてください
Next.js 15 に移行した際は CSSTransition が動かなくなりました (現在も動作しません)
原因は、親コンポーネントの Transition で使われている findDOMNode が React から削除されたためです
👆 の移行では、自力で再実装しました
で、React 19 リリース直後に移行した際は TransitionGroup が動作しなくなっていました...
ただ放置していたら、@types/react と @types/react-dom の最新バージョンで解消されてました (理由は謎です)
とはいえ、また動作しなくなるのも困るので、こちらも自力で実装することにしました。以下、参考にどうぞ
transitionGroup.tsx
結局 react-transition-group は必要なくなったので、削除しました
useRef の初期化が厳格になっていました
これまでは、特に指定がなくても問題なかったのですが、
const input = useRef<HTMLInputElement>()エラーになっていたので、以下のように初期化するようにしました
const input = useRef<HTMLInputElement>(null)このホームページは、この作業だけで移行が完了しました 🎉
おわりに
Dependabot も変更差分が大きいのかしばらくコケていたので、アップデートを怠ってました (他責) 🐬
しばらくこれで様子を見てみようと思います 🐶