UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Next.js】Progressive Enhancementをどこまでやるか

Node学園で気になっていた@takepepeさんの発表内容のスライドを見た

speakerdeck.com

Progressive Enhancementとは、可能な限り多くのユーザーに不可欠なコンテンツと機能のベースラインを提供することを中心とした設計哲学

developer.mozilla.org

例えば、これまでFormによるデータ更新の実装をAPI Clientを介したAPIの呼び出しによって行ってきたが、Formのaction属性にサーバーサイドで動く関数を渡せるようにするなど

これにより、API Clientが不要になるのと、ハイドレーションが完了を待たなくても実行できる利点がある

また、JSオフでも機能するように実装できるようになる

例としてバリデーションで、今まで行っていたFormのonSubmit属性に指定した関数でのクライアントサイドによる事前バリデーションに加え、action属性に指定したServerAction内でもバリデーションを行うようにしておくことができる

こうすることで、事前バリデーションも行いつつ、JSオフの場合でもServerAction内のバリデーションが動くようになる

ところで、PEの導入でメリットとなる「JSオフでも動くForm」をどこまでやるかは本当に線引きがむずかしそう

スライドでも書かれていたが、「JSオフでも動くForm」はこれまで考えてこなかったし、実装アプローチも違うので、やるという方針を決めておかないとならないと感じた

ServerActionは以前よりは安定的になっているとはいえ、まだ不安要素があるので「JSオフでも動くようにする」というのはエンジニア側からまだ提言しなくていいかなと思った

とはいえ、JSオフでも動くことは今ままでリーチできなかったユーザー体験を作り出せる可能性があるので、様子を伺って行きたい

他参考

現代の Progressive Enhancement について考える

Next js v14 で考える開発チームの事業的貢献 - とろろこんぶろぐ