FireForNet.Firebase.RemoteConfig
1.0.1-preview.20
Prefix Reserved
See the version list below for details.
dotnet add package FireForNet.Firebase.RemoteConfig --version 1.0.1-preview.20
NuGet\Install-Package FireForNet.Firebase.RemoteConfig -Version 1.0.1-preview.20
<PackageReference Include="FireForNet.Firebase.RemoteConfig" Version="1.0.1-preview.20" />
<PackageVersion Include="FireForNet.Firebase.RemoteConfig" Version="1.0.1-preview.20" />
<PackageReference Include="FireForNet.Firebase.RemoteConfig" />
paket add FireForNet.Firebase.RemoteConfig --version 1.0.1-preview.20
#r "nuget: FireForNet.Firebase.RemoteConfig, 1.0.1-preview.20"
#:package FireForNet.Firebase.RemoteConfig@1.0.1-preview.20
#addin nuget:?package=FireForNet.Firebase.RemoteConfig&version=1.0.1-preview.20&prerelease
#tool nuget:?package=FireForNet.Firebase.RemoteConfig&version=1.0.1-preview.20&prerelease
FireForNet.Firebase.RemoteConfig
Firebase Remote Config for the FireForNet Firebase Client SDK for .NET.
About FireForNet
FireForNet is a platform-agnostic, .NET-native Firebase Client SDK developed as part of the Circuids ecosystem. It provides a consistent Firebase client development experience across .NET application environments, while allowing platform-specific implementations where Firebase requires them.
About This Package
This package provides the Firebase Remote Config implementation for FireForNet:
- Fetch, activate, and fetch-and-activate
- Defaults
- Custom signals
- Typed getters
- Reset
- Realtime update subscriptions
It uses Firebase Installations identity, provided by FireForNet.Firebase.Installations.
Installation
dotnet add package FireForNet.Firebase.RemoteConfig
Targets net10.0. References FireForNet.Firebase.Core and FireForNet.Firebase.Installations transitively.
Setup
builder.Services.AddFirebaseRemoteConfig(options =>
{
options.MinimumFetchInterval = TimeSpan.FromHours(12);
options.FetchTimeout = TimeSpan.FromSeconds(60);
options.RealtimeConnectTimeout = TimeSpan.FromMinutes(5);
});
Platform packages extend the returned FirebaseRemoteConfigBuilder:
builder.Services.AddFirebaseRemoteConfig().UseBlazor(...); // Blazor (all hosting models)
builder.Services.AddFirebaseRemoteConfig().UseBrowser(...); // framework-independent WASM
builder.Services.AddFirebaseRemoteConfig().UseWindows(...); // Windows desktop
builder.Services.AddFirebaseRemoteConfig().UseAndroid(...); // native (non-MAUI) Android
builder.Services.AddFirebaseRemoteConfig().UseApple(...); // iOS / macOS / Mac Catalyst
builder.Services.AddFirebaseRemoteConfig().UseSqlite(path); // SQLite persistence
Usage
Resolve IFirebaseRemoteConfig from DI. Call EnsureReadyAsync first so persisted/cached state has settled:
public class FeatureFlagsService(IFirebaseRemoteConfig remoteConfig)
{
public async Task InitializeAsync()
{
await remoteConfig.EnsureReadyAsync();
await remoteConfig.SetDefaultsAsync(new Dictionary<string, object>
{
["banner_visible"] = true
});
await remoteConfig.FetchAndActivateAsync();
}
public bool IsBannerVisible => remoteConfig.GetBool("banner_visible");
public string HeaderText => remoteConfig.GetString("header_text");
}
Realtime updates are available through OnConfigUpdatedAsync, which returns an IAsyncDisposable that stops listening when disposed.
Related FireForNet Packages
| Package | Purpose |
|---|---|
FireForNet.Firebase.RemoteConfig.Blazor |
Blazor integration (WebAssembly, Server, Hybrid, Auto) |
FireForNet.Firebase.RemoteConfig.Browser |
Framework-independent WASM integration |
FireForNet.Firebase.RemoteConfig.Windows |
Windows desktop integration |
FireForNet.Firebase.RemoteConfig.Android |
Native (non-MAUI) Android integration |
FireForNet.Firebase.RemoteConfig.Apple |
Apple native integration (iOS, macOS, Mac Catalyst) |
FireForNet.Firebase.RemoteConfig.Sqlite |
Platform-agnostic SQLite persistence |
FireForNet.Firebase.Installations |
Installations identity |
Documentation
Comprehensive FireForNet documentation is being prepared for the Release Candidate stage.
Project Status
FireForNet is currently available as a Preview release and is approaching its Release Candidate milestone. APIs, package structure, and implementation details may continue to evolve before RC and GA.
The RC milestone will be followed by an extensive cross-platform validation and testing phase before the first GA release.
All FireForNet packages are part of a coordinated release train and share the same version number.
Source Availability
FireForNet is currently being developed in a private source repository during the Preview development phase. The source will be made publicly available as the project approaches its open-source phase, with the public repository established from the appropriate release milestone.
Until then, NuGet Preview packages provide the public distribution channel for evaluating and using FireForNet.
License
This package is licensed under the Apache-2.0 license.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FireForNet.Firebase.Core (>= 1.0.1-preview.20)
- FireForNet.Firebase.Installations (>= 1.0.1-preview.20)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on FireForNet.Firebase.RemoteConfig:
| Package | Downloads |
|---|---|
|
FireForNet.Firebase.RemoteConfig.Blazor
Package Description |
|
|
FireForNet.Firebase.RemoteConfig.Sqlite
Package Description |
|
|
FireForNet.Firebase.RemoteConfig.Browser
Package Description |
|
|
FireForNet.Firebase.RemoteConfig.Windows
Package Description |
|
|
FireForNet.Firebase.RemoteConfig.Android
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.1-preview.22 | 69 | 9/27/2026 |
| 1.0.1-preview.21 | 77 | 9/22/2026 |
| 1.0.1-preview.20 | 79 | 9/18/2026 |
| 1.0.1-preview.19 | 69 | 9/12/2026 |
| 1.0.1-preview.18 | 98 | 8/24/2026 |
| 1.0.1-preview.17 | 83 | 8/9/2026 |
| 1.0.1-preview.16 | 94 | 8/9/2026 |
| 1.0.1-preview.15 | 80 | 8/8/2026 |
| 1.0.1-preview.14 | 81 | 8/8/2026 |
| 1.0.1-preview.13 | 80 | 7/23/2026 |
| 1.0.1-preview.12 | 100 | 7/9/2026 |
| 1.0.1-preview.11 | 99 | 6/29/2026 |
| 1.0.1-preview.10 | 110 | 6/25/2026 |
| 1.0.1-preview.9 | 88 | 6/24/2026 |
| 1.0.1-preview.8 | 87 | 6/23/2026 |
| 1.0.1-preview.7 | 100 | 6/9/2026 |
| 1.0.1-preview.6 | 77 | 6/8/2026 |
| 1.0.1-preview.5 | 89 | 6/8/2026 |
| 1.0.1-preview.4 | 92 | 6/8/2026 |
| 1.0.1-preview.3 | 81 | 6/8/2026 |
v1.0.1-preview.20
- Synchronized package version with the preview.20 release.
v1.0.1-preview.19
- Synchronized package version with the preview.19 release.
v1.0.1-preview.18
- Synchronized package version with the preview.18 release.
v1.0.1-preview.17
- Synchronized package version with the preview.17 release.
v1.0.1-preview.16
- Synchronized package version with the preview.16 release.
v1.0.1-preview.15
- Synchronized package version with the preview.15 release.
v1.0.1-preview.14
- RemoteConfigHttpClient now injects IFirebaseInstallations directly for the Firebase Installation ID and auth token, replacing the removed IInstallationTokenSource contract.
v1.0.1-preview.13
- Synchronized package version with the preview.13 release.
v1.0.1-preview.12
- Synchronized package version with the preview.12 release.
v1.0.1-preview.11
- Synchronized package version with the preview.11 release.
v1.0.1-preview.10
- Synchronized package version with the preview.10 release.
v1.0.1-preview.9
- Synchronized package version with the preview.9 release.
v1.0.1-preview.8
- Synchronized package version with the preview.8 release.
v1.0.1-preview.7
- Realtime streaming keeps FireForNet's default 5-minute RealtimeConnectTimeout while Core's default HttpClient timeout remains platform-owned.
- Retryable realtime connect/read failures (transport exceptions, HTTP 408/429/5xx) are kept inside the retry loop and reported to subscribers only when the retry budget is exhausted.
- Non-retryable realtime responses (e.g. HTTP 403) still surface immediately to subscribers.
- Realtime handshake now starts from the freshest known baseline (last-fetched template version/ETag) instead of only the activated baseline, matching Android and iOS SDK behavior for faster invalidation detection.
- Added LastFetchedETag and LastFetchedTemplateVersion to RemoteConfigFetchMetadata, persisted on every successful fetch.
- Added regression coverage for realtime retry-limit, non-retryable error semantics, and last-fetched metadata persistence.
v1.0.1-preview.6
- Redesigned IFirebaseRemoteConfig.OnConfigUpdatedAsync to use awaited Task-returning update and error callbacks, so applications can activate fetched realtime values without fire-and-forget work.
- Realtime subscribers now await update callbacks and route callback failures to the async error callback when one is registered.
v1.0.1-preview.5
- Fixed parameterless FetchAsync to hydrate persisted settings before applying the default minimum fetch interval.
- Fixed OnConfigUpdatedAsync to initialize the realtime lifecycle monitor before subscribing, matching Blazor foreground/background ownership.
- Added FirebaseRemoteConfigBuilder.RealtimeConnectTimeout and now honors configured RealtimeMaxRetries in the realtime reconnect loop.
- Added RealtimeConnectTimeout to ConfigSettings and FirebaseRemoteConfigOptions (default 5 minutes).
- Separated realtime streaming connection timeout from regular fetch timeout, matching Android/iOS/JS SDK behavior where long-lived streamFetchInvalidations connections use no client-side timeout.
- ConnectRealtimeAsync now uses RealtimeConnectTimeout instead of FetchTimeout, preventing premature timeout on platforms where HttpClient.Timeout applies (native .NET MAUI/Desktop/WinUI).
v1.0.1-preview.4
- Synchronized package version with the preview.4 release.
- Moved IRealtimeLifecycleMonitor initialization from RealtimeListener stream startup to IFirebaseRemoteConfig.EnsureReadyAsync and OnConfigUpdatedAsync for correct lifecycle ownership
v1.0.1-preview.3
- Fixed realtime stream parsing: replaced line-based StreamReader.ReadLineAsync with raw byte accumulation and JSON brace-boundary detection, matching Android/JS/iOS SDKs.
- Fixed realtime message deserialization: latestTemplateVersionNumber is sent as a quoted string by the server, not a bare number.
- Added reconnection retry with exponential backoff (base 60s, 2x multiplier, ±50% jitter, max 8 retries) matching Android/JS.
- Added fetch retry on invalidation: up to 3 attempts with random 0-4s delay, comparing fetched template version against target version (matching Android/JS autoFetch).
- Fixed retryIntervalSeconds handling: server-specified delay now correctly delays reconnection instead of being wasted.
- Added IRealtimeLifecycleMonitor contract for background/foreground lifecycle management. No-op default registered by AddFirebaseRemoteConfig(); integration packages provide platform implementations.
- Added RealtimeRetryLimitExceeded error code for exhausted retry budget.
v1.0.1-preview.2
- Added X-Google-GFE-Can-Retry and X-Accept-Response-Streaming headers to realtime stream requests for parity with Android/iOS SDKs.
- Added X-Firebase-RC-Fetch-Type, X-Google-GFE-Can-Retry, and X-Accept-Response-Streaming headers unconditionally from core; browser platforms strip them via integration-layer interceptors.
- Fixed CORS preflight failure on Blazor WASM by moving platform-specific header filtering to the Blazor integration package.
v1.0.1-preview.1
- Added platform store integration support (Blazor, Browser, Sqlite, Windows, Maui) via segregated store interfaces.
- InMemoryRemoteConfigStore remains the default when no platform store is registered.
- Bumped to preview10.
v1.0.0-preview9
- Synchronized package version with the preview9 release.
v1.0.0-preview8
- Synchronized package version with the preview8 release.
v1.0.0-preview7
- Synchronized package version with the preview7 Firestore local-cache architecture rework release.
v1.0.0-preview6
- Synchronized package version with the preview6 release.
v1.0.0-preview5
- Synchronized package version with the preview5 release.
v1.0.0-preview4
- Synchronized package version with the preview4 release.
v1.0.0-preview3
- Synchronized package version with the preview3 release.
v1.0.0-preview2
- Initial v1.0.0-preview2 package.