⛩️

React Server Componentsの実装を最小限で実現するWaku v0.17.0をリリースしました

2023/11/14に公開

https://twitter.com/dai_shi/status/1724224512072561118

RSC(=React Server Componentsですが概念より実装の意味)の機能はほとんどReactのライブラリに備わっていますが、それをライブラリとしてそのまま使うことは難しいです。バンドラーとの連携が必要なこともありますが、一番大きいのは"react-server"というconditionでNode(に限らずですが)を動かさないといけないことです。

そこで、Wakuというフレームワークを開発中です。フレームワークと呼ぶのが正しいかは微妙です。Reactのライブラリに足りないものを補うことが狙いです。

https://zenn.dev/dai_shi/articles/5ed1b58c5e537a

v0.17.0ではSSRを導入しました。これまでもSSRもどきを実装していたのですが、他のフレームワークと比較できるレベルにするには同等のSSRが必要ということで、今回新たに実装し直しました。ちなみに、SSRだけの実装はReactの関数を呼び出すだけなのでとても簡単ですが、RSCの上でのSSRの実装は非常に面倒でした。そのあたりも別途記事にできればと思います。

WakuはRSCとの橋渡しをするだけの小さい実装を目指しているのですが、それでも色々やっていると大きくなってきました。主にVite周りの機能不足によるものですが。

Waku source code wc

src/router/...waku/routerの実装なので無視するとしても、サッと読めるサイズは超えてしまった印象です。

ちなみに、RSCを最小限で動かす取り組みはいくつかあって、最近増えてきた印象です。

https://github.com/bholmesdev/simple-rsc

https://github.com/ziir/rsc-demo

あと、最小限ではないものの似たような取り組みも。

https://github.com/unstubbable/mfng

https://github.com/lubieowoce/tangle

https://github.com/nksaraf/fully-react

ライバル多し!

最後に、Wakuのemojiは⛩になりました。

Discussion