Supported platforms
AWS Blocks supports web, desktop, and mobile platforms. Your backend API is defined once in TypeScript, and type-safe clients are available for every supported platform.
Web frameworks
AWS Blocks auto-detects your web framework and configures the development server and deployment pipeline accordingly. The following frameworks are supported:
| Framework | Minimum version | Notes |
|---|---|---|
|
Next.js |
15.x |
Full SSR support with automatic route detection and middleware handling |
|
Nuxt |
4.x |
SSR via Nitro adapter with automatic server routes |
|
Astro |
4.x |
Static and SSR modes supported |
|
SolidStart |
1.x |
Via Nitro adapter |
|
TanStack Start |
1.x |
Via Nitro adapter |
|
React (SPA) |
18.x |
Static single-page application, any build tool (Vite, Create React App) |
|
Vue (SPA) |
3.x |
Static single-page application via Vite |
|
Svelte (SPA) |
4.x |
Static single-page application via Vite or SvelteKit (static adapter) |
|
Angular (SPA) |
17.x |
Static single-page application |
For SPA frameworks, AWS Blocks serves static assets from CloudFront with S3 origin. For SSR frameworks (Next.js, Nuxt, Astro SSR), AWS Blocks deploys server-side rendering via Lambda compute.
Framework detection is automatic based on your package.json dependencies. You can override it explicitly in your Hosting configuration.
Native and mobile platforms
AWS Blocks generates typed native clients from your backend API via OpenRPC codegen. You define your API once in TypeScript, and native platform SDKs are generated automatically.
| Platform | Language | Use case |
|---|---|---|
|
iOS |
Swift |
Native iOS applications via Swift Package Manager |
|
Android |
Kotlin |
Native Android applications via Maven/Gradle |
|
Cross-platform mobile |
Dart (Flutter) |
iOS, Android, web, and desktop from a single codebase |
|
Desktop |
Kotlin, Dart |
Desktop applications with type-safe backend access |
How native codegen works
The build pipeline generates an OpenRPC specification (aws-blocks/blocks.spec.json) from your ApiNamespace methods. Native codegen tools read this specification to produce typed SDKs for each platform.
The codegen pipeline has two layers:
- Platform SDK (hand-written, built once per platform)
-
Handles transport (HTTP JSON-RPC), authentication (cookie management, token injection), Realtime hydration (WebSocket connections), and FileBucket hydration (presigned URL operations).
- Generated typed facade (app-specific, produced by codegen)
-
One typed method per
ApiNamespacemethod. Calls into the platform SDK’s transport layer. Contains no transport logic.
To generate the specification:
npx blocks-generate-spec
This reads aws-blocks/index.ts and writes aws-blocks/blocks.spec.json. Add it to your build script for continuous generation:
{ "scripts": { "build:spec": "blocks-generate-spec", "build": "npm run build:spec && tsc && vite build" } }
Writing APIs for native compatibility
TypeScript method signatures produce correct native types automatically. For richer types (format constraints, enums), use Zod schemas:
-
Plain TypeScript types (tier 2): correct base types inferred from method signatures
-
Zod schemas (tier 1): full JSON Schema with constraints (
format: uuid,maxLength,minLength) -
If neither is detected, parameters emit as
unknown(generatesAnyin native clients)
For best results, use explicit return types and Zod validation on complex inputs.
Hosting and deployment
AWS Blocks provides Hosting (import from @aws-blocks/blocks/cdk) for deploying your frontend alongside your backend. Hosting provisions:
-
Amazon CloudFront distribution with global edge caching
-
Amazon S3 origin for static assets
-
Lambda compute for server-side rendering (SSR frameworks only)
-
Optional WAF integration for security rules
-
Custom domains with automatic DNS and TLS
-
Skew protection for zero-downtime deployments
Locally, your frontend runs on http://localhost:3000 with hot reload. Hosting is deployed when you run npm run deploy (full deployment). Sandbox deployments (npm run sandbox) do not include hosting because they focus on backend hot-swapping.
Framework auto-detection
Hosting detects your framework from package.json dependencies:
-
nextin dependencies → Next.js adapter -
nuxt,nitropack,@solidjs/start,@tanstack/start→ Nitro adapter -
astro→ Astro adapter -
None of the above → SPA/static adapter
Override detection by setting framework explicitly in your Hosting configuration.