Skip to main content
OpenFeature Web SDK provider for Westyx Nexus - feature flags and configuration through the OpenFeature standard browser API, for a browser application with no Nexus framework SDK.

What’s new in v0.15.0

  • A live stream that never connects is reported. When the client gives up before its first successful connection it says so once - through the logger you configured, or on console.warn if you configured none. Evaluations keep being answered from the cache, refreshed on the TTL, so without this the provider stays READY and its values simply stop changing. A connection lost after connecting is reported by the stream observer instead. See Usage.
  • The stream request carries only the API key and Accept. Both are all the server needs, which is one fewer name a deployment’s CORS configuration has to allow.

What’s new in v0.14.0

  • A start-up failure that no retry can fix reports PROVIDER_FATAL. A rejected API key, a base URL naming no service, and a configuration value the client will not accept leave the client in FATAL, where the SDK stops calling this provider and every evaluation returns your default at once. A timeout, an unreachable network, a server error and an overdue invoice stay recoverable, and registering the provider again can clear them. See Usage.
  • instanceof recognises an error raised by any copy of these classes. This package ships an ES module and a CommonJS build, and the framework SDKs carry copies of the same hierarchy, so an application can hold more than one class object per error type. The operator answers from a brand and gives one answer.
  • NexusNotFoundError is exported, which is what a base URL naming no service puts on the failure’s cause.
  • The configuration you pass is copied at construction, so mutating that object afterwards - or reusing one across two providers - cannot change which endpoint or which key a provider uses.

What’s new in v0.13.0

  • A composite (object or array) resolution carries an integer beyond Number.MAX_SAFE_INTEGER as its exact decimal string - at any depth, in objects and arrays alike, so the resolved value survives JSON.stringify. Ordinary numbers are untouched, and the scalar number resolution still answers TYPE_MISMATCH for the same value.

What’s new in v0.12.0

  • Per-user targeting. A boolean evaluation whose context carries a targetingKey answers with the flag’s value for that user, so AB tests, cohort rules and percentage rollouts apply, and reports TARGETING_MATCH. One round trip covers every flag in the snapshot. See Targeting.
  • The same client as the framework SDKs. The provider compiles in the browser client the Angular, React and Vue SDKs use, so it behaves identically: request deadlines, ETag-aware sync, a liveness deadline on the event stream, lossless JSON decoding, and reconnection after any close.
  • endpoint is now baseUrl - a breaking configuration change.
  • An unknown flag reports FLAG_NOT_FOUND rather than a successful resolution, and a number evaluation no longer coerces a boolean, an empty string or an empty array into a number.
The version jumps from 0.8.0 to 0.12.0 to sit with the other eleven OpenFeature bridges, which all ship this same contract at 0.12.x.

Highlights

  • Framework-agnostic - any browser TypeScript or JavaScript application: Svelte, Solid, Lit, or plain DOM code.
  • OpenFeature standard - code against the vendor-neutral OpenFeature.getClient() API and swap providers without rewriting evaluation code.
  • Per-user targeted booleans - one batched round trip per evaluation context, then every evaluation is a synchronous local read.
  • Live updates - the provider holds an event stream open and emits ConfigurationChanged when a flag or config actually changes.
  • Honest failure behaviour - a transport failure serves the last known value as STALE, never the caller’s default.
  • Public key only - wxp_... browser keys; a secret key is rejected when the provider initialises.
Browser SDKs must use a wxp_... (public) key. Never embed secret keys (wxs_...) in browser code.
Already using @westyx-nexus/sdk-angular, -react or -vue? Use that SDK’s own OpenFeature bridge instead. It wraps the client the application already has, where this package creates and owns one - so next to a framework SDK it would open a second connection and keep a second cache.

Package

Latest release: v0.16.0 (2026-08-30 - breaking: NexusPublicKeyError removed along with the shared core’s getSecret()).

Pages