Introduction
Introduction to vs3
vs3 is currently in beta. The API will likely change before the first stable release. We strongly discourage you from using it in production but we'd love to hear your feedback and suggestions.
vs3 is a TypeScript-first library for secure S3 storage access. It generates presigned upload URLs, enforces validation and integrates cleanly with modern runtimes. We use the official AWS S3 SDK (@aws-sdk/client-s3) under the hood to interact with your storage provider.
It is designed to be used in serverless environments like Vercel, AWS Lambda, or Cloudflare Workers.
Features
- Presigned uploads & downloads — generate presigned URLs for direct client-to-S3 transfers
- File validation — content type, extension, size, and filename validation with magic byte detection
- Type-safe metadata — define metadata schemas with Zod and get full type inference
- Middleware system — CORS, rate limiting, logging, request signing, and timeout middleware
- Request signing — HMAC-based request signing and verification for secure uploads
- S3 encryption — SSE-S3, SSE-KMS, and SSE-C encryption support
Getting started
We recommend reading the installation guide to get started with vs3.
Contributing
Thank you for your interest in vs3! We highly welcome contributions from the community – please read the contributing guide to get started.
Credits
@better-authinspired the API design and package structure. We also usebetter-fetchandbetter-callfor server-client communication.fumadocsfor providing an excellent documentation framework.