Pushduck

Own your file uploads. The most comprehensive upload solution for Next.js.

Own Your File Uploads

File uploads in Next.js have been overcomplicated for too long. Developers shouldn't need to cobble together multiple libraries, write custom middleware, and manage complex state just to handle file uploads. We believe the TypeScript ecosystem deserves better—hence, Pushduck.

The most comprehensive file upload solution for Next.js. Guided setup, full TypeScript support, and everything you need out of the box.

// It's really this simple
const upload = createUploadClient();

export function MyComponent() {
  const { uploadFiles, uploadedFiles, isUploading } = upload.imageUpload();

  return (
    <input
      type="file"
      onChange={(e) => uploadFiles(e.target.files)}
      disabled={isUploading}
    />
  );
}

🎬 Interactive Demo

Try uploading files to see the enhanced type-safe client in action

ℹ️

Live Demo: Files are uploaded to Cloudflare R2. Don't upload sensitive information.

✅ Type-Safe⚡ Property-Based📊 Overall Progress☁️ Cloudflare R2
📤

Drop files above or click to browse

💻 Code powering this demo:

// Enhanced type-safe client
const imageUpload = upload.imageUpload();

// Upload with full type safety
await imageUpload.uploadFiles(files);

// Access state with TypeScript inference
const { 
  files,        // Individual file progress
  isUploading,  // Upload status
  errors,       // Any errors
  progress,     // Overall progress (0-100)
  uploadSpeed,  // Overall bytes/sec
  eta          // Overall time remaining
} = imageUpload;

Why Pushduck?

File uploads should be simple, secure, and scalable. Other solutions make you choose between ease of use and control, or require vendor lock-in and ongoing costs.

Pushduck gives you:

  • Full ownership of your upload infrastructure
  • Zero vendor lock-in with provider-agnostic design
  • Production-grade features without the complexity
  • Type-safe development with full TypeScript inference
  • Community-driven with real-world usage patterns

Get Started

Loved by Developers

"Finally, an upload solution that just works. The TypeScript inference is incredible - I get autocomplete for everything and catch errors before they hit production."

React Developer, SaaS Startup

"We migrated from Uploadthing to pushduck and cut our upload costs by 80%. The provider-agnostic design means we can switch S3-compatible providers anytime."

CTO, E-commerce Platform

"The property-based client approach is genius. No more passing route names as strings - everything is type-safe and the DX is outstanding."

Full-Stack Developer, Agency


Framework Agnostic

While optimized for Next.js, it works seamlessly across the JavaScript ecosystem:

Next.js

App Router & Pages Router

Remix

Full-stack support

SvelteKit

Coming soon

Nuxt

Coming soon

What's Included

Everything you need for production file uploads:

  • Validation & Security - File type, size, and custom validation
  • Overall Progress Tracking - Real-time aggregate progress, speed, and ETA across all files
  • Error Handling - Comprehensive error states and recovery
  • Middleware System - Custom logic for authentication, metadata, and processing
  • Type Inference - Full TypeScript safety from server to client
  • Provider Support - Cloudflare R2, AWS S3, DigitalOcean, MinIO, and more
  • Image Processing - Built-in Sharp integration for optimization
  • Drag & Drop - Ready-to-use components and hooks
  • Multi-file Support - Concurrent uploads with progress aggregation