Deploy Vite on AWS

Next generation frontend tooling. Fast dev server and optimized builds.

vite.dev

Deploy your Vite single-page applications to AWS using Thunder. Vite apps are fully client-rendered at runtime, making static hosting on S3 and CloudFront the natural fit.

Available Patterns

Prerequisites

Getting Started

Create Project

Scaffold a new Vite project using your preferred package manager. This sets up the project structure, installs dependencies, and prepares you for development.

Terminal window
bun create vite my-vite-app --template vanilla-ts
cd my-vite-app
bun install

Install Thunder

Add Thunder as a development dependency. It provides the CDK constructs you’ll use to define your AWS infrastructure.

Terminal window
bun add @thunder-so/thunder --development

Vite Static Site Deployment

Deploy your Vite SPA to S3 with CloudFront as the CDN. Vite outputs all compiled assets to dist/ by default — Thunder uploads these directly to S3 and provisions the CloudFront distribution in front of them.

Stack

The Static construct provisions an S3 bucket, a CloudFront distribution, and optionally a Route53 DNS record.

stack/prod.ts
import { Cdk, Static, type StaticProps } from '@thunder-so/thunder';
const config: StaticProps = {
env: { account: 'YOUR_ACCOUNT_ID', region: 'us-east-1' },
application: 'myapp',
service: 'web',
environment: 'prod',
rootDir: '.', // e.g. 'frontend' for monorepos
outputDir: 'dist',
};
new Static(new Cdk.App(), `${config.application}-${config.service}-${config.environment}-stack`, config);

Deploy

Build your Vite app first to compile and bundle all assets into dist/, then deploy with CDK. CDK uploads the files to S3 and provisions the CloudFront distribution.

Terminal window
bun run build
npx cdk deploy --app "bunx tsx stack/prod.ts" --profile default

After deployment, CDK outputs a CloudFront URL where your app is live.