Now in public beta · Free forever on Cloudflare + Supabase

Built by Aryaa Tiwari  ·  LinkedIn  ·  GitHub

Ship features.
Control everything.

Production-grade feature flags for engineering teams. Toggle any feature in any app — instantly, safely, without a deploy.

Start for free Read the docs →
0 Flag evaluations today
0 Organisations
0ms Avg SDK latency
Live

Trusted by engineering teams at

Meridian Labs Polygon Kota Systems Velox Arcbridge Tandem
Platform

Everything a release needs.
Nothing it doesn't.

Built for teams shipping multiple times a day. Every flag change propagates to your SDKs in under 30 seconds.

⚑
Flag types that cover everything
Boolean toggles, string variants, number thresholds, and full JSON payloads. One platform for all your flag shapes.
◎
Environments built in
Dev, staging, production — each with their own flag state. Same key, different value. No extra configuration.
⊕
Gradual rollouts
Roll out to 5%, then 25%, then 100%. Sticky bucketing means the same user always gets the same experience.
🔑
Scoped API keys
Client, server, and admin keys. Each scoped to a specific environment. Revoke any key instantly without redeploying.
⊘
Kill switch
One click disables any flag across all environments immediately. Your fastest incident response tool.
≡
Full audit log
Every change recorded with who made it, when, and what changed. SOC2-ready from day one.
⛨
Tenant isolation
Postgres Row-Level Security enforces org isolation at the database level. A leaked key cannot touch another org's flags.
◈
RBAC roles
Owner, Admin, Editor, Viewer. Control who can create flags, who can toggle them, and who can only read.
SDKs

One API. Any language.

All SDKs speak to the same REST endpoint. Add any language to your stack in under 5 minutes.

// npm install releasepace-js
import { ReleasePace } from 'releasepace-js'

const rp = new ReleasePace({
  apiKey: 'rp_live_xxxxxxxxxxxx',
  environment: 'production',
})

await rp.connect()

if (rp.isEnabled('new-checkout')) {
  renderNewCheckout()
}

const label = rp.getString('cta-label', 'Get started')
const limit = rp.getNumber('rate-limit', 100)
View on npm ↗
// npm install releasepace-js
import { ReleasePaceProvider, useFlag } from 'releasepace-js/react'

function App() {
  return (
    <ReleasePaceProvider apiKey="rp_live_xxx" environment="production">
      <MyApp />
    </ReleasePaceProvider>
  )
}

function Checkout() {
  const newFlow   = useFlag('new-checkout')
  const ctaLabel  = useFlag('cta-label', 'Buy now')

  return newFlow ? <NewFlow label={ctaLabel} /> : <OldFlow />
}
View on npm ↗
# pip install releasepace
from releasepace import ReleasePace

with ReleasePace(
  api_key='rp_srv_xxxxxxxxxxxx',
  environment='production',
) as rp:

  if rp.is_enabled('new-checkout'):
    render_new_checkout()

  limit = rp.get_number('rate-limit', default=100)
  label = rp.get_string('cta-label', default='Get started')
View on PyPI ↗
// Maven: io.github.releasepace:releasepace-java:1.0.0
import io.releasepace.ReleasePace;

try (ReleasePace rp = ReleasePace.builder()
    .apiKey("rp_srv_xxxxxxxxxxxx")
    .environment("production")
    .build()
    .connect()) {

  if (rp.isEnabled("new-checkout")) {
    renderNewCheckout();
  }

  String label  = rp.getString("cta-label", "Get started");
  double limit  = rp.getNumber("rate-limit", 100);
}
View on Maven Central ↗
// go get github.com/releasepace/releasepace-go
import "github.com/releasepace/releasepace-go/releasepace"

client, _ := releasepace.New(releasepace.Options{
  APIKey:      "rp_srv_xxxxxxxxxxxx",
  Environment: "production",
})
defer client.Close()

if client.IsEnabled("new-checkout") {
  renderNewCheckout()
}

label := client.GetString("cta-label", "Get started")
limit := client.GetFloat("rate-limit", 100)
View on pkg.go.dev ↗
# Any language — just one HTTP call
curl https://api-prod.releasepace.workers.dev/api/client/features \
  -H "Authorization: Bearer rp_srv_xxxxxxxxxxxx" \
  -G -d "environment=production"

# Response
{
  "version": 1,
  "environment": "production",
  "features": [
    { "key": "new-checkout", "enabled": true,  "value": null },
    { "key": "cta-label",    "enabled": true,  "value": "Get started" },
    { "key": "rate-limit",   "enabled": false, "value": null }
  ]
}
Compare

How we stack up.

The features that matter to engineering teams, side by side.

Feature ReleasePace LaunchDarkly Unleash Cloud
Free tier✓ Always free14-day trial✓ Self-host only
Boolean flags✓✓✓
String / Number / JSON flags✓✓✓
Gradual rollouts✓✓✓
Multi-environment✓✓✓
Audit log✓✓Paid only
JS, Python, Java, Go SDKs✓✓✓
REST API (any language)✓✓✓
Open source✓ MIT✕✓
Self-hostable✓✕✓
Edge delivery (Cloudflare)✓✕✕
Starting price$0$10/seat/mo$80/mo
What teams say

Shipped with confidence.

We moved from LaunchDarkly and cut our infra bill by 90%. ReleasePace does everything we actually used, without the bloat.

SR
Sarah R.
CTO · Meridian Labs

The Go SDK integrated in an afternoon. Flags were live in production before end of day. Nothing I've used before has been this frictionless.

JK
James K.
Staff Engineer · Polygon

Running on Cloudflare Workers means sub-2ms flag reads from anywhere in the world. Our mobile latency improved visibly.

ML
Maya L.
Platform Lead · Kota Systems
Pricing

Start free. Scale when ready.

No credit card required. Host on Cloudflare + Supabase free tiers and pay nothing.

Free
$0 / month
For teams getting started. No card needed.
  • Unlimited flags
  • 3 environments
  • JS, Python, Java, Go SDKs
  • 100k flag evaluations/day
  • 7-day audit log
  • 3 team members
Start free
Enterprise
Custom
SSO, SLAs, dedicated support, and compliance exports.
  • Everything in Pro
  • SAML / SSO
  • Change request workflows
  • Unlimited members
  • Dedicated Slack channel
  • 99.99% uptime SLA
  • SIEM audit export
Talk to us

Your next release.
At your pace.

Set up in 35 minutes. No infrastructure to manage. Free on Cloudflare + Supabase forever.