TL;DR
Alchemy is the most ergonomic choice if your target is Cloudflare and you want to write infrastructure in plain TypeScript without a CDK-style DSL. SST v3 is the right call when AWS is the primary or co-primary target and you want a mature, opinionated framework. OpenNext is not a competitor — it's a target adapter that takes your Next.js app and makes it run on Cloudflare Workers, Lambda, or other non-Vercel runtimes; you typically pair it with Alchemy or SST. In 2026 the deployment landscape has bifurcated: AWS-shaped teams use SST v3, Cloudflare-shaped teams reach for Alchemy, and Next.js teams who refuse to be locked into Vercel use OpenNext on top of either.
Quick Verdict
| Alchemy | SST v3 | OpenNext | |
|---|---|---|---|
| Type | IaC framework | IaC framework | Build adapter |
| Primary target | Cloudflare | AWS | Cloudflare, AWS, etc. |
| Code style | Plain TS, no synth step | TS + Pulumi runtime | Build-time codemod |
| State management | Local file or remote backend | Pulumi state | None (build artifact) |
| Pairs with Next.js | Yes (via OpenNext) | Yes (built-in) | Yes (its purpose) |
| Best for | Cloudflare-first apps | AWS apps and SST users | Next.js outside Vercel |
Key Takeaways
- Alchemy and SST solve the same problem from different sides. Both let you declare resources in TypeScript. Alchemy is lighter and Cloudflare-shaped; SST v3 is built on Pulumi and inherits its multi-cloud reach.
- OpenNext is not an alternative to either. It produces a build output. You still need IaC to deploy that output. The combination "OpenNext + Alchemy" is increasingly the default for Next.js-on-Cloudflare in 2026.
- State files are a real choice. SST/Pulumi mandate a state backend. Alchemy treats state as optional (file-based by default), trading collaborative safety for setup simplicity.
- Cloudflare-vs-AWS is no longer ideological. Both clouds host serious production apps; the deciding factor is where your data lives, your egress cost profile, and your team's runtime knowledge.
What Each Tool Actually Is
Alchemy
A pure-TypeScript IaC library where each resource is a regular async function that idempotently creates or updates infrastructure. There's no compile step, no synth, no separate state daemon. Resources are described and deployed in the same bun run deploy.ts invocation.
import alchemy from "alchemy";
import { Worker, R2Bucket, KVNamespace } from "alchemy/cloudflare";
const app = await alchemy("my-app");
const bucket = await R2Bucket("uploads");
const kv = await KVNamespace("sessions");
await Worker("api", {
entrypoint: "./src/worker.ts",
bindings: { UPLOADS: bucket, SESSIONS: kv },
});
await app.finalize();
The pitch is low cognitive overhead. You read the file top-to-bottom and you understand the deployment. The catalog skews heavily Cloudflare (Workers, R2, KV, D1, Durable Objects, Queues) with AWS coverage filling in.
SST v3
A rewrite of SST atop Pulumi, with Pulumi's state engine, providers, and resource graph beneath an SST-flavored TypeScript surface (Function, Bucket, Nextjs). It inherits Pulumi's strengths: solid drift detection, mature multi-cloud support, real preview/diff. It also inherits Pulumi's complexity surface.
// sst.config.ts
export default $config({
app: () => ({ name: "my-app", home: "aws" }),
async run() {
const bucket = new sst.aws.Bucket("Uploads");
new sst.aws.Nextjs("Web", { link: [bucket] });
},
});
SST v3 is the reference implementation for "Next.js on AWS done right", with the Nextjs construct handling ISR, image optimization, and edge functions through a curated Lambda + CloudFront topology.
OpenNext
OpenNext (@opennextjs/cloudflare, @opennextjs/aws) takes the standard Next.js build output and produces a deployable bundle that runs on a non-Vercel runtime. The Cloudflare adapter has matured significantly through 2025-2026 and now supports the App Router, server actions, partial prerendering, and most of the runtime features.
# Build for Cloudflare Workers
npx @opennextjs/cloudflare build
# Then deploy the dist/ output via Alchemy, Wrangler, or any Worker-compatible IaC
OpenNext doesn't deploy. It builds. You combine it with Alchemy (Cloudflare) or SST v3 (AWS) to actually push the artifact.
Decision Map
| If you... | Pick |
|---|---|
| Are Cloudflare-first and want zero ceremony | Alchemy |
| Are AWS-first and want a managed Next.js construct | SST v3 |
| Run Next.js but cannot use Vercel | OpenNext + Alchemy or SST |
| Already use Pulumi and want SST sugar on top | SST v3 |
| Want plain TS code with no synth step | Alchemy |
| Need real preview/diff and multi-cloud | SST v3 |
| Build small Worker scripts with R2/KV | Alchemy (or Wrangler directly) |
The OpenNext Reality in 2026
Next.js outside Vercel was a fragile story in 2023-2024. By 2026 it works — but the edges still need attention:
- App Router: full support on the Cloudflare and AWS adapters.
- Server Actions: supported, with caveats around long-running actions on Workers (CPU time limits).
- ISR / on-demand revalidation: works, with KV or R2 as the cache layer on Cloudflare; CloudFront-backed on AWS.
- Image optimization: handled by adapter-specific shims; on Cloudflare, you'll usually pair this with
cf-image-resizingor a third-party transformer. next/imagedefaults: re-check yournext.config.jsimagesblock — Vercel-specific defaults trip OpenNext builds.
For more on the broader Next.js ecosystem outside Vercel, see Next.js developer ecosystem guide 2026.
Cost & Vendor-Lock Tradeoffs
- Alchemy: weakly opinionated about cloud — but its resource catalog is Cloudflare-heavy. Multi-cloud is possible but you'll be writing more.
- SST v3: strongly tied to AWS for the polished constructs. Cloudflare and Vercel constructs exist but are second-class.
- OpenNext: explicitly anti-lock: the whole point is to keep your Next.js code portable across runtimes.
If your strategy is to leave Vercel without committing to AWS, OpenNext + Alchemy is the path. If you've already paid the AWS tax in dev velocity and ops knowledge, SST v3 is the smoother ride. For a broader IaC view, see Pulumi vs SST vs CDKTF.
Who Should Pick What
- Solo founder shipping on Cloudflare Workers: Alchemy. The plain-TS deploy script lowers the barrier to "works on my laptop and in CI".
- Mid-stage SaaS on AWS with a Next.js front end: SST v3. The
Nextjsconstruct alone is worth the framework fee. - Existing Next.js team leaving Vercel: OpenNext, paired with Alchemy if you're going to Cloudflare or SST v3 if you're going to AWS.
- Hobby project deploying a static API: Wrangler + a
wrangler.tomlmay be simpler than any of these — see SST v3 vs Serverless Framework vs AWS CDK.
Verdict
In 2026, Alchemy is the cleanest first-time-IaC experience for Cloudflare, SST v3 is the production-grade default for AWS-shaped teams, and OpenNext is the mandatory bridge if Next.js is your framework but Vercel isn't your platform. None of these tools are direct competitors — pick based on where your runtime lives, then layer OpenNext if Next.js is in the picture.