Docs / Frameworks

Frameworks

aft.page hosts prebuilt static output (and optional Worker upstreams). Detect the project, build locally, upload the output folder only.

Detect & ship

Look at package.json, vite.config.*, next.config.*, index.html.

  • Plain HTML → upload those files (Drop, CLI, MCP).
  • Bundler app → npm run build, then upload output only (dist/, out/, build/).

Never upload src/, node_modules, or .next/. The hosted CLI auto-picks common output folders — CLI guide.

Plain HTML

aft deploy
# or Drop a folder / zip with index.html

Live: hello.aft.page. README-only (no index.html): / is 404; the file is at /README.md.

Vite / React / Vue / Svelte / Astro

npm run build
aft deploy          # uses dist/
# aft deploy dist

Example: vite-hello.aft.page. CRA / Rsbuild usually emit build/ or dist/.

Next.js static export

In next.config set output: 'export', then:

npm run build
aft deploy out

This is static hosting only — no Next server in the Worker unless you use the upstream path below.

Next.js SSR

Point aft at a live Next.js upstream, then register it with aft via aft.json:

{
  "name": "next-hello",
  "runtime": "next",
  "upstream": "https://your-app.example.com"
}

Live dogfood: next-hello.aft.page. aft.page does not build or deploy the Worker for you yet — you own that Worker and its deploys; aft.page just proxies to it.

Full compatibility matrix

Three tiers. "Verified" means the hosted CLI has actually detected, built, and shipped it end to end. "Static-capable, unverified" means the framework's build output should work as plain static files, but nobody has run it through the CLI yet — try it, but expect rough edges. "Needs a runtime we don't run" means it needs an automatic build, adapter, or container aft.page doesn't provide — bring your own upstream Worker (see Next SSR above) or it won't deploy.

Verified, shipped today

  • Plain HTML
  • React + Vite, Vue + Vite, Svelte + Vite
  • Astro (static output)
  • Next.js static export
  • Next.js via an existing HTTP upstream

Static-capable, unverified — try it, no promises

Angular, Brunch, Create React App, Docusaurus, Dojo, Eleventy, Ember.js, Gatsby, Gridsome, Hexo, Hugo, Ionic (Angular/React), Jekyll, Middleman, Parcel, Polymer, Preact, Nuxt (static generation), React Router (static/SPA mode), Remix (static/SPA mode), RedwoodJS (static web output), Saber, Sanity Studio, Scully, SolidStart (static output), Stencil, Storybook, SvelteKit (static adapter), TanStack Start (static output), UmiJS, VitePress, VuePress, Zola.

Needs a runtime we don't run yet

Containers; Python (Django, FastAPI, FastHTML, Flask); Node backends (Express, Fastify, Hono, Koa, NestJS, Nitro); Go; Next.js SSR beyond the manual upstream flow above; Nuxt SSR, React Router SSR, Remix SSR, SvelteKit SSR, SolidStart SSR, TanStack Start SSR; multi-function "Services" deployments.

Next: Docs home — back to the quick start and the full platform reference.