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

App Store

Frameworks
.NET MAUI

IAppStore looks up the latest published version from the relevant platform store and deep-links into the store or review page.

using Shiny;
builder.AddAppStore(opts =>
{
opts.AppleAppId = "1234567890";
opts.WindowsProductId = "9NBLGGH4NNS1";
});
public class UpdateChecker(IAppStore store)
{
public async Task CheckForUpdates(CancellationToken ct = default)
{
var result = await store.GetCurrent(ct);
if (result?.NeedsUpdate == true)
{
// result.StoreVersion, result.CurrentVersion, result.ReleaseNotes, etc.
await store.OpenStore();
}
}
public Task PromptForReview() => store.OpenReviewPage();
}

Configure via AddAppStore(...) or services.Configure<AppStoreOptions>(...).

builder.AddAppStore(opts =>
{
opts.AppleAppId = "1234567890"; // numeric App Store ID (required for iOS deep links)
opts.WindowsProductId = "9NBLGGH4NNS1"; // Microsoft Store Product ID (required on Windows)
opts.CountryCode = "us";
});
Option Notes
AppleAppId Numeric App Store ID. If not set, populated automatically after the first successful GetCurrent call (read from the iTunes lookup’s trackId)
AppleBundleId Defaults to AppInfo.PackageName (CFBundleIdentifier on Apple platforms)
AndroidPackageName Defaults to AppInfo.PackageName (applicationId on Android)
WindowsProductId Required on Windows — distinct from the package family name; configure explicitly
LinuxAppId AppStream component / Flatpak application ID. Auto-detected from FLATPAK_ID / SNAP_NAME when the app runs from a sandbox; set it explicitly otherwise
CountryCode Two-letter region code for store lookups (default "us")
public record AppStoreResult(
Version StoreVersion,
Version CurrentVersion,
bool NeedsUpdate,
string StoreUrl,
string? ReleaseNotes = null,
DateTimeOffset? ReleasedAt = null,
double? AverageRating = null,
long? RatingCount = null,
string? MinimumOsVersion = null
);
Platform Lookup Fields populated
iOS / macCatalyst iTunes Search API All fields including ratings, release date, release notes, minimum OS
macOS (AppKit) iTunes Search API scoped to entity=macSoftware Same as iOS. Deep links use the macappstore:// scheme
Linux (GTK4) flatpak remote-info against the installed origin, or snap info for the tracked channel Version, NeedsUpdate, store URL, ReleasedAt, and the Flatpak commit subject as ReleaseNotes. Needs Shiny.Extensions.MauiHosting.Linux — see Desktop Backends
Android Google Play HTML scrape Version + NeedsUpdate. Ratings/notes/dates aren’t reliably exposed in the page HTML
Windows Microsoft Store DisplayCatalog Version, release notes (from ProductDescription), and ReleasedAt where available
Other TFMs Not supported Returns null