One API for all
your media uploads
Simplify media uploads in TypeScript. A unified, type-safe interface for Cloudinary, S3, R2, and more — so you can focus on building features, not wrangling SDKs.
# Install FluxMedia
$ pnpm add @fluxmedia/core @fluxmedia/s3
Features
Everything you need for media uploads
FluxMedia handles the complexity of different providers so you can focus on building your app.
Unified API
One interface for all providers. Use Cloudinary, S3, or R2 with the same clean, type-safe API.
// Same code for ANY provider!
const uploader = new MediaUploader(
new S3Provider({ ... }) // or Cloudinary, R2
);
await uploader.upload(file, {
folder: "uploads",
onProgress: (p) => console.log(p)
});TypeScript First
Built with strict types for incredible DX. Full autocomplete for provider configs.
Tree-Shakeable
Modular architecture. Core is tiny (<5KB). Only bundle the providers you use.
Plugin System
Extend with validation, optimization, metadata extraction, analytics, and retry.
React Hooks
Production-ready hooks for upload state, progress tracking, and error handling.
Multi-Provider
S3, Cloudflare R2, Cloudinary, and extensible for custom providers.
Image Transforms
Resize, format conversion, and quality optimization with Cloudinary.
Auto Retry
Built-in retry plugin with exponential backoff for resilient uploads.
Type-Safe Config
Catch configuration errors at compile time, not runtime.
Providers
One API, Multiple Providers
Write your upload logic once. Use it with any provider. Same interface, same reliability.
Cloudinary
- Image Transforms
- Video Processing
- AI Tagging
- Multipart Upload
- Direct Upload
AWS S3
- Image Transforms
- Video Processing
- AI Tagging
- Multipart Upload
- Direct Upload
Cloudflare R2
- Image Transforms
- Video Processing
- AI Tagging
- Multipart Upload
- Direct Upload
Ready to simplify your media uploads?
Join developers building faster with FluxMedia. Get started in minutes with comprehensive docs and examples.