ReadyNative

No payments

The "No payments" option of the ReadyNative Expo template: payments.useEntitlements() shim returns none.

Pro

Expo Go: yes

Runs in Expo Go; no dev build needed for this module.

This is the no-op payments option: no paywall, no store products, no billing SDK. It owns src/lib/payments.ts as a re-export of the core shim, so @/lib/payments keeps the same API whichever option you pick - payments.useEntitlements() reports no entitlements, restorePurchases() resolves, and presentPaywall is undefined. Pick this while the app is free, or until you know which billing service you want.

Setup

bun run setup --payments none

There's nothing to configure and no keys to paste. Nothing native is installed either, so the app still runs in Expo Go.

When you're ready to charge, switch with bun run setup --payments revenuecat, --payments adapty or --payments stripe.

Usage

The calls exist and are safe to write today, so screens don't need rewriting when you switch:

import { payments } from "@/lib/payments";

const { active, loading } = payments.useEntitlements(); // always { active: [], loading: false }
await payments.presentPaywall?.(); // presentPaywall is undefined here, so this is a no-op
await payments.restorePurchases(); // resolves, does nothing

Gotchas

  • Keep the ?. on presentPaywall. It's optional in the contract precisely because this option doesn't provide one.
  • Any feature gated on an entitlement stays locked while this option is selected, since active is always empty.

Reference

Everything below is generated from modules/payments/none/module.json - the same file bun run setup reads, so it is what actually lands in your repo.

Install

bun run setup --payments none

Module id: payments/none.

Files

1 files copied to the project root
  • src/lib/payments.ts

On this page

Get ReadyNative