# Nic13Gamer/better-upload

Simple and easy file uploads for React. Upload directly to any S3-compatible service with minimal setup.

Repository: https://github.com/Nic13Gamer/better-upload
Canonical: https://ross.abutalabs.com/products/better-upload
Homepage: https://better-upload.com
Language: TypeScript
License: MIT
License Family: permissive
Last push: 2026-08-23T21:55:09+00:00

## Health v2 (maintenance only)
Score: 79/100 (v2, computed 2026-09-03T02:39:23.370411+00:00)
- activity 99, release rhythm 70, longevity 51
- inputs: {"age_days": 724, "days_push": 10, "days_rel": 121, "gap_med": 1.0, "n_releases_24m": 67}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1285, forks 43 (observed 2026-08-28T04:04:14.776282+00:00)

## What it is
Better Upload is a TypeScript library for adding file uploads to React applications, with client hooks, pre-built shadcn/ui dropzone components, and server helpers that generate pre-signed URLs. It uploads files directly from the browser to any S3-compatible service such as AWS S3, Cloudflare R2, Backblaze, or Tigris, working with frameworks like Next.js, Remix, and TanStack Start as well as backend servers like Hono, Express, and Fastify.

## Use cases
- add file uploads to my react app with minimal setup
- upload files directly to s3 from the browser
- drag and drop file upload dropzone for nextjs
- generate presigned urls for s3 uploads on my server
- upload images to cloudflare r2 from a react client
- file upload component with progress bar and file limits

## When to choose
- you are building a React app (Next.js, Remix, TanStack Start, etc.) and need quick, well-designed file uploads
- you want files to go directly from the client to your own S3-compatible bucket so you keep full data ownership
- you use shadcn/ui and want copy-and-paste upload components like dropzones, buttons, and progress indicators
- you use a non-React backend like Hono, Elysia, Express, or Fastify and only need the client library for the browser side

## When to avoid
- your project is not React-based, since the client hooks and components are React-only
- you need uploads to storage that is not S3-compatible
- you require server-side processing of files before they are stored (e.g., transcoding, scanning), since uploads bypass your server and go straight to the bucket
- you need an all-in-one managed upload service with built-in hosting or CDN transformations rather than a lightweight library

## Facets
- artifact type: library
- maturity: active
- function: file-upload, ui-components, form-handling
- domain: web-development, frontend, backend, files, cloud-computing
- platform: browser, cross-platform
- tags: react, s3, presigned-urls, shadcn-ui, nextjs, react-hooks, cloudflare-r2, multipart-upload, dropzone, typescript, nodejs

## Member repositories
- Nic13Gamer/better-upload (main) score 79

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:04:14.776282+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T04:56:38.120953+00:00, confidence not recorded.
  - readme: https://github.com/Nic13Gamer/better-upload (fetched 2026-08-28T04:04:14.776282+00:00, sha 6e885b6156f1)
  - homepage: https://better-upload.com (fetched 2026-08-29T12:12:29.493823+00:00, sha 7c2a25c17806)
  - site_page: https://better-upload.com/docs (fetched 2026-08-29T12:12:29.496382+00:00, sha 51d4e1d06486)
  - site_page: https://better-upload.com/docs/quickstart (fetched 2026-08-29T12:12:29.498342+00:00, sha 0a90be81124c)
  - registry_npm: https://registry.npmjs.org/better-upload (fetched 2026-08-29T12:12:29.500501+00:00, sha 51a3e6b57eea)
- Data as of 2026-08-30T08:39:29.467469+00:00.
