7月26日、Tailwindが「Vanilla JavaScript support for Tailwind Plus」と題した記事を公開した。
この記事では、Tailwind CSSの有料版「Tailwind Plus」のUIブロックを、フレームワークに依存せず利用可能にする新ライブラリ「@tailwindplus/elements」について詳しく紹介されている。以下に、その内容と、同ライブラリが象徴する 「クライアントJSを最小化し、標準技術で再利用性を高める」潮流 を統合して解説する。
Vanilla JSでそのまま動くTailwind Plus
Tailwind Plusに含まれるドロップダウンやモーダルなどのUIブロックは、従来ReactやVueでの活用例しかなかった。今回登場した "@tailwindplus/elements"はWeb Components(Custom Elements)として実装 されており、プレーンHTMLに以下の一行を追加するだけで機能する。
<script src="https://cdn.jsdelivr.net/npm/@tailwindplus/elements@1" type="module"></script>

以下は、ドロップダウン要素を使用する例である。
<el-dropdown class="relative inline-block text-left">
<button class="inline-flex w-full justify-center gap-x-1.5 ...">Options</button>
<el-menu anchor="bottom end" popover class="w-56 origin-top-right rounded-md ...">
<div class="py-1">
<a href="#" class="block px-4 py-2 text-sm text-gray-700">Account settings</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700">Support</a>
<form action="#" method="POST">
<button type="submit" class="block w-full px-4 py-2 text-left text-sm text-gray-700">Sign out</button>
</form>
</div>
</el-menu>
</el-dropdown>
ボタンとメニューを囲む <el-dropdown>
と <el-menu>
がARIA属性、キーボード操作、フォーカス制御などの複雑な挙動を肩代わりし、開発者はHTMLとスタイルだけに集中できる。
今回のリリースでは、以下の要素群を利用できるようになる。
- Autocomplete — カスタムコンボボックスなど
- Command palette — 高度なコマンドパレット
- Dialog — モーダルダイアログ、ドロワー
- Disclosure — FAQやモバイルメニューの開閉
- Dropdown menu — 任意のドロップダウン
- Popover — フライアウトメニューなど
- Select — ネイティブライクなセレクトメニュー
- Tabs — タブUI
“クライアントJS最小化”の潮流
Tailwind Plusが今回フレームワークに依存せず、標準技術のみで構築されたコンポーネント群をリリースしたのには、フロントエンド開発の世界で「クライアントJSを最小化していく」という流れが大きくなりつつあることの一つの現われだと言えよう。
そうした流れが大きくなりつつある理由の一つに ** Web Componentsが再評価** されつつあるということが挙げられる。
主要ブラウザがCustom Elements/Shadow DOMを標準実装したため、高度なUIコンポーネントをフレームワークなしでも構築できるようになった。ShoelaceやRadix PrimitivesのWeb Component版など、フレームワーク非依存UIライブラリが続々登場している。
また、 ** HTML over the wire** と呼ばれるスタックが人気を上昇させている。
htmx、Hotwire、Phoenix LiveViewなど、「サーバーがHTMLを返すだけ」というスタイルは徐々に主流化しつつあり、クライアント側のJSを極小化しつつ高いインタラクションを実現している。
従来のWebフレームワーク自身も、軽量化路線を打ち出している。
Next.js/Remix/Astro/Qwikなどは、Server Componentsやアイランドアーキテクチャをベースとして、 「ビルド時に多くのタスクを実行し、ランタイムを軽量に保つ」 という方向性を打ち出しており、Vanilla JSやWeb Componentsと容易に共存できる設計へ進化している。
総じて言えば、「ランタイムで大規模JSを抱え込むより、標準技術とビルド時最適化で必要部分だけを動かす」考え方が急速に一般化しつつある。 中小規模プロジェクトや受託開発では「まず素のJSとネイティブAPIで組む」という選択肢が再評価され、技術ブログでも脱・巨大フレームワークを推奨する記事が増えている。
その象徴的な出来事が、今回の@tailwindplus/elementsリリースである。
フロントエンド開発のトレンド
そうした潮流の中、フロントエンド開発は今後どのように進んでいくのか。それを見極めるには、現在様々なフレームワークやツールが、以下のような指向で設計されていることを把握しておくと良いだろう。
UIレイヤーの分離
サービス固有ロジックはフレームワークで記述しつつ、UIパーツはWeb Componentsとして抽象化すると移植性が高まる。ビルド時最適化の活用
AstroやQwikのように、必要箇所のみハイドレーションするプラットフォームを選択肢に入れたい。標準APIを第一候補に
<dialog>
やpopover
属性、Invoker Commands API などネイティブ機能の採用を検討し、JS依存の重い実装を避ける。多様なスタックの併用
React・VueとWeb Componentsは排他ではなく補完関係にある。チームや案件規模に応じて組み合わせる柔軟性が今後の鍵となる。
Tailwind PlusのVanilla JavaScriptサポートは、公式のリリースノート」を参照していただきたい。