Skip to content

v0.8.0 - Federated Plugin Architecture

Latest
Compare
Choose a tag to compare
@ened ened released this 01 Jul 16:40
b45313b

🎉 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 interface
    • workmanager_android - Android WorkManager implementation
    • workmanager_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_requirednotRequired, not_roamingnotRoaming
    • OutOfQuotaPolicy: run_as_non_expedited_work_requestrunAsNonExpeditedWorkRequest, drop_work_requestdropWorkRequest
  • 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 isScheduledByUniqueName method 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 initialDelaySeconds parameter 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 isInDebugMode was 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: printScheduledTasks now 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!

📦 Published Packages