---
name: "@better-upload"
slug: "better-upload"
description: "A React file-upload library that handles direct-to-S3 (and S3-compatible) uploads with minimal setup. Provides an UploadButton, UploadDropzone, PasteUploadArea components, upload-progress indicators, and React hooks (including TanStack Query integration). Works with Next.js, TanStack Start, and any React framework. MIT-licensed, free. Use for: adding drag-and-drop or button-triggered file uploads to any React app without a dedicated file-storage backend."
category: "Niche/single-purpose"
tags: ["buttons", "components", "hooks", "loaders", "media"]
framework: "react"
license: "MIT"
author: "Nic13Gamer"
website: "https://better-upload.com"
github: "https://github.com/Nic13Gamer/better-upload"
registry: "https://better-upload.com/r/registry.json"
pro: false
pro_url: null
github_stars: 1276
component_count: 4
generated_at: "2026-07-28T08:00:50.948Z"
---

# @better-upload

A React file-upload library that handles direct-to-S3 (and S3-compatible) uploads with minimal setup. Provides an UploadButton, UploadDropzone, PasteUploadArea components, upload-progress indicators, and React hooks (including TanStack Query integration). Works with Next.js, TanStack Start, and any React framework. MIT-licensed, free. Use for: adding drag-and-drop or button-triggered file uploads to any React app without a dedicated file-storage backend.

## Links

- Website: https://better-upload.com
- GitHub: https://github.com/Nic13Gamer/better-upload
- Registry JSON: https://better-upload.com/r/registry.json
- Directory page: https://sh4dcn.vercel.app/registry/better-upload
- This file: https://sh4dcn.vercel.app/md/better-upload.md

## Install

```sh
# add the whole registry (shadcn CLI)
npx shadcn@latest add https://better-upload.com/r/registry.json
pnpm dlx shadcn@latest add https://better-upload.com/r/registry.json
bunx shadcn@latest add https://better-upload.com/r/registry.json
# clone the source repo
git clone https://github.com/Nic13Gamer/better-upload.git
# fetch the raw registry index
curl -s https://better-upload.com/r/registry.json
```

## Components (4)

| name | type | description | install |
| --- | --- | --- | --- |
| upload-button | registry:ui | Upload Button | `npx shadcn@latest add https://better-upload.com/r/upload-button.json` |
| upload-dropzone | registry:ui | Upload Dropzone | `npx shadcn@latest add https://better-upload.com/r/upload-dropzone.json` |
| upload-progress | registry:ui | Upload Progress | `npx shadcn@latest add https://better-upload.com/r/upload-progress.json` |
| paste-upload-area | registry:ui | Paste Upload Area | `npx shadcn@latest add https://better-upload.com/r/paste-upload-area.json` |

## For AI agents

```text
You are adding components from @better-upload to a shadcn-compatible project.
1. Read this file (https://sh4dcn.vercel.app/md/better-upload.md) for the component list.
2. Fetch the machine-readable index: https://better-upload.com/r/registry.json
3. Install a single component with its install command from the table above.
4. Full structured record: https://sh4dcn.vercel.app/json (library slug: better-upload).
```
