Skip to content
Welcome to our documentation!

Jobs Releases

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
Fix Android
AndroidX version pins
Fix Android
Successful jobs that run too long often tend to have Android completion already disposed
Fix
Base Job was not calculating runtime difference properly
BREAKING iOS
We no longer support the background fetch style (old) job management - only bgtasks will be used going forward