Suspense/StreamingパターンにおけるCLSの課題と対策
課題
でComponentごとにDataFetching/Renderingする。
イメージ
https://gyazo.com/e97169c2d7533bc6c34fa93a36bc7031
上記のような複数のReact Server Components RSCをそれぞれ別に読み込んでいる際に、各componentが入る分の高さの余白を確保していないと、そのコンポーネントの下に配置されている情報などが先に表示されていて、各componentが読み込み完了した際に位置がズレてガタつく。 両方とも、デザイナーとも調整が必要である。
これもあって、手を抜きたくなる。
スクロールして、途中の導線で別ページに遷移した後、ブラウザバックでスクロール後の位置に戻ってきたケース。
例
初期遷移時
あるページにアクセスする。
スクロールして、途中の導線で別ページに遷移する。
再遷移時
別ページに遷移した後、ブラウザの戻るボタンを押して、前のページのスクロール位置に戻って来る。
対策
上記の例外ケースを見ると、一度FirstView ファーストビューと想定されている箇所にアクセスし、その後スクロールして閲覧しているため、該当componentのデータは読み込みが終わっている。 3. 該当箇所のSuspense/Streamingパターンを辞める。
個人的意見
とりあえず、キャッシュをopt outする戦略であったが、うまく使ったほうが良いのかもしれない。
FETeamで議論した結果