billingsdk

React

React bindings for Billing SDK — context provider, hooks for entitlements, and subscription state.

Installation

npm install billingsdk-core billingsdk-react

BillingProvider

Wrap your app with the provider to give components access to billing state:

import { BillingProvider } from "billingsdk-react";
import { createBilling, definePlans } from "billingsdk-core";
import { stripe } from "billingsdk-stripe";

const billing = createBilling({
  adapter: stripe({ secretKey: process.env.NEXT_PUBLIC_STRIPE_KEY! }),
  plans,
});

function App({ children }) {
  return (
    <BillingProvider billing={billing} customerId="cus_123">
      {children}
    </BillingProvider>
  );
}

useBilling

Access the billing client, active subscription, and entitlements:

import { useBilling } from "billingsdk-react";

function SubscriptionStatus() {
  const { subscription, entitlements, loading, error, refresh } = useBilling();

  if (loading) return <div>Loading...</div>;
  return (
    <div>
      Status: {subscription?.status ?? "No active subscription"}
      <button onClick={refresh}>Refresh</button>
    </div>
  );
}

useEntitlement

Check a single feature entitlement with reactive updates:

import { useEntitlement } from "billingsdk-react";

function AIGenerations() {
  const { allowed, remaining, loading, refresh } = useEntitlement("ai_generations");

  if (loading) return <div>Loading...</div>;
  return (
    <div>
      {allowed
        ? `${remaining} generations remaining`
        : "Upgrade required"}
    </div>
  );
}