EAS Hostingは、アプリとAPIを一緒にデプロイするより高速でシンプルな方法です
Product • Development • November 4, 2025 • 7分で読める
Phil Pluckthun Engineering
EAS Hostingを使用すると、フルスタックのExpoアプリを簡単にデプロイできます。expo-server、ミドルウェアサポート、改善されたCloudflare統合などの新機能をご紹介します。
今年の初めに、私たちはEAS Hostingをリリースしました。これは、WebとAPIエンドポイントを持つExpoアプリをExpo Routerで簡単に配信するための私たちのアプローチです。EAS Hostingは、ExpoアプリをAPIエンドポイントとWebに接続し、デプロイメントを心配することなく、初日から実際の機能を持つアプリを提供する最も合理化された方法だと私たちは信じています。
この目的のため、私たちは最初からEAS HostingがAPIを監視し、デプロイするものに自信を持つために必要なすべての基本機能を持つことを目指していました:
- Console APIと統合され、プレビューデプロイメントと本番デプロイメントの両方でログメッセージを追跡する詳細なリクエストログ
- APIルートが未処理エラーに遭遇した際のグループ化されたクラッシュレポート
- APIルートのパフォーマンスとエンドポイントの呼び出し方法についての洞察を提供する、プラットフォーム別にグループ化された広範なメトリクス
EAS Hostingのリリース以来、私たち自身もそれを使ってサービスを構築してきました。Expo LaunchはExpo、EAS Hosting、EAS Workflowsで完全に構築されました。しかし、これは始まりに過ぎず、EAS HostingをあらゆるExpoプロジェクトに追加する明らかな選択肢にする変更と機能に向けて取り組んでいます。
expo-serverランタイムAPI
Expo SDK 54では、expo-serverライブラリを導入しました。このライブラリは、以前はAPIルートで利用できなかった機能に必要な重要なAPIを提供します。
import { StatusError, deferTask, origin, environment } from 'expo-server';
export async function GET(request: Request, { post }: Record<string, string>) {
if (!post) {
throw new StatusError(404, 'No post found');
}
if (post === 'index') {
const target = new URL('/help', origin() ?? request.url);
throw Response.redirect(target, 302);
}
deferTask(async () => {
logAnalyticsDatapoint(...);
});
const env = environment();
return Response.json({ isStaging: env === 'staging' });
}
Task Scheduling APIは、慣れ親しんだFetchやWeb APIでは標準化されていません。多くのランタイムにはctx.waitUntil(promise)などのAPIが利用可能ですが、expo-serverはサーバーサイドコード内のどこからでも呼び出せるタスクスケジューリング用の2つの簡単な関数を提供します。
origin()、environment()のようなパターンや、サーバーサイドコードのどの部分でもStatusErrorレスポンスをthrowできる機能は、EAS HostingでExpo Launchを構築する際に私たちが欠けていると感じた機能でもあります。
expo-serverは@expo/serverパッケージを置き換え、EAS Hostingだけでなく他のサーバーランタイムやプロバイダー用のアダプターも含んでいます。私たちはランタイムとプロバイダー間の機能を統一し、ExpoアプリのAPIルートやサーバーコードがロックインされていると感じることがないようにすることにコミットしています。
expo-serverのAPIについて詳しくは、APIルートドキュメントページをご覧ください。
Expo Routerミドルウェア
Expo Routerがミドルウェアをサポートしていないことは大きな制限であり、以前はAPIルートの多くの創造的な使用方法を妨げていました。Expo SDK 54では、ミドルウェアの実験的サポートを追加しました。
ミドルウェアは、Expo Routerの他のサーバーサイドコードが実行される前に実行される関数で、expo-server APIと組み合わせることができます。
例えば、すべてのAPIルートのResponseヘッダーをカスタマイズするミドルウェアを書くことができます:
import { setResponseHeaders } from 'expo-server';
export default function middleware(request: Request) {
setResponseHeaders(headers => {
headers.append('Set-Cookie', 'token=123; Secure');
});
}
EAS HostingでのHeadersのapp.json設定
私たちはまた、稀なケースでExpo RouterとEAS Hostingの両方に同時に影響する設定があることに気づきました。その一例がデフォルトヘッダーです。
{
"expo": {
"plugins": [
[
"expo-router",
{
"headers": {
"Content-Security-Policy": "frame-ancestors deny",
"Set-Cookie": ["token=123; Secure"]
}
}
]
]
}
}
headers設定により、Expo Routerアプリをエクスポートする際に、EAS Hostingが取得する設定ファイルが作成されます。
Cloudflare workerdランタイムの改善
EAS HostingはCloudflare Workers上に構築されており、デフォルトでグローバルです。Cloudflareが構築したworkerdランタイムはWinterTCとWeb API標準に準拠しています。しかし、これはNode.js APIとモジュールに関して、私たちが以前に平滑化しようとした制限があることも意味します。
時間が経つにつれて、これらの制限の多くが取り除かれました。Node.jsをターゲットとする多くのライブラリが、変更を加えることなくCloudflare Workers上で動作するようになりました。
特に、workerdは現在以下をサポートしています:
node:http、node:https、node:http2、node:tls
node:dns
node:crypto
- インメモリファイルシステムを持つ
node:fs
workerdでのこれらの着実な進歩により、Node.jsの知識を妥協することなく、Node.jsランタイムで使用するパッケージを交換する必要なく、Cloudflare Workers上での構築により自信を持てるようになりました。
大規模での信頼性
EAS Hostingは現在、毎週数百万のリクエストを処理しており、企業、チーム、ユーザーからのフィードバックを取り入れています。(例えば、5月にはワイルドカードカスタムドメインとダッシュボードでのデプロイメントファイルブラウザを導入しました。)
この信頼性の向上と収集したデータポイントにより、Freeティアユーザーのデプロイメントとデプロイメントあたりのアセットに関する制限を解除することもできました。
私たちは現在、毎日数千のワーカーデプロイメントを処理しており、ローンチ以来、デプロイメントとアセットアップロードの速度向上に取り組んできました。平均的なデプロイメントは一貫して1分未満で作成され、制限の解除はこれに影響を与えたり、失敗の増加を引き起こしたりしていません。
Hostingの未来への基盤構築
これらの変更はすべて一つの方向を指しています:
- expo-serverサーバーサイドランタイムAPI
- Expo Router +middleware.tsサポート
- EAS Hosting用のapp.json Expo Router設定
これらの変更と機能の多くは不足していた機能を補完していますが、同時にEAS Hostingの未来と今後のロードマップの温床でもあります。
expo-serverは複雑さやベンダーロックインを増加させることなくサーバーサイドAPIを提供するだけでなく、EAS Hostingに特化した機能とAPIを提供する方法も与えてくれます。
私たちはまず、expo-serverランタイムAPIによって有効化され、EAS Hostingとシームレスに統合される値とblobファイルストレージの追加に取り組みます。しかし、データベースライクで名前空間化されたKVストレージ機能も調査しています。
expo-serverはまた、あらゆるサーバーサイドコードで動作するように設計されたAPIであり、API上の懸念に制限されることなく、Server Loader Functions、React Server Functions、React Server Components、Expo RouterでのServer-Side Renderingサポートの作業を自信を持って続けることを可能にします。
これらの機能の作業はまだ流動的ですが、これらの機能の一部は既にExpoで実験的プレビューとして利用可能です。
これは、私たちが現在3つの整合されたロードマップで進歩していることを意味します:
- より多くのWebとサーバーサイド機能(React Server Functionsなど)に対するExpo Routerの継続的サポートの安定化
- ストアへのアプリ、ユーザーへのアップデート、EAS HostingへのAPIコードの並列デプロイメント
- expo-serverを介したEAS Hostingのステートフル機能とストレージAPI
ぜひHostingを試してみてください。皆さんのご意見をお聞かせください。