Skip to main content

Overview

You’ll build this:
Then you’ll flip new-checkout on in the dashboard and watch your running app change — no redeploy. You need: a shipd account and Node.js 22.12+ for the shared CLI. Go applications also need Go 1.23+. TypeScript uses Node’s built-in WebSocket for streaming; Go uses polling. Signing up creates an organization with one project and a production environment.

1. Install

2. Log in

Your browser opens. Pick your organization, your project, and the production environment, then approve. The CLI remembers that choice, so later commands don’t need --project or --env.

3. Define a flag

Create shipd.config.ts for TypeScript or shipd.config.go for Go:
The CLI reads these files directly and selects the matching SDK language automatically. No project settings are required. See Go config reference.

4. Push it

Type y to apply. The flag now exists in shipd. TypeScript output goes to src/generated/flags.ts; Go output goes to internal/flags/flags_gen.go. The warning lists the demo flags that came with your new project. shipd push never removes flags you didn’t list, so you can ignore it.

5. Copy an SDK key

In the dashboard, open your project → SDK keys → Create SDK key. Choose the server key type and copy the key (it’s shown once).

6. Read the flag

Leave it running.

7. Flip it in the dashboard

Open Flags → new-checkout. In the Environment section, set Fallthrough to true and click Save environment. TypeScript with streaming updates within a second or two. Go updates on the next poll (up to 30 seconds by default):
That’s it. Your code checked a flag, and you changed its value remotely without redeploying.
In the environment you push to, the definition’s default sets the fallthrough. If you run shipd push now, it will offer to set the fallthrough back to false. Change TypeScript default or Go Default to true first. shipd pull copies the dashboard value into your TypeScript or Go definition file. See Push, pull, and diff.

What just happened

  • Your TypeScript or Go definitions are the source of truth for which flags exist. The CLI reads Go source directly; shipd push synced the definitions.
  • The dashboard controls what each flag serves in each environment.
  • The SDK downloaded a snapshot of your flags and evaluated isEnabled in memory. TypeScript streaming clients refresh after a WebSocket notification; Go refreshes on its next poll.
  • If shipd is unreachable, the SDK keeps the last valid snapshot, or serves configured defaults if no snapshot has loaded. Flag checks never throw and never make network requests.
The five-minute version of this model is Core concepts.

Next

Core concepts

Projects, environments, snapshots, and local evaluation on one page.

Target users

Turn a flag on for one user, a plan, or an email domain.

Roll out to 10%

Sticky percentage rollouts.

Add shipd to your stack

TypeScript, Go, browser, React, Next.js, and Convex.