Serverless App Services and deployments
Serverless App Services
A Serverless App Service ties a repository to builds and deployments, with its own settings, environment variables, domains and storage.
Create a Serverless App Service
Cloud → Serverless App Services → New Serverless App Service, or Create → Serverless App Service in the sidebar (needs projects:write):
| Field | |
|---|---|
| Repository | The repository to deploy, or Connect later. |
| Name | Shown across Cloud. Up to 64 characters. |
| Slug | Lowercase letters, numbers and dashes, 2 to 40 characters, unique in the organization. Part of every hostname the Serverless App Service gets. |
| Framework preset | Next.js, Static or Node.js. |
| Location | Where server functions run. Defaults to the registry's default location. |
| Root directory | The folder with the app, for monorepos. Defaults to the repository root. |
Your first Serverless App Service walks through it.
Serverless App Service pages
| Tab | |
|---|---|
| Overview | The production deployment (hostname, commit, build duration, location, server function), its domains, Instant Rollback, and recent deployments. |
| Deployments | Every deployment, filterable by environment, status and branch (deployments:read). |
| Analytics | The Serverless App Service's traffic (analytics:read). See Analytics. |
| Logs | Runtime and build logs (logs:read). See Logs. |
| Storage | Linked databases and buckets (resources:read). |
| Activity Log | Changes to it from the audit log, filterable by activity and person. |
| Access Control | Who can reach it, from their roles and their groups' grants (members:read). |
| Tags | Its tags and resource group. |
| Settings | The settings below. |
Databases and buckets have the same header and the same last four tabs. Pin to Dashboard in the header adds it, or its traffic or deployments, to one of your dashboards.
Settings
Changing settings needs projects:write. Build settings apply to the next deployment.
General
| Setting | Default | |
|---|---|---|
| Serverless App Service name | Shown across Cloud. | |
| Framework preset | Next.js | How the Serverless App Service is built. See Frameworks. |
| Build command | detected | Static Serverless App Services: replaces the detected build script. |
| Output directory | detected | Static Serverless App Services: the folder to upload, relative to the root directory. |
| Install command | detected | Replaces the detected install for every framework, and runs in the root directory. |
| Root directory | . | The folder in the repository that contains the app. Builds run from here. |
Turn an override off to go back to detection. The Node.js version is the platform's (22), for builds and server functions. Serverless App Service ID is the id the API and builds (PROJECT_ID) use.
Domains: the Serverless App Service's custom domains (domains:read).
Environment Variables: environment variables (env:read).
Git
- Connected Repository: pushes to it deploy the Serverless App Service. Connect, change or disconnect it. A repository can be connected to several Serverless App Services; one push then deploys each of them, for example two apps in a monorepo with different root directories.
- Production Branch (default
main): pushes to it deploy to production and update your domains; other branches get previews. - Ignored Build Step: which pushes build, from the root directory's
si.jsonwatch. See Skipped pushes.
Functions: the Function Region, the location server functions of new deployments run in, and Function Resources: memory (default 1,024 MB) and max duration (default 30 seconds, at most 60). Existing deployments keep what they were created with; the next push builds and applies a change. Every server function runs arm64 and Node.js 22.
Cron Jobs: the crons the production deployment's si.json declares, their next run and last result, and pausing. See Crons.
Deployment Protection: require a sign-in on deployment URLs, and a bypass secret for automation. See Deployment protection.
Advanced
- Slug: changing it changes the production hostname and the hostnames of new deployments. The new production hostname serves right away and the old one stops.
- Transfer Serverless App Service: moves the Serverless App Service to another organization where you have
org:write(needed in both). Deployments, domains, environment variables (re-encrypted for the new organization) and crons move with it. The repository stays and is disconnected, linked databases and buckets must be unlinked first, and the target organization can't have a Serverless App Service with the same slug. - Delete Serverless App Service: removes the Serverless App Service with its deployments, server functions, build outputs and caches, domains (routes and certificates), environment variables and crons. Linked databases and buckets are unlinked, not deleted, and the repository is kept. Can't be undone.
Transfer and delete wait until no deployment is in progress.
Frameworks
| Framework | Build | Serves |
|---|---|---|
| Next.js | OpenNext (@opennextjs/aws 3) | A server function (Node.js 22, arm64) for dynamic routes, static files from the edge. |
| Static | Your build script, if any | Files only. |
| Node.js server | Your build script, if any | A server function (Node.js 22, arm64) running your server behind the AWS Lambda Web Adapter; every request, files included, goes to it. |
See The build pipeline for what each build does.