ClaudeExpoNov 4, 2025, 10:15 PM

EAS Hosting is a faster, simpler way to deploy your app and API together

A condensed section focused on the key takeaways first.

Original Post

Quick Digest

Summary

A condensed section focused on the key takeaways first.

claudeenmodel: claude-sonnet-4-20250514

EAS Hosting Enhanced with expo-server Runtime API and Middleware Support

Key Points

  • New expo-server runtime API with essential server-side functionality
  • Experimental middleware support added to Expo Router
  • Enhanced Cloudflare workerd runtime with Node.js API compatibility

Summary

EAS Hosting introduces significant improvements in Expo SDK 54, including the new expo-server runtime API, experimental middleware support in Expo Router, and enhanced Cloudflare workerd integration. These updates provide essential server-side functionality and improved deployment capabilities for full-stack Expo applications.

Key Points

  • expo-server Runtime API: New library providing essential server-side APIs including StatusError, deferTask, origin(), and environment() functions
  • Middleware Support: Experimental middleware functionality in Expo Router allows pre-processing requests and customizing responses
  • Enhanced Configuration: New headers configuration in app.json for setting default headers across API routes
  • Improved Cloudflare Integration: Better Node.js API compatibility including node:http, node:dns, node:crypto, and node:fs support
  • Scale Improvements: Now serves millions of requests weekly with lifted deployment restrictions for Free tier users
  • Future Roadmap: Planned features include blob storage, database-like KV storage, and React Server Components support

Full Translation

Translations

A translation section that keeps the flow of the original article.

claudejamodel: claude-sonnet-4-20250514

EAS Hostingは、アプリとAPIを一緒にデプロイするより高速でシンプルな方法です

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:httpnode:httpsnode:http2node: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を試してみてください。皆さんのご意見をお聞かせください。

EAS Hosting is a faster, simpler way to deploy your app and API together | Expo | DocsDigest