Pushduck
Pushduck// S3 uploads for any framework

Roadmap

Discover pushduck's development roadmap for 2025-2026. See upcoming features including enterprise tools, mobile SDKs, AI integration, and advanced upload controls like resumable uploads.

Development Roadmap

Our mission is to make file uploads simple, secure, and scalable for every developer and every use case.

✅ Completed

Core Foundation

Universal Compatibility - Works with 16+ frameworks and edge runtimes
Type-Safe APIs - Full TypeScript inference from server to client
Multi-Provider Support - AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO
Production Security - Presigned URLs, file validation, CORS handling
Developer Experience - Property-based client, comprehensive error handling
Overall Progress Tracking - Now provides real-time aggregate progress metrics

  • progress - 0-100% completion across all files
  • uploadSpeed - Combined transfer rate in bytes/second
  • eta - Overall time remaining in seconds

Setup & Tooling

Interactive CLI - Guided setup with smart defaults and auto-detection
Code Generation - Type-safe API routes and client components
Framework Detection - Automatic Next.js App Router/Pages Router detection
Environment Setup - Automated credential configuration

Documentation & Examples

Comprehensive Docs - Complete API reference and integration guides
Live Examples - Working demos for all supported frameworks
Migration Guides - Step-by-step migration from other solutions
Best Practices - Security, performance, and architecture guidance

⚠️ Current Limitations

Progress Tracking Constraints

Overall Progress Tracking - Now provides real-time aggregate progress metrics

  • progress - 0-100% completion across all files
  • uploadSpeed - Combined transfer rate in bytes/second
  • eta - Overall time remaining in seconds

Upload Control Limitations

Current upload management has constraints for handling real-world scenarios.

The following features are NOT yet implemented but are planned for Q3 2025:

No Resumable Uploads - Cannot resume interrupted uploads from where they left off
No Pausable Uploads - Cannot pause ongoing uploads and resume later
No Cancel Support - Cannot cancel individual uploads in progress
Limited Network Resilience - No automatic retry on network failures or connection switching

These features are actively being designed and will be released based on community feedback and use case requirements.

🚧 In Progress

Developer Experience

🚧 Enhanced Error Messages - Contextual help and troubleshooting suggestions
🚧 Testing Utilities - Mock S3 providers and testing helpers for CI/CD
🚧 Performance Profiling - Debugging hooks for upload performance analysis

📋 Planned

Q3 2025 - Core Upload Features

  • Enhanced Hook APIs - onProgress callbacks and advanced upload state management (with onStart lifecycle)
  • Advanced Upload Control - Resumable, pausable uploads with cancel support and network resilience
  • Upload Queue Management - Concurrent upload limits, prioritization, and bandwidth throttling
  • Chunk Upload Optimization - Configurable chunk sizes and parallel chunk uploads for large files
  • Better Error Recovery - Automatic retry with exponential backoff and network change detection

Q4 2025 - Framework Support

  • Mobile SDKs - React Native and Expo support for mobile apps
  • Additional Framework Adapters - Astro, Qwik, Solid.js, and Fresh
  • Testing Framework - Built-in test utilities and mock providers
  • Migration Tools - Automated migration from uploadthing, uppy, and other libraries

Q1 2026 - Developer Experience

  • Enhanced TypeScript - Better type inference and IDE support
  • Plugin System - Hooks-based extension system for custom upload logic
  • Debug Mode - Detailed logging and upload lifecycle visualization
  • Performance Monitoring Hooks - Metrics collection for custom analytics integration

Q2 2026 - Integration Ecosystem

  • Integration Guides - Documented patterns for Sharp, FFmpeg, Cloudflare Images, etc.
  • Example Applications - Production-ready examples for common use cases
  • Community Adapters - Framework adapters maintained by the community
  • Best Practices Library - Shared configurations and patterns

🎯 Long-term Vision

Stay Focused, Stay Lightweight

Pushduck will remain a focused upload library, not a platform. Our mission:

"The fastest, most lightweight way to add S3 file uploads to any web application"

What we'll always prioritize:

  • 🪶 Minimal bundle size - Keep dependencies light
  • 🎯 Core upload features - Do one thing exceptionally well
  • 🔧 Extensibility - Provide hooks, not built-in features for everything
  • 📚 Integration guides - Document how to integrate with other tools
  • 🌍 Universal compatibility - Work everywhere JavaScript runs

What we won't build:

  • ❌ File processing (use Sharp, FFmpeg, etc.)
  • ❌ Content moderation (use Cloudflare, AWS services)
  • ❌ Analytics dashboards (provide hooks for your analytics)
  • ❌ Team management (that's your app's concern)
  • ❌ Platform features (we're a library, not a SaaS)

📖 Read our full philosophy - For detailed scope boundaries, integration patterns, and decision framework, see Philosophy & Scope

💡 Ideas & Suggestions

Have ideas for pushduck? We'd love to hear them!

🤝 Contributing

Want to help build the future of file uploads? Check out our Contributing Guide to get started.

Current Priorities

We're actively looking for contributors in these areas:

  • Core Upload Features - Resumable uploads, better error recovery
  • Framework Adapters - Help us support more frameworks and platforms
  • Documentation - Improve guides, examples, and API documentation
  • Testing - Expand test coverage and add integration tests
  • Performance - Optimize bundle size and runtime performance
  • Integration Guides - Document patterns for common tools (Sharp, FFmpeg, etc.)

Last updated: June 2025

This roadmap is community-driven. Your feedback shapes our priorities. Join our Discord or open an issue on GitHub to influence what we build next.

Current Status

We've already solved the core problems that have frustrated developers for years:

Interactive CLI - Guided setup with smart defaults and auto-detection
Type Safety - Full TypeScript inference for upload schemas
Multiple Providers - Cloudflare R2, AWS S3, Google Cloud, and more
Production Ready - Used by teams processing millions of uploads
Developer Experience - Property-based client access with enhanced IntelliSense

What's Next

🚀 Q3 2025: Core Upload Features

Advanced Upload Control

Resumable, pausable, and cancellable uploads

Planned for Q3 2025 - Complete control over upload lifecycle with automatic recovery from network issues:

// PLANNED API - Not yet implemented
const { files, uploadFiles, pauseUpload, resumeUpload, cancelUpload } = upload.images

// Pause individual uploads
await pauseUpload(fileId)

// Resume from where it left off
await resumeUpload(fileId)

// Cancel with cleanup
await cancelUpload(fileId)

// Automatic network resilience
const config = {
  retryAttempts: 3,
  networkSwitchTolerance: true,
  resumeOnReconnect: true
}

Upload Queue Management

Control concurrent uploads and bandwidth

Manage upload queues with prioritization and bandwidth throttling:

// PLANNED API
const { uploadFiles } = upload.images({
  queue: {
    maxConcurrent: 3,
    maxBandwidth: '5MB/s',
    priority: 'high'
  }
})

Chunk Upload Optimization

Configurable chunking for large files

Optimize large file uploads with configurable chunk sizes and parallel processing:

// PLANNED API
const { uploadFiles } = upload.videos({
  chunking: {
    chunkSize: '10MB',
    parallelChunks: 3,
    retryChunks: true
  }
})

Better Error Recovery

Automatic retry with exponential backoff

Robust error handling with automatic retry and network change detection:

// PLANNED API
const { uploadFiles } = upload.files({
  retry: {
    attempts: 3,
    exponentialBackoff: true,
    detectNetworkChange: true
  }
})

🌍 Q4 2025: Framework Support

Framework Agnostic

Support for Vue, Svelte, and vanilla JavaScript

Complete framework support with the same developer experience:

// Vue 3 Composition API
import { createUploadClient } from '@pushduck/vue'

const upload = createUploadClient<AppRouter>({
  endpoint: '/api/upload'
})

const { files, uploadFiles, isUploading } = upload.imageUpload
// Svelte stores
import { uploadStore } from '@pushduck/svelte'

const upload = uploadStore<AppRouter>('/api/upload')

// Reactive stores for upload state
$: ({ files, isUploading } = $upload.imageUpload)
// Pure JavaScript
import { UploadClient } from '@pushduck/core'

const client = new UploadClient('/api/upload')

client.upload('imageUpload', files)
  .on('progress', (progress) => console.log(progress))
  .on('complete', (urls) => console.log(urls))

Mobile Support

React Native and Expo compatibility

Upload support for React Native and Expo apps with the same type-safe API. Platform-specific optimizations for iOS and Android.

Testing Utilities

Mock providers and testing helpers

Built-in mock S3 providers, upload simulation utilities, and testing helpers for comprehensive test coverage in your CI/CD pipeline.

Community Feedback

What We're Hearing From You

Based on community feedback, GitHub issues, and Discord discussions, here are the most requested in-scope features:

🔥 High Priority:

  • Upload Resume & Retry - Automatic retry and resume for failed uploads (Q3 2025)
  • Better Error Messages - More helpful error descriptions with suggested fixes
  • Queue Management - Control concurrent uploads and bandwidth throttling
  • Progress Customization - More granular progress tracking hooks
  • Example Library - More real-world examples and integration patterns

💭 Under Discussion:

  • GraphQL Integration - Native GraphQL subscription support for upload progress
  • Webhook Support - Custom webhook configuration for upload lifecycle events
  • Component Library - Headless UI components for common upload patterns
  • Performance Profiling - Built-in profiling tools for debugging upload issues

Out of Scope: We won't build features like file processing (use Sharp/FFmpeg), content moderation (use specialized services), or platform features (team management, dashboards). We're staying focused as a lightweight upload library.

How We Prioritize

Our roadmap is driven by three key factors:

  1. Community Impact - Features that solve real problems for the most developers
  2. Technical Excellence - Maintaining our high standards for type safety and DX
  3. Ecosystem Health - Building a sustainable, long-term solution

Voting on Features

Have an idea or want to prioritize something? Here's how to influence our roadmap:

GitHub Issues

Submit detailed feature requests

Use our feature request template with use cases and expected API design. Include code examples and real-world scenarios.

Discord Polls

Vote on monthly feature priorities

Join our Discord server where we run monthly polls on upcoming features. Your vote directly influences our development priorities.

Community Calls

Monthly roadmap discussion

First Friday of every month at 10 AM PT - open to all developers. Share your use cases and help shape the future.

Development Principles

As we build new features, we never compromise on:

  • 🪶 Lightweight First - Bundle size is a feature, not an afterthought
  • 🎯 Focused Scope - Do one thing (uploads) exceptionally well
  • 📘 Type Safety - Every feature must have full TypeScript support
  • 🔄 Zero Breaking Changes - Backward compatibility is non-negotiable
  • ⚡ Performance - New features can't slow down existing workflows
  • 🔌 Extensibility - Provide hooks, not built-in everything

Follow our GitHub project board for real-time updates on development progress.

Get Involved

This roadmap exists because of developers like you. Here's how to shape the future:

For Users

  • Share your use case - Tell us what you're building
  • Report pain points - What's still too complicated?
  • Request integrations - Which providers or tools do you need?

For Contributors

  • Code contributions - Check our contributing guide
  • Documentation - Help improve examples and guides
  • Community support - Answer questions in Discord and GitHub

For Organizations

  • Sponsorship - Support full-time development
  • Enterprise feedback - Share your scale challenges
  • Partnership - Integrate pushduck with your platform

Ready to build the future of file uploads? Join our Discord community and help us make file uploads delightful for every Next.js developer.