This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Expo Server

Server-side API and runtime for Expo Router projects.

Server
Recommended version:
~55.0.12

expo-server is a server-side API and runtime library for Expo Router. It provides helpers you can use in your Expo Router API routes or other server code, and contains adapters to run Expo Router server exports.

Installation

Terminal
- npx expo install expo-server
- yarn expo install expo-server
- pnpm expo install expo-server
- bun expo install expo-server

To use expo-server in your project, you need to configure your Expo Router project to export in server mode. Follow the instructions from Expo Router's API Routes guide:

API Routes

Learn how to create server endpoints with Expo Router.

Usage

expo-server's runtime APIs can only be used in server-side code and give you access to the server-side runtime environment. The runtime API exposes functions that can be called within the async context of request handlers and give you information about the current request or schedule tasks that run concurrently to the incoming request.

Accessing request metadata

import { origin, environment } from 'expo-server'; export async function GET() { return Response.json({ isProduction: environment() == null, isStaging: environment() === 'staging', origin: origin(), }); }

Scheduling tasks

import { runTask, deferTask } from 'expo-server'; export async function GET() { runTask(async () => { console.log('will run immediately.'); }); deferTask(async () => { console.log('will run after the response resolved.'); }); return Response.json({ success: true }); }

Adapters

expo-server exposes adapters to run Expo Router server-side exports in different environments or on different cloud provider serverless functions. Typically, every runtime needs its own adapter to function with the expo-server runtime. Before deploying to these providers, it is good to be familiar with the basics of npx expo export command.

AdapterProvider
expo-server/adapter/bunBun
expo-server/adapter/expressExpress
expo-server/adapter/httpNode.js
expo-server/adapter/netlifyNetlify Functions
expo-server/adapter/vercelVercel Functions
expo-server/adapter/workerdCloudflare Workers

To learn how to host API routes on different third-party services, follow the instructions from Expo Router's API Routes guide:

API Routes

Learn how to host API Routes on third-party services.

By convention, all adapters export a createRequestHandler function that accepts a parameters object. This accepts a build parameter that must be set to the relative path to the dist/server output directory that npx expo export created. Some adapters may also accept more values to configure the runtime API.

import path from 'node:path'; import { createRequestHandler } from 'expo-server/adapter/http'; const onRequest = createRequestHandler({ build: path.join(process.cwd(), 'dist/server'), environment: process.env.NODE_ENV, });

API

No API data file found, sorry!