Skip to content
Shiny.NET
Shiny MAUI Shell v7 - App Links, App Shortcuts, & Navigation Interception!Shortcut me to it

Core Release Notes

Release notes for Shiny.Core, Shiny.Core.Linux, Shiny.Core.Blazor, Shiny.Hosting.Maui and Shiny.Hosting.Native — the host, platform abstractions, lifecycle hooks, and connectivity/battery monitoring.

FixiOS
ShinyAppDelegate no longer crashes the app on launch. FinishedLaunching ended with return base.FinishedLaunching(...), but didFinishLaunchingWithOptions is an optional protocol member, so the binding’s base implementation throws Foundation.You_Should_Not_Call_base_In_This_Method - the host was built and run, then the exception took the process down before the first frame. It returns true directly now. Affects every app hosting through Shiny.Hosting.Native on iOS, tvOS and Mac Catalyst; MAUI hosting (UseShiny()) was never on this path.
FeaturetvOS
tvOS support. Shiny.Core and Shiny.Hosting.Native now ship net10.0-tvos targets. tvOS reuses the iOS platform layer wholesale - IosPlatform, IosLifecycleExecutor, ShinyAppDelegate and the IIosLifecycle hooks are all the same types - so a tvOS head boots Shiny exactly the way an iOS one does. Two deliberate differences: IBattery reports a permanently full battery, because an Apple TV is mains powered and UIDevice carries no battery API on tvOS; and IIosLifecycle.INotificationHandler does not exist on tvOS, because notifications there can only change the app icon badge and there is no UNNotificationResponse to hand back. Modules with tvOS targets: Shiny.BluetoothLE, Shiny.Net.Discovery, Shiny.Jobs, Shiny.Net.Http, Shiny.Push, Shiny.ScreenRecorder and Shiny.Data.Sync.
FixAndroid
AndroidLifecycleExecutor is now built from an explicit factory delegate instead of via container constructor selection. It derives from Java.Lang.Object and therefore must expose the (IntPtr, JniHandleOwnership) JNI constructor; containers that select a constructor by “most resolvable arguments” (DryIoc’s ConstructorWithResolvableArguments, used by Prism) had to weigh that overload and reported a misleading Error.UnableToFindCtorWithAllResolvableArgs on the executor whenever a real dependency further down the graph failed to resolve. The dependency that actually failed in practice was the keyed IKeyValueStore injected by AndroidPlatform — see the Stores 5.1.4 release notes for that half of the fix.