FluxMedia

open source · typescript · MIT

Write uploads once.Run them anywhere.

One type-safe API for Cloudinary, S3, R2, and the providers you add next. Less SDK noise, more feature work.

$ pnpm add @fluxmedia/core @fluxmedia/s3
before
Loading…
fluxmedia
Loading…

Built for teams shipping uploads in anger

FluxMedia keeps provider differences behind one surface so your app code stays boring in the best way.

Core API

01

Unified interface

Cloudinary, S3, and R2 share one upload contract. Swap providers without rewriting call sites.

// 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)
});
02

TypeScript first

Strict types on configs, uploads, and plugin hooks. Autocomplete where SDKs usually guess.

03

Tree-shakeable packages

Import only the core and providers you ship. No monolithic client bundle.

Production tooling

04

Plugin pipeline

Validation, optimization, metadata, analytics, and retry attach in a predictable order.

05

React hooks

Upload state, progress, and errors surfaced for UI without reimplementing event wiring.

06

Auto retry

Exponential backoff for transient failures, configured once at the uploader level.

Provider surface

07

Transforms when available

Resize, format, and quality paths on Cloudinary. S3 and R2 stay lean by design.

08

Compile-time config

Catch bucket names, regions, and option shapes before deploy, not in production logs.

Same upload call. Different backends.

Provider-specific features stay optional. The core contract does not.

R2 ships with zero egress fees. Cloudinary carries transforms. S3 stays minimal.

CapabilityCloudinaryAWS S3Cloudflare R2
Image transformsSupportedNot supportedNot supported
Video processingSupportedNot supportedNot supported
AI taggingSupportedNot supportedNot supported
Multipart uploadSupportedSupportedSupported
Direct uploadSupportedSupportedSupported

FluxMedia normalizes uploads across providers. Reach for native SDK features only when you need provider-specific behavior.

Ship your first upload in minutes

Docs, examples, and a playground. Everything you need to wire FluxMedia into your stack tonight.