STREAM@Sで採用しているフロントエンドフレームワークはNextです。そんなNextですが、13系から新しいソースコードの構造としてApp Routerが登場しており、このApp Routerは13.4でStable扱いとなっています。
STREAM@Sを作った時点でNextは13でしたが、当時App Routerはベータ版で、エコシステムが整っていないことを含めて色々あったためPages Routerを採用していました。Nextを14に上げたのを機に、App Routerに移行してみることにしました。
公式にマイグレーションガイドがあるので、それに沿って作業を行います。
クライアントで動かしたいコンポーネントには頭に"use client"
を付ける、などのルールがあります。
https://nextjs.org/docs/app/building-your-application/upgrading/app-router-migration
サーバーサイドコンポーネントとクライアントコンポーネントの違いを意識して書かなければいけないので、今までのNextに慣れた人には難しいようなのですが、Astroを通っているからか特に違和感なくサッと移行できました。データの取得まわりがシンプルになっており、Nextのつらい所だと思っていたのでそこは良かったのではないかと思います。
ところで実際に使う人にメリットがあるのでしょうか?わかりやすい所としてJavaScriptの量が減ったりしているのでしょうか?Nextはビルド時にページの容量を表示するので、そこで見てみることにします。
これはPages Router。
こちらはApp Router
共通でロードされるJavaScriptが半分になっているように見えるのでだいぶ減ったような気がするのですが、実際はPages RouterではCSSがJavaScriptに含まれてしまっているため、CSSも含めると、利用者側にロードされるコード量はほとんど変わらないのではないかと思います。つまるところ、全くもって今まで通りということになります。