# upup vs react-dropzone

react-dropzone is a small, focused React hook (`useDropzone`) — with a matching
wrapper component — for building an HTML5-compliant drag-and-drop file-selection
zone. It is a **primitive, not a full uploader**: it hands you the selected or
dropped `File` objects and leaves the upload, UI, progress, previews, cloud
sources, and everything else to you. That's exactly what you want when you only
need drag-and-drop in React and will build the rest yourself. upup is a full
uploader — a headless core, native UI for six frameworks, and an optional server —
so the two really solve different problems. This page is here because teams often
start with the primitive and later need the whole flow.

## At a glance

| Feature                 | react-dropzone                                            | upup                                                                |
| ----------------------- | --------------------------------------------------------- | ------------------------------------------------------------------- |
| Scope                   | Drag-and-drop file-selection primitive (hook + component) | Full uploader: selection, UI, upload pipeline, and server           |
| Native first-party UI   | No — you render your own; React only                      | React, Vue, Svelte, Angular, Vanilla JS, Preact                     |
| Headless core           | Yes (a hook) — but file selection only, no uploading      | Yes (`@useupup/core`) — a full upload engine                        |
| License / pricing       | MIT, free & open source                                   | MIT, free & open source                                             |
| Uploading / self-host   | You implement uploads yourself, to any backend            | `@useupup/server` signs direct uploads to any S3-compatible storage |
| Cloud-drive sources     | No                                                        | Google Drive, OneDrive, Dropbox, Box                                |
| Camera / screen capture | No                                                        | Yes (both)                                                          |
| Image editor            | No                                                        | Yes — React/Preact only                                             |
| Resumable uploads       | No                                                        | Yes — optional (tus or S3 multipart)                                |
| i18n                    | No                                                        | Yes (ICU locale bundles)                                            |

## Choose react-dropzone if

- You only need a drag-and-drop zone in React and will build the upload, UI, and
  progress yourself.
- You want the smallest, most unopinionated primitive, with no upload logic baked
  in.
- You already have an upload backend and UI and just need clean file selection.

## Choose upup if

- You want the drag-and-drop **and** the progress bar, previews, cloud drives,
  camera, resumable uploads, and a server — without assembling them yourself.
- You need more than React: Vue, Svelte, Angular, Vanilla JS, and Preact, all
  sharing one DOM contract.
- You'd rather configure a complete uploader than build one from a primitive.
