FireForNet.Firebase.RemoteConfig 1.0.1-preview.22

Prefix Reserved
This is a prerelease version of FireForNet.Firebase.RemoteConfig.
dotnet add package FireForNet.Firebase.RemoteConfig --version 1.0.1-preview.22
                    
NuGet\Install-Package FireForNet.Firebase.RemoteConfig -Version 1.0.1-preview.22
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FireForNet.Firebase.RemoteConfig" Version="1.0.1-preview.22" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FireForNet.Firebase.RemoteConfig" Version="1.0.1-preview.22" />
                    
Directory.Packages.props
<PackageReference Include="FireForNet.Firebase.RemoteConfig" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FireForNet.Firebase.RemoteConfig --version 1.0.1-preview.22
                    
#r "nuget: FireForNet.Firebase.RemoteConfig, 1.0.1-preview.22"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FireForNet.Firebase.RemoteConfig@1.0.1-preview.22
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FireForNet.Firebase.RemoteConfig&version=1.0.1-preview.22&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=FireForNet.Firebase.RemoteConfig&version=1.0.1-preview.22&prerelease
                    
Install as a Cake Tool

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.

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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 77 9/18/2026
1.0.1-preview.19 68 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
Loading failed

v1.0.1-preview.22
- FetchStatus is now an IWireString value type ("nofetchyet"/"success"/"failure"/"throttled") instead of an enum (breaking). RemoteConfigMetadata is persisted directly through IRemoteConfigMetadataStore (the transient Persisted* record family and mapper are removed; breaking). Unknown persisted status strings now fail loudly with FirebaseRemoteConfigException instead of silently falling back to NoFetchYet.

v1.0.1-preview.21
- No functional changes; synchronized with the framework-free MAUI integration sweep.

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.