Skip to content
Document DB v8.0 Interceptors, Temporal Support, Telemetry Collection, All Calculations, String Based APIs, & Orleans Storage Providers! Feed The Machine Here

Push (Server) Releases

Feature

Initial release — provider-agnostic server-side push core: IPushManager orchestrator, IPushProvider transport seam, IPushRepository persistence, IPushInterceptor pipeline, structured PushFilter targeting, rich PushNotification model, automatic dead-token pruning + token rotation, bounded-concurrency dispatch, and an in-memory repository + debug provider. AOT/trim-safe.

Feature

Direct APNs provider (Shiny.Extensions.Push.Apns) — HTTP/2 with token-based .p8 / ES256 JWT auth (no FCM dependency), per-registration sandbox/production, cached provider JWT, pooled HTTP/2 connection, Apple-specific payload options, and multi-app keyed registration via AddApns("key", …) + AppId.

Feature

Shiny.DocumentDb persistence (Shiny.Extensions.Push.DocumentDb) — IPushRepository over any DocumentDb backend with O(1) token-keyed writes; SQLite integration-tested.

Feature

MetricsSystem.Diagnostics.Metrics counters (push.notifications.sent/.failed/.skipped, push.tokens.pruned) and a push.send.duration histogram under the meter Shiny.Extensions.Push, tagged by platform/provider/status. OpenTelemetry-ready.

Feature

Provider batching / FCM multicast — a new optional IPushBatchProvider capability lets a transport deliver one notification to many devices in a single call. FcmProvider implements it (up to 500 devices per multipart /batch request), so broadcasts and topic fan-out use far fewer round trips. Enabled by default (PushManagerOptions.EnableBatching); devices are grouped by the identical notification instance, so per-device localization falls back to per-device sends. Per-device pruning, token rotation, metrics, and OnSent/OnFailed are all preserved.