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 filesuploadSpeed- Combined transfer rate in bytes/secondeta- 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 filesuploadSpeed- Combined transfer rate in bytes/secondeta- 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
onStartlifecycle) - 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
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:
- Community Impact - Features that solve real problems for the most developers
- Technical Excellence - Maintaining our high standards for type safety and DX
- 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.