Blog
Portfolio Devlog/2 minutes read

EmDashのためにReact引退した

AstroでReact動かすのはなんとなく具合が悪かったのでやめた

以前の記事でmicroCMS+Next.js+Reactの構成からEmDash+Astro+Reactの構成に移行したことを説明しましたが、その後ウェブサイトの開発を続ける中で、Reactを使うたびに毎度毎度only:client=”react”を宣言するのが嫌になってきたので、Reactも消し去ろうという気になりました。破壊神です。

React島

AstroでReactを使うと、ReactコンポーネントはIslandになります。

必要な場所だけJavaScriptを載せられるので、仕組みとしては合理的だと思います。ただ、もともとNext.js+ReactだったものをAstro+Reactに無理やり移行したわけなので、Islandの量がめちゃめちゃ多くなってしまいました。SSRとCSRをいちいち気にしてやるのも面倒になってきました。

このサイト、そこまでしてReactいるか?結論いらない。

では移行。

Liquid Glass←ダルすぎ

Reactを消すにあたって一番の課題はLiquid Glassをどう移行するか、でした。もともとはReact製のライブラリを使っていたので、Reactを消すとなれば完全に自前で実装する必要が出てきます。

どうもCodexはLiquid Glassを実装するのが苦手みたいです。

半透明の板を置いて誤魔化してみたり、blurが効いているつもりで効いていなかったり、変なシミみたいなものだけ残したり。とにかくLiquid Glassを実装するにあたっては全く役に立ちませんでした。

結局私がもとのライブラリのコードを読んで、どういう感じで実装しているのかを確認したうえで、Codex君に説明するハメになりました。

どのレイヤーで合成しているのかを説明して、SVGフィルタを使う実よう指示して、既存実装から変なのがついてこないように1から作り直すよう指示して、ようやくうまくいきました。

おお

Liquid Glassさえ終わらせればあとはこっちのものです。独自実装していたブログ系ページもEmDashのページ機能に近づけて、OGPやEmDashの編集機能が使えるようにしました。

結果として、ブログも実績もEmDashのデータをそのまま使い、Astro側で表示を調整するスタイルになりました。

実はReact残っている

これでReactとおさらば!と思ってnpmパッケージを消したらうごかなくなりました。どうやらEmDashのAdminページはReactで構成されているようです。なんやねん。

結局Reactと完全にお別れとはいきませんでしたが、少なくともユーザーが閲覧する場所からはReactがなくなりました。めでたしめでたし。