Welcome to our documentation!
Jobs Releases
4.1.0 - TBD
Section titled “4.1.0 - TBD” Feature
Plain .NET (base TFM) support added —
Shiny.Jobs now ships an in-process managed JobManager for Linux, macOS, Blazor WebAssembly, console, and any other non-iOS/Android .NET host. Driven by a recurring timer (default 30s, configurable via JobManager.Interval, min 15s / max 5m). Honours the same BatteryNotLow, DeviceCharging, and RequiredInternetAccess constraints as the native platforms and auto-registers a default JSON filesystem repository under {LocalApplicationData}/Shiny. Jobs only execute while the host process is alive — there is no OS-level scheduler on these targets. Feature
Blazor WebAssembly (Web) support added via the base
Shiny.Jobs package (no separate meta-package). Reference Shiny.Jobs directly and bring in Shiny.Support.DeviceMonitoring.Blazor for IBattery/IConnectivity; optionally add Shiny.Support.Storage.Blazor to persist job state to browser localStorage instead of the default filesystem repository. The in-process scheduler runs while the tab is open. Note: Service Worker / Periodic Background Sync cannot invoke C# jobs because the SW has no access to the Blazor WASM runtime — for background HTTP specifically, use the new Shiny.Net.Http.Blazor package instead. Fix
Plain .NET
AddJobs() now self-registers IObjectStoreBinder and IKeyValueStoreFactory. Previously, resolving JobManager on Linux/Blazor/console hosts threw a DI validation error (CannotResolveService, Shiny.Stores.IObjectStoreBinder) because the binder was only registered by the MAUI platform infrastructure layer. BREAKING Enhancement
Removed the empty
Shiny.Jobs.Blazor meta-package. It contained no code — just project references. Consumers should reference Shiny.Jobs + Shiny.Support.DeviceMonitoring.Blazor (and optionally Shiny.Support.Storage.Blazor) directly. BREAKING Enhancement
Restructured job scheduling API - Register/Cancel replaced with explicit RegisterPlatformJob, UnRegisterPlatformJob, UnRegisterAllPlatformJobs, and GetPlatformJobs
Enhancement
JobLifecycleTask now manages registered jobs via DI and re-registers on startup
Enhancement Android
Improved ShinyJobWorker implementation
4.0.1 - March 26, 2026
Section titled “4.0.1 - March 26, 2026” Fix Android
AndroidX version pins
4.0.0 - March 26, 2026
Section titled “4.0.0 - March 26, 2026” Fix Android
Successful jobs that run too long often tend to have Android completion already disposed
3.1.2 - November 7, 2023
Section titled “3.1.2 - November 7, 2023” Fix
Base Job was not calculating runtime difference properly
3.0.0 - September 5, 2023
Section titled “3.0.0 - September 5, 2023” BREAKING iOS
We no longer support the background fetch style (old) job management - only bgtasks will be used going forward