Skip to main content
The SDK keeps every config / secret / flag in an in-memory snapshot that is replaced atomically as a whole on each sync. Reads never block on the network; only the periodic background refresh does.

When does the SDK hit the network

The atomic snapshot guarantee

The snapshot is replaced as one immutable record. Two reads from different threads either see the same old state or the same new state - never a mix.
This means you can iterate GetAllConfigs() without worrying about an entry being added or removed mid-loop.

ETag / 304

Every successful sync stores the server’s ETag. The next sync sends If-None-Match: <etag>. If nothing has changed:
…the SDK resets its SyncedAt timestamp and serves the existing snapshot. No payload transferred.

Background sync errors

Background syncs never throw. If the network call fails:
  1. The error is logged via INexusLogger.Error(...)
  2. The existing cache continues to be served
  3. The next read after the TTL elapses retries automatically

Cache lifetime

The cache lives as long as the NexusClient instance. Disposing the client (or letting it be garbage-collected) releases the memory. Typical use is one singleton client per application, registered with DI; do not create per-request.

Diagnostics

Logging INexusLogger.Debug will emit one line per sync: