* ci: post a merge gate status that tightens once the full suite is approved Adds a ci/all-tests-gate commit status driven from CircleCI. A no-requires job posts success at pipeline start, approving the full-suite hold flips it to pending, and all-tasks-passed posts success again once every full job is green. Release pipelines post it from all-tests-succeeded so release PRs are not blocked once the context is required. The reduced suite needs no gate of its own: its jobs are already required individually. * test: find the merge gate by its instance name all-tasks-passed is now an instance of the parameterized post-gate-status job, so the workflow entry is keyed by the job name and carries name:. * ci: never post the default gate success once the full suite is requested full-suite-not-requested waits for the reduced suite and checks the hold first: approved means halt without posting, so the gate goes from unreported straight to pending; anything but on_hold fails the job rather than posting success. all-tasks-passed reaches the reduced suite through full-suite-started, so it keeps a single list, and the test guards the list that gates normal PRs. * ci: retry the gate status post A failed POST leaves the gate at its previous value: green if the pending post fails, stuck if the final success post fails. Retrying transient errors narrows both. --retry-all-errors is not used: the cimg/base curl predates it. * ci: mark the merge gate pending when the bot approves the full suite The bare @RCGitBot please test comment is the usual way to request the full suite. Posting pending from the action right after a successful approval closes the window on that path; a re-comment on an already approved hold posts nothing. Manual approvals in the CircleCI UI keep the window of one container start. * ci: pin the gate's ordering in a test and trim the fan-in list Asserts the state of each gate instance and the requires edges that keep pending after the default success and the final success last. Drops the two reduced-suite jobs all-tasks-passed still listed directly, and lets the hold check log a curl failure instead of a bare exit code.
😻 In-App Subscriptions Made Easy 😻
RevenueCat is a powerful, reliable, and free to use in-app purchase server with cross-platform support. Our open-source framework provides a backend and a wrapper around StoreKit and Google Play Billing to make implementing in-app purchases and subscriptions easy.
Whether you are building a new app or already have millions of customers, you can use RevenueCat to:
- Fetch products, make purchases, and check subscription status with our native SDKs.
- Host and configure products remotely from our dashboard.
- Analyze the most important metrics for your app business in one place.
- See customer transaction histories, chart lifetime value, and grant promotional subscriptions.
- Get notified of real-time events through webhooks.
- Send enriched purchase events to analytics and attribution tools with our easy integrations.
Sign up to get started for free.
RevenueCat.framework
RevenueCat is the client for the RevenueCat subscription and purchase tracking system. It's 100% Swift and compatible with Objective-C.
Migrating from Purchases v4 to v5
- See our Migration guide
Migrating from Purchases v3 to v4
- See our Migration guide
RevenueCat SDK Features
| RevenueCat | |
|---|---|
| ✅ | Server-side receipt validation |
| ➡️ | Webhooks - enhanced server-to-server communication with events for purchases, renewals, cancellations, and more |
| 🖥 | iOS, tvOS, macOS, watchOS, Mac Catalyst, and visionOS support |
| 🎯 | Subscription status tracking - know whether a user is subscribed whether they're on iOS, Android or web |
| 📊 | Analytics - automatic calculation of metrics like conversion, mrr, and churn |
| 📝 | Online documentation and SDK Reference up to date |
| 🔀 | Integrations - over a dozen integrations to easily send purchase data where you need it |
| 💯 | Well maintained - frequent releases |
| 📮 | Great support - Contact us |
Getting Started
For more detailed information, you can view our complete documentation at docs.revenuecat.com.
Please follow the Quickstart Guide for more information on how to install the SDK.
Tip
When integrating with SPM, it is recommended to add the SPM mirror repository for faster download/integration times: https://github.com/RevenueCat/purchases-ios-spm
Or view our iOS sample apps:
Requirements
- Xcode 15.0+
| Platform | Minimum target |
|---|---|
| iOS | 13.0+ |
| tvOS | 13.0+ |
| macOS | 10.15+ |
| watchOS | 6.2+ |
| visionOS | 1.0+ |
SDK Reference
Our full SDK reference can be found here.
Contributing
Contributions are always welcome! To learn how you can contribute, please see the Contributing Guide.