Astro と HTML-first の復活 — React が奪った利用者を取り戻せるか
Astro と HTML-first の復活 — React が奪った利用者を取り戻せるか
「HTML-first で作り直したら利用者が二倍になった」 という一人の開発者の報告が Hacker News のトップに上がった。これは React の終焉か、道具が適用される場所の再配置か。
導入 — 一つのフォームが二倍の利用者を生んだ事件
2026 年 6 月 10 日、英国の開発者 Alistair Davidson が自身のブログに短い記事を上げた。タイトルは 「HTML-first サイトを作ったら、一晩で利用者が二倍になった」 だった。Hacker News のトップページに上がり 1098 点を獲得、498 件のコメントが付いた。同じ週のどんなニュースよりも強い反応である。記事の文脈は単純だ。Davidson は英国のある規制下にある公共事業者 (utility company) の顧客対応フォームを作った。以前のバージョンはオフショアの請負チームが React で作ったもので、ローンチ三日で破綻した。localStorage の 5MB 制限にぶつかって添付画像の保存が壊れ、利用者がフォームを完了できなくなった。Davidson は React を引き剥がし、Astro を入れて HTML-first で作り直した。その結果、フォームを完了する利用者数がぴったり二倍になった。
この一行の報告が生んだ波紋は単純なケーススタディを超える。利用者二倍は ROI 上の強力な信号だが、それより重要なのは分析的な語彙である。Davidson の記事は、React がどのように利用者を失ったかについての短い説明を含む。JavaScript ベースの analytics は、JavaScript が壊れて画面が真っ白になった利用者を計測できない。二倍になった新しい利用者は、実は 「以前からそこにいたが計測されていなかった利用者」 である。この発見は単なる道具の入れ替えの話ではなく、我々が何を計測してきて、何を計測できずに来たかについての話だ。1098 点が意味するのは、その話が業界の一本の神経を正確に突いた、という事実である。
React の場所と Astro の場所 — 何が何に置き換えられたか
Davidson が引き剥がしたスタックは単なる React ではなく、「React の上にグローバルな JS 状態と localStorage 依存を山ほど積んだ SPA」 だった。新しく組んだスタックは Astro である。Astro は server-rendered HTML を基本とし、必要な部分にだけ JavaScript の 「島 (islands)」 としてインタラクティブな要素を差し込むフレームワークだ。Davidson の言葉では 「JavaScript は強化の道具であって、必須であってはならない」 という原則が最も正確な要約だ。フォーム検証それ自体は 1KB 未満の自作 web component で処理され、後に validation-enhancer という汎用ライブラリとして切り出された。
機能的に何が変わったか。第一に、バックエンドセッション。以前の React 版は利用者の入力内容を localStorage に保存していた。5MB 制限とブラウザのクリーンアップポリシーが合わさり、三日で消失が始まった。新しい版はフォーム入力をサーバーセッションに保存する。Davidson は 「ある利用者がフォームを始めて 1 か月後に完了した事例」 を誇る。これは React が悪かったわけではなく、React の上に間違ったアーキテクチャが乗っていたのだが、「単一ページ + クライアント状態」 という React の自然な使われ方が、その間違いを後押ししたのは確かだ。
第二に、JavaScript が無効な利用者。英国の規制下にある公共事業者には 「顧客満足度 96 % 未満」 が罰金対象となる。だから PlayStation Portable の旧ブラウザ、3G 回線、企業の厳格な CSP 環境のような周縁の利用者をすべて拾わねばならない。JavaScript 依存度が 0 ではなく 「JavaScript なしでもフォームを完了できる」 という保証が必要だった。Astro の server-rendered HTML はこの保証を自然に作る。React の上の SPA は同じ保証を別途の SSR 設定と hydration フェイルオーバーで構築せねばならない。
第三に、計測の盲点それ自体。Davidson が核心を突いた点だ。「JavaScript ベースの analytics は、JavaScript が壊れて真っ白になった利用者を計測できない」 。この一行は単純な事実だが、業界の大半はその事実を無視して暮らしてきた。Google Analytics、Mixpanel、Amplitude はすべて JavaScript が実行されないと計測 ping を投げない。5G・M1 MacBook の World があり、その World の中で見た統計が 「全利用者」 の統計として受け入れられてきた。二倍になった新しい利用者の半分は、実は計測の盲点に留まっていた利用者である。この計測バイアスは道具選択のバイアスへと連鎖する。SPA の利用者行動データを良く見せた一因こそが、「SPA に失敗した利用者は計測から漏れる」 という事実だった。
二倍の利用者が指す本当の問い — JS の位置はどこか
Davidson の事例は React の終焉を語らない。正確には記事のどこにも 「React を使うな」 という結論はない。彼が指摘したのは 「client-heavy なフォームは client-heavy な framework の自然な適用先ではない」 という領域定義だ。Hacker News の議論はこの定義を拡張する。
最も多くの同意を得たコメントはユーザー chao- の一行だ。「不慣れな道具で同じ仕事をやれば、仕事量が増えたように見える。実際にはより単純な道具でも」 。Davidson の後任が新しいコードを見て 「以前より仕事量が多い」 と不満を漏らしたことへの応答である。この非対称は道具選択の政治学を指す。客観的な単純さと主観的な慣れが同じ方向を指さないとき、採用は慣れに従う。
ユーザー seangrogg はもう一歩踏み込む。「大半のウェブ開発者は React を知っており広く使っている。Astro は現場で学ぶか、専用に雇うかしなければならない」 。この一行は、道具選択が技術の優劣ではなく採用市場と保守コストの関数であることを正確に突く。React がサイズと複雑さの点で不合理な場合であっても、React を知る開発者の母数が他のどんな framework よりも厚いという事実そのものが、強力な採用圧力になる。
ユーザー iamjs の整理はトレードオフをより率直に晒す。「我々は simple server-rendered HTML の上に progressive-enhancement 風の JavaScript だけを乗せた。コストもあった。豊富な off-the-shelf の UI コンポーネントを使えなくなった」 。これが HTML-first の本当のコストだ。React のエコシステムには Material UI、Chakra UI、Mantine、Radix UI など成熟したコンポーネントライブラリがある。Astro・HTMX・Web Components の上にはそこから引っ張れるコンポーネントがはるかに少ない。最初から作らねばならない。Davidson のフォームは単純なのでこのコストが小さかった。豊富なデータ可視化やリアルタイム協調が必要な SaaS なら、同じコストが致命的に重い。
別の角度では、最も興味深いコメントはユーザー igsomething の一行だ。「プロジェクト全員が React は合わないと同意した。しかし我々には何もできなかった。政府 IT 部門の誰かが、自分たちが間違ったと認めねばならなかったからだ」 。道具選択の本当のコストは技術的ではなく政治的だ、という真実である。政府、大企業、規制産業の IT 決定は一度下されると覆すコストが高すぎて、間違った選択が 5 年以上生き残る。Davidson が二倍の利用者を作れた理由は、彼が小規模事業者のコンサルタントだったからであって、大企業の社員だったからではない。
最後に、中間地帯の浮上も拾わねばならない。ユーザー faangguyindia は自身のスタックを一行で整理した。「私のアプリの大半は HTMX + Go + SQLite だ。大半のプロジェクトにはこれで十分」 。HTMX は HTML の属性で非同期リクエストと部分ページ置換を扱うライブラリだ。JavaScript を使うが SPA のフレームには行かない。Davidson の Astro と近い場所に立つが、サーバー側言語とより強く結びつく。HTMX、Alpine.js、Astro、Hotwire (Rails の Turbo) のような中間地帯の道具が 2026 年のウェブ開発で同時に台頭するのは偶然ではない。SPA と正統 server-rendered の二極の間に空いた席があり、その席が埋まりつつある。
実務者への示唆 — 計測インフラから変えよ
Davidson の事例が実務エンジニアに与える示唆は 「React を引き剥がせ」 ではない。より正確な示唆は三つある。
第一に、計測インフラを JavaScript-only から分離せよ。 JS-only の analytics は JS が壊れた利用者を計測から漏らす。サーバー側のログ (NGINX、Cloudflare Workers の access log、edge function log) とクライアント側 analytics を結合して、「ページを受け取ったが measurement ping を投げられなかった」 利用者の規模を計測可能な数値にせねばならない。Davidson の二倍の利用者は、実は計測インフラが可視化させた結果である。他社の measurement のギャップはより小さいかもしれないし、より大きいかもしれない。
第二に、client-heavy framework の自然な適用領域を描き直せ。 React、Vue、Svelte の輝く場所は (a) リアルタイムデータ更新が核となる dashboard、(b) 複雑な状態機械を持つエディタ・diagrammer、(c) リッチなクライアント側インタラクションが価値の本体であるゲーム・シミュレーションだ。それ以外の場所 — 静的コンテンツ、単純なフォーム、文章中心のサイト、E コマースの商品ページ — は server-rendered HTML が自然だ。Astro が 「コンテンツ中心サイトの React」 という席を占めたのは、この再配置を反映している。
第三に、公共事業・政府サービスの IT 方針を見直せ。 Davidson がやったことは 「JavaScript 依存 = アクセシビリティ・リスク = 規制違反リスク」 という等式を実証したことだ。英国の GDS (Government Digital Service) はすでに似た原則を標準化している。progressive enhancement が GDS Design System の基本原則だ。韓国の政府 24、日本のマイナンバーサービスが同じ原則に従っていたら、React-only SPA が生んだアクセシビリティ問題 (スクリーンリーダー非対応、低スペック端末非対応) は同水準で解決されていただろう。Davidson の事例はその原則が実際の ROI と結びつくという証拠である。
結論 — 二倍の利用者、しかし React は死なない
Davidson の一行 — 「HTML-first で作り直したら利用者が二倍になった」 — が示唆するのは React の終焉ではない。正確には、React がすべての場所を占めた時代の終焉である。フォーム、コンテンツ、商品ページのような場所は server-rendered HTML が自然だ。Dashboard、エディタ、協調ツールのような場所はなお React・Svelte・Vue の領域である。二つの領域の境界が引き直されており、Astro・HTMX・Hotwire がその境界の上に新たに陣取りつつある。
本当の問いはその先だ。境界の上に立つ会社は何をするのか。Davidson のように小規模事業者のフォームをコンサルティングする場では、計測の盲点を見つけやすい。大企業の場では igsomething のコメントのように政治的コストが道具選択を縛る。その間でエンジニアができる最も誠実な仕事は、自身の利用者が実際に計測されているかを今一度確認することだ。Davidson の二倍は道具の勝利ではなく、計測の回復だった。それが 1098 点が本当に意味するところだ。
出典: