New September 17, 2026

Static sites, Docker images, and a new env editor

Static sites for frontend and SPAs, and Docker images you already built. Both in Beta.

You can now publish frontend and SPAs as Static sites. You can also deploy a Docker image from a registry: you build it, we run it. Both are in Beta.

Create a static site from a Git repo with language, build command, and publish directory

Static sites

Static site is a new app type, in Beta. Connect GitHub or GitLab and you get a public URL. It is hosting for HTML, CSS, and JS. You run a build to produce those files, we serve them.

On create you set a language (default Node), a build command, and a publish directory (dist, build, or out). SPA routing is on by default, so deep links work. Pre-fill with AI can fill the publish directory now.

Hosting is free ($0). Custom domains work the same as web apps.

Create application source choice with Docker image selected

Docker image deploys

Docker image is a new source for web, worker, and private apps, in Beta. You build the image. We pull it and run it. Skip Git if we don’t build your language, or if you already ship images from CI.

Docker Hub, GHCR, GitLab, or a private registry. Public images need no credentials. Private ones use a team container registry credential.

There is no git build step. Redeploy picks a tag. Web and private still need a port.

More in Deploying from a Docker Image and Container registry credentials.

Environment variables inline editor with Secret checkboxes and Import from .env

Environment variables, inline

The per-row modal is gone. Create and the application sidebar now share the same table: key, value, Secret, remove. Existing secrets stay masked. You can replace a value. You can’t read it back.

Import from .env pastes KEY=value lines. Append * to a key (API_KEY*=…) and it is marked secret. Blank rows are ignored on save, so an extra empty line is not an error.

Also this month

  • Failed-deploy emails include a recent logs excerpt and a View logs button
  • The runtime picker is now labeled Language
  • Empty lists have type-specific illustrations (web, worker, private, static, database, and the rest)
  • Owners can delete a team from settings. Blocked if the team owes credits
  • Fixes: sidebar logs no longer mix between apps, histogram no longer sticks on first load, email-verify redirect 404