Guides
Task-focused guides for running upup in production: picking a mode, mounting the server package on your framework, scoping uploads to your users, connecting a storage provider, processing files before they upload, and making the uploader look and behave the way your app needs. New to upup? Start with Getting Started and the quickstart for your framework.
Modes and server setup
- Client Mode vs Server Mode — what runs where in each mode, and when to pick each.
- Server Mode Setup — mount
createUpupHandler, configure S3 storage, secrets, limits and hooks. - Express — mount
@useupup/serveron an Express route withcreateUpupMiddleware. - Fastify — register
@useupup/serveras a Fastify plugin withcreateUpupPlugin. - Hono — the web-native mount with
createUpupRoutes, including edge runtimes. - Next.js — App Router and Pages Router
handlers from
@useupup/next.
Auth
- Server Auth & Trust Model — the HMAC upload-token secret, the secure-by-default 403 on anonymous uploads, and per-user scoping.
- Auth Recipes — one
getUserIdhook, plus Redis and SQL token stores. - Better Auth — scope every upload to the signed-in Better Auth session.
- NextAuth (Auth.js v5) — the
auth()helper in the App Router andgetTokenoutside a request. - Clerk —
authenticateRequestinsidegetUserId, and whyauthorizedPartiesis mandatory. - Custom JWT — verify your own bearer or cookie
JWT with
jose, including remote JWKS.
Storage
- Storage Providers — how upup connects to
S3-compatible storage, the full
storage.typetable, and why Azure Blob Storage is the exception. - Amazon S3 — bucket setup, the IAM policy,
CORS, and a
createUpupHandlerconfig. - Cloudflare R2 — the account-scoped
endpoint, region
auto, API tokens, and CORS. - Backblaze B2 — application keys, the region-scoped S3 endpoint, and CORS.
- DigitalOcean Spaces — Spaces access keys, the regional endpoint, CORS, and the CDN.
- MinIO — a self-hosted MinIO server with Docker, path-style addressing, and CORS.
- Azure Blob Storage — client mode only: a
SAS URL from your endpoint and the mandatory
x-ms-blob-typeheader. - Any S3-compatible storage — Wasabi, Google Cloud Storage, Supabase, Hetzner, Scaleway, Storj, and more.
Files and sources
- File Processing — the client-side pipeline: compression, HEIC conversion, EXIF stripping, thumbnails, and checksums.
- Image compression — compress and resize images in the browser before they upload.
- HEIC to JPEG — convert iPhone HEIC/HEIF photos with the optional libheif decoder.
- Custom pipeline steps — write your
own
PipelineStep, with Web Worker offload. - Upload Sources — local files, drag and drop, paste, folders, camera, microphone, screen capture, URL import, and cloud drives.
- Reliability — per-file retries and backoff, upload concurrency, and multipart resume.
- Error Monitoring — send
upload-errorevents andUpupErrorcodes to your error tracker.
UI and extensibility
- Theming — light, dark and system modes, design tokens, and slot class overrides.
- Accessibility — keyboard interaction, ARIA live regions, focus management, and reduced motion.
- Headless Usage — build your own UI on the upup
engine with
useUpupUploadorUpupCore. - Plugins & Extensions — enable the built-in cloud-drive plugins and register third-party ones.
- Write a custom plugin — the
UpupPlugincontract, namespaced events, andPopupOAuthPlugin.