v0.8.0 - Federated Plugin Architecture
🎉 Major Release - Federated Plugin Architecture
This release represents a major architectural change to the flutter_workmanager plugin, migrating to a federated plugin structure for better platform extensibility and maintainability.
🚨 Breaking Changes
Architecture Changes
- Migrated to federated plugin architecture - Platform-specific implementations are now in separate packages:
workmanager_platform_interface- Shared platform interfaceworkmanager_android- Android WorkManager implementationworkmanager_apple- iOS BGTaskScheduler implementation (renamed from workmanager_ios)workmanager- Main package with unified API
API Changes
- Enum values changed from snake_case to camelCase for Dart conventions:
NetworkType:not_required→notRequired,not_roaming→notRoamingOutOfQuotaPolicy:run_as_non_expedited_work_request→runAsNonExpeditedWorkRequest,drop_work_request→dropWorkRequest
- Removed JSON serialization for inputData - Now uses native Map transfer for better performance and type safety
- Android: Stricter payload type validation - only primitive types and lists of strings supported
✨ New Features
- Android: Added
isScheduledByUniqueNamemethod to check if a periodic task is scheduled - Foundation for future macOS support using NSBackgroundActivityScheduler
- Added comprehensive integration tests for data transfer and retry functionality
🐛 Bug Fixes
- iOS: Fixed
initialDelaySecondsparameter handling - was previously ignored - iOS: Fixed swapped constraints bug for requiresNetworkConnectivity and requiresExternalPower (#562)
- iOS: Fixed compilation errors with Map handling
- Android: Fixed NullPointerException when
isInDebugModewas not properly initialized - Android: Fixed v2 embedding import in BackgroundWorker (#595)
- Android: Fixed array/list handling in payload processing
- Fixed input data type handling across platforms - now properly supports all primitive types and lists
📈 Improvements
- Updated to Flutter 3.32 and flutter_lints 6.0.0
- Android: Updated target SDK to 35
- iOS: Added Privacy Manifest for App Store compliance (#555)
- iOS: Replaced print statements with proper os_log for better logging
- iOS:
printScheduledTasksnow returns String instead of void (#585) - Improved CI/CD with Android emulator caching for faster builds
- Better error handling and type safety throughout the codebase
🙏 Contributors
Special thanks to @thegriffen, @jogapps, @navaronbracke, @yarith28, and all contributors who helped make this release possible!