For Aiur, v1 is the point where SDK behavior becomes explicit: contracts, guarantees, and predictable failure.

Aiur
Platform Engineering

When software teams talk about a “v1,” it often means the first version that works.
For the Aiur JavaScript SDK, v1 means something more specific: it is the point at which behavior becomes explicit.
The Aiur JavaScript SDK is open source and available on GitHub:
https://github.com/aiur-io/aiur-js
Client SDKs sit at the boundary between systems and reality.
They run in browsers that go offline.
They run in servers that restart.
They operate under retries, partial failures, and duplicated execution.
Despite this, many SDKs are designed as convenience layers: thin wrappers around HTTP calls that work well under ideal conditions and behave unpredictably everywhere else.
Aiur takes a different position.
SDKs are infrastructure.
And infrastructure must be defined by contracts, not assumptions.
Before adding features, we defined what the SDK must guarantee, and just as importantly, what it must not attempt to guarantee.
In v1, the Aiur JavaScript SDK provides:
Explicit delivery semantics
Events are delivered at least once within a bounded retry window.
At-least-once means duplicates are possible, but silent loss is not.
Stable event identity
Each event has a stable identifier reused across retries, enabling safe deduplication.
Acknowledgment-driven lifecycle
Events are only removed after explicit acceptance by the server.
Offline resilience in browsers
Events survive reloads and temporary connectivity loss when IndexedDB is available.
Bounded durability
Events are intentionally dropped after configurable age or retry limits rather than persisting indefinitely.
Clear client/server separation
Browser behavior, server behavior, and framework behavior are explicitly scoped.
Anything outside these guarantees is left intentionally unspecified.
This is not a limitation. It is how predictable systems are built.
The most important question an SDK must answer is not “what happens when things work?”
It is “what happens when things fail?”
In Aiur v1:
Failure modes are defined, bounded, and observable.
The Aiur JS SDK is published as multiple layers:
Each layer adds convenience, not meaning.
Routing awareness exists only in the Next.js integration.
Auto-capture exists only in the React layer.
Delivery guarantees exist only in the core.
This separation ensures that behavior remains consistent across browser, server, React, and Next.js environments without leaking assumptions between them.
The SDK is published as a unified package on npm, with framework-specific layers exposed as needed:
https://www.npmjs.com/package/aiur-io
Advanced users can also consume the framework-specific packages directly.
Aiur supports server-defined SDK configuration that allows behavior to change without code changes.
This includes:
Remote configuration is:
Configuration controls behavior toggles, not data exfiltration.
Most systems fail not because they lack features, but because behavior becomes implicit over time.
When behavior is implicit:
By making v1 about contracts rather than coverage, the Aiur JS SDK establishes a stable foundation that future versions can build on without changing meaning.
v1 is not the end of the SDK.
It is the point at which its behavior became explicit enough to rely on.
The Aiur JavaScript SDK v1 defines a baseline:
Everything that follows builds on this foundation.
Further reading