(2023/10/05 追記)Astroで書き直した
はじめに
🎉 Next.js 13.2がリリースされ、App Router (beta) & React Server Component(以下RSC)が実用できそうな感じになってきたため、このサイトでも移行した。Metadata API、Route Handler等も同時に導入した。
やったこと
(一般的な設定についてはドキュメント等を参照)
next.config.js
experimental.serverComponentsExternalPackages
という項目がけっこう重要。Markdownの処理にNode.jsのライブラリを使用している場合、該当ライブラリをここに列挙する必要がある。
あと関係ないがnext.config.js
はドシドシESM(.mjs
)で書こう。
Markdown / MDXの処理
公式ブログを見る限り、@next/mdx
、next-mdx-remote
、contentlayer
の三者は現時点(2023/03/03)でRSCに対応している。
next-mdx-remote/rsc
を使ったところ、入出力の仕様が微妙に変更されていて戸惑った。compileMDX
でJSXを直接吐かせるか、<MDXRemote>
コンポーネントにMarkdown / MDXを食わせるか選べるようだ(おそらくどちらでも出力に差はない)。
そのほか、frontmatter
に型を付けられるようになった。
Route HandlerによるOpen Graph(OG)画像生成
Next.js 13.2で従来のAPI Routesを代替するRoute Handlerが登場したため、ついにOG 画像生成で使っていたpages
ディレクトリを完全に廃止1できるようになった。
同じくNext.js 13.2で登場。サイトマップの生成に使った。
所感
もともと完全な静的サイトなので、実のところそれほどパフォーマンスに変化はない。バンドルサイズは多少小さくなったかもしれないが。
ちなみにLighthouseのスコアはこんな感じ: