ShipOS docs
SDKs Edge-native

SDK Overview

ShipOS ships two packages. Both evaluate at the edge, both take a default on every call, and both hand it back on any failure, so a flag check never throws and never blocks your request path.

The two packages

Keys and evaluation

Both packages use SDK keys (sos_sdk_*), which are publishable. Create them in the dashboard under Keys - the full key is shown once and cannot be retrieved again over the API. Evaluation happens at the edge (edge.shipos.app), and every call takes a default that's returned on any failure.

Which one do I want?

Reach for @shipos/sdk in Node, on the backend, or in vanilla JS. Reach for @shipos/react when you're writing components, it wraps the same client in hooks and re-renders on config changes.

One line, always safe

Whichever package you use, the flag check is a single expression with a default baked in:

typescript
import { createClient } from "@shipos/sdk";

const shipos = createClient({ key: "sos_sdk_..." });

const newCheckout = await shipos.flag("checkout-v2", {
  userId: "u_42",
  default: false,
});