New: your coding agent can read the release notes before it upgrades. Set up the MCP server →
pub.dev
Amazon S3 is an object storage service that stores data as objects within buckets. aws_s3_upload_lite is a simple, convenient package for uploading files to AWS S3 buckets.
Last release 9 months ago
17 Dec 2025
Ships unpredictably
gaps range from 8 days to 10 months
Some releases are documented
notes for 10 of 17 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
17 releases · first in 2024
🚨 Breaking Changes Error handling approach - Now uses exceptions instead of string returns
🚀 Major Improvements
Input validation - Validates required parameters before upload attempts
File validation - Checks if files exist and have content
HTTP status code handling - Properly handles success (200-299) and error status codes
Structured error propagation - Uses proper exception handling with rethrow
Better success feedback - Returns usable file URLs like https://bucket.s3.region.amazonaws.com/path/file.jpg
Reduced code duplication - uploadUint8List now delegates to upload internally
Better method organization - Clear separation between File and Uint8List uploads
Session token support - Added support for AWS temporary credentials
Metadata handling - Proper AWS-compliant metadata parameter conversion
Custom headers - Support for additional HTTP headers
Flexible key management - Custom S3 key override option
📋 Detailed Changes Before → After Aspect Before After Error Handling Returned error strings Throws AwsS3UploadException Return Value HTTP status code string Full S3 file URL Progress Tracking Not available onUploadProgress callback Method Organization Duplicate code in uploadUint8List Unified upload method Input Validation Minimal validation Comprehensive parameter checking Session Tokens Not supported Full session token support New Methods Added _validateUploadParameters() - Validates required parameters
_handleResponse() - Processes HTTP responses
_buildFileUrl() - Constructs S3 file URLs
_convertMetadataToParams() - Formats metadata for AWS
Method Behavior Changes uploadFile: Now returns S3 URL, throws exceptions, supports progress tracking
uploadUint8List: Now deprecated, delegates to upload, returns S3 URL
upload: Main method for Uint8List data, returns S3 URL, enhanced error handling
🛠 Technical Improvements Error Handling dart // Before: Returned string String result = await AwsS3.uploadFile(...); if (result != "200") { print("Error: $result"); // Unclear error messages }
// After: Structured exceptions try { String url = await AwsS3.uploadFile(...); print("Success: $url"); } on AwsS3UploadException catch (e) { print("Error: ${e.message}"); // Clear, structured errors } Return Value Enhancement dart // Before: Just status code String status = await AwsS3.uploadFile(...); // "200"
// After: Useful file URL String fileUrl = await AwsS3.uploadFile(...); // "https://bucket.s3.region.amazonaws.com/uploads/file.jpg" 🎯 Benefits for Developers
Structured exception hierarchy
HTTP status code information
Underlying error details
Progress tracking for large files
Flexible credential management
Comprehensive metadata support
File existence checks
Proper AWS signature handling
Secure SSL enforcement
Consistent API patterns
Extensible exception system
Modern Flutter compatibility
📝 Migration Guide For Existing Users Update error handling - Switch from string checks to try-catch blocks
Use returned URLs - File URLs are now available immediately
Replace uploadUint8List - Use upload method instead
Leverage new features - Progress tracking, session tokens, etc.
Code Migration Example dart // OLD WAY String status = await AwsS3.uploadUint8List(...); if (status == "200") { print("Success"); } else { print("Error: $status"); }
// NEW WAY try { String fileUrl = await AwsS3.upload(...); print("File available at: $fileUrl"); } on AwsS3UploadException catch (e) { print("Upload failed: ${e.message}"); } 🔧 Backward Compatibility ✅ All existing method signatures preserved
✅ Return type remains Future<String> (but now returns URLs)
✅ Parameter names unchanged
✅ Deprecated methods still functional (with warnings)
🚨 Breaking Changes Error handling approach - Now uses exceptions instead of string returns
uploadUint8List deprecated - Will be removed in future versions
Return value meaning - Now returns URLs instead of status codes
One column per month.
Updated dependencies.
Updated dependencies.
Add headers support and onProgress callback for other methods - dhikshithrm
Add headers support and onProgress callback for other methods - dhikshithrm
Add support for sessionToken - chenqiongyao
Upload with progress Documentation. Updated dependencies
Upload with progress Documentation. Updated dependencies
Change new upload method with upload progress
Change new upload method with upload progress
Added new upload method with upload progress
Added new upload method with upload progress
Increased upload time to cater for slow upload speeds
Increased upload time to cater for slow upload speeds
Updated dependencies. Improved error handling
Updated dependencies. Improved error handling
Updated dependencies.
Updated dependencies.
Updated dependencies.
Updated dependencies.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →