Supabaseは10月14日(現地時間)、Web Fetchハンドラー向けに合成可能で再利用可能なミドルウェア「@supabase/middleware」の詳細を公開した。これは、同社が10月2日に開催した「Supabase Select」イベントで発表されたもの。一度記述したリクエストごとのロジックを、Web Fetchをサポートするあらゆるランタイムや、Hono、H3、Elysia、NestJS、TanStack Startといった主要フレームワーク内で利用できるようになる。MITライセンスのもと、TypeScript開発者向けに提供される。
このミドルウェア開発の背景には、従来のリクエストごとのロジックがハンドラーに固定され、ランタイムやフレームワークを変更するたびに再記述が必要だった課題があった。CORS処理や認証、フラグチェックといった共通ロジックを一度記述すれば、多様な環境で再利用できるようにすることを目指して開発された。
@supabase/middlewareは、pipeline関数を通じて複数のミドルウェアを順序立てて構成する方式を採用している。例えば、withCorsはCORSヘッダー処理を、withRequiredClaimsはJWT検証を、withSupabaseClientは呼び出し元にスコープされたSupabaseクライアントをctx.supabaseに追加する役割をそれぞれ担う。各ミドルウェアは独立した機能を持つ。共有のコンテキストオブジェクト ctx に型付けされたキーを追加することで情報を連携させる。これにより、個々のミドルウェアは特定のハンドラーに依存せず、再利用が可能になる。
提供されるミドルウェアには、CORS処理を行うwithCors、特定の機能フラグの有無を確認するwithFeatureFlag、JWTをデコードしてクレームを追加するwithClaims、検証済みのクレームを追加するwithRequiredClaims、呼び出し元にスコープされたSupabaseクライアントをctx.supabaseに追加するwithSupabaseClient、RLSをバイパスするサービスロールクライアントを追加するwithSupabaseAdminClientが含まれる。さらに、withPostgresClientとwithPostgresAdminClientも提供されている。これら一部のミドルウェアは @supabase/server の一部として提供されていた機能と同じものも多く、今回の発表はミドルウェアを構成するエンジン部分が新しい要素として挙げられている。
このミドルウェアは、Supabase Edge Functions、Vercel Functions、Cloudflare Workers、Deno、Bun、Node 22以降などの多様な実行環境で動作する。エンジン自体はWeb Fetchに準拠しており、特定のデータベースやSupabaseプロジェクトへの依存はない。MITライセンスのため、Supabase以外の環境でも利用可能となっている。ただし、withPostgresClientとwithPostgresAdminClientはpgライブラリがTCPソケットを必要とするため、Cloudflare Workersでは動作しない。
また、Hono、H3、Elysia、NestJS、TanStack Startといったフレームワーク内で利用するためのブリッジファイルも提供されている。このブリッジファイルをプロジェクトにコピーすることで、既存のミドルウェアロジックをフレームワーク固有のミドルウェア形式に書き直すことなく、再利用できる。
参考: Supabase Blog — 2026年10月15日 09:00 (JST)