react-upload-kit
Headless, adapter-based file uploads for React. Drag & drop, validation, concurrency, and retry — you own 100% of the UI.
Features
| Headless | Hooks-first API, zero styling opinions. You build the UI. |
| Adapter pattern | XHR, fetch, S3 presigned, tus.io — anything that returns a Promise. |
| Drag, drop, paste | Native DnD with live accept/reject, plus clipboard images. |
| Queue | Concurrency, exponential backoff, AbortController cancel. |
| Zero deps | Only react as a peer. Dual CJS/ESM, tree-shakeable. |
tsx
import { useUploader, useDropzone } from 'react-upload-kit';
const uploader = useUploader({ adapter, autoUpload: true });
const dropzone = useDropzone({ onDrop: uploader.addFiles });