Journal

Build a Swapfiets-Style Subscription App in React Native

A subscription-service app is one where the subscription is the product. Here is how to build the Swapfiets-style flow in React Native.

Build a Swapfiets-Style Subscription App in React Native: a phone toggle icon surrounded by location, calendar, settings, wallet and chart app icons on a coral gradient

TL;DR

A Swapfiets-style app is a subscription where the subscription is the product, a physical service like a bike you keep, swap, and get repaired, not a digital in-app purchase. So the app is built around the active subscription: a home showing your subscription and your item, a request flow for a swap or repair, status tracking, and manage screens. The billing is the compliance point: a physical-service subscription is charged through an external processor like Stripe, not Apple's in-app purchase, which is for digital goods. A free VP0 subscription-service template gives an agent those service screens to extend, while you wire the billing.

What a subscription-service app actually is

A Swapfiets-style app is a different animal from a billing screen, and the difference shapes everything. Here the subscription is the product: you pay monthly and you get a physical service, a bike you keep, that gets swapped or repaired when something breaks. So the app is not built around a paywall, it is built around the ongoing relationship, your active subscription, the item you have, and the service you can request. The home is not a list of plans to buy, it is a dashboard of what you already have and what you can do with it. That reframing, from selling a subscription to operating one, is the heart of the design.

Getting this right early matters, because many subscription templates are really just payment screens, and a service-subscription app needs the opposite emphasis: most of the screens are about living with the subscription, not signing up for it.

The screens are about the service, not the sale

A subscription-service app is mostly the service flow. The home shows your active subscription and your item, with its status. A request flow lets you ask for a swap or a repair, with a clear description of the problem and a way to schedule it. A status view tracks that request, submitted, scheduled, in progress, done, so you know when your bike will be fixed or replaced. And a manage screen handles the subscription itself: pause it, change it, update payment, or cancel, ideally with a pause option rather than only cancel. The sign-up exists, but it is a small part of an app whose job is the months after the first payment. The broader subscription-management patterns appear in a subscription management screen, and the mobility-rental cousin in a scooter rental app clone.

The service-request flow is the screen that defines this category. A clean way to report a problem and track its resolution is what makes a physical-service subscription feel reliable, and it is exactly what a generic billing kit does not include.

The billing belongs to an external processor

Here is the compliance point that matters most, and it is the opposite of what many assume. Because a Swapfiets-style subscription is a physical service, not digital content used in the app, it is billed through an external payment processor like a card or Stripe, not through Apple’s in-app purchase. Apple’s App Store Review Guidelines require in-app purchase via StoreKit for digital goods and content consumed in the app, but physical goods and real-world services are billed outside it. So a bike subscription, a meal-kit box, or a laundry service charges the customer through a licensed processor, and your app presents the billing without custodying the money. Treating a physical-service subscription as an in-app purchase would be wrong, and trying to route digital content through Stripe would fail review, so the rule is to match the billing to what is actually sold.

This is liberating once understood. You are not fighting Apple’s commission for a physical service, because in-app purchase does not apply, and you are not custodying funds, because a licensed processor handles the money.

The approaches compared

There are three realistic ways to get the app, and they differ in how much of the service flow you build yourself.

ApproachService flow, swap, repair, statusSubscription-as-product homeEffort
Build from scratchYou design the whole service flowYou design the dashboard yourselfHigh
Generic subscription or billing kitBilling screens only, no service flowNo, it is a sign-up and billing screenHigh rework
Subscription-service templateSwap, repair, and status flows built inAn active-subscription home built inLow, extend it and wire billing

A generic subscription kit gets you the paywall and the manage-payment screen, which is the small part, and leaves the service flow, the actual product, to build. A free VP0 subscription-service template starts you on the right emphasis, with the active-subscription home, the swap and repair request flow, the status tracking, and the manage screens already shaped and exposed through a machine-readable source page, so an agent like Cursor or Claude Code, drawing on a React Native ecosystem of more than 125,000 stars, extends a real service app and you wire the external billing. The SaaS-style sign-up side, where it applies, overlaps a SaaS subscription screen kit.

The states that make a service subscription trustworthy

A service subscription earns trust through honest states around the item and the request. The item’s status should be clear, active, swap requested, in repair, so the user always knows where they stand. A request needs honest tracking with real timestamps, not a vague spinner, and a clear expected window for the swap or repair. The manage screen should make pausing and changing as easy as subscribing, because a service people pause for a holiday and resume is healthier than one they cancel in frustration, which is the spirit behind a pause-instead-of-cancel option. And billing states, an upcoming charge, a failed payment, a paused period, should be transparent so the relationship never has a nasty surprise.

These states are where a physical-service subscription differs from a digital one. The user is not buying access to features; they are entrusting you with an ongoing service, and the app’s honesty about the item and the request is what sustains that trust month after month.

Key takeaways: a subscription-service app

  • The subscription is the product. A physical service like a bike, not an in-app purchase, so the app is about living with it.
  • The screens are the service. An active-subscription home, a swap or repair request, status tracking, and manage screens.
  • Billing is external. A physical service is charged through a licensed processor like Stripe, not Apple’s in-app purchase.
  • Honest states sustain trust. Clear item status, real request tracking, easy pause, and transparent billing.
  • Start from a service template. A free VP0 subscription-service template gives an agent the service screens to wire billing into.

What to choose

For a subscription-service app, build from a template designed around the service, not a billing kit, because the active-subscription home and the swap, repair, and status flows are the product and the part a generic subscription kit leaves out. A free VP0 subscription-service template gives you the dashboard, the request flow, the status tracking, and the manage screens, so an agent extends a real service app and you wire an external payment processor for the physical-service billing, keeping the money with a licensed provider. A generic subscription or billing kit is a fair starting point only for the small sign-up portion, since it does not address the service flow that defines this kind of app.

Frequently asked questions

How do I build a Swapfiets-style subscription app in React Native? Build it around the service, not the sale. The home shows the active subscription and the item with its status, a request flow lets the user ask for a swap or repair and describe the problem, a status view tracks that request, and a manage screen handles pause, change, and cancel. The sign-up is a small part. Bill the physical service through an external processor like Stripe rather than Apple’s in-app purchase, since it is a real-world service. A free subscription-service template gives you the dashboard, the request flow, and the manage screens to start from.

How are physical-service subscriptions billed on iOS? Through an external payment processor, not Apple’s in-app purchase. Apple requires StoreKit in-app purchase for digital goods and content consumed in the app, but physical goods and real-world services, like a bike subscription or a meal-kit box, are billed outside it, typically by card through a licensed processor like Stripe. So your app presents the checkout and the recurring billing while the processor holds the card data and moves the money, and you never custody funds. Treating a physical-service subscription as an in-app purchase would be incorrect, and routing digital content through Stripe would fail review.

Where can I get a subscription-service app template? The most useful option is a template built around the service flow, not just a paywall. A free VP0 subscription-service template provides the active-subscription home, the swap and repair request flow, the status tracking, and the manage screens, with a machine-readable source page, so an agent like Cursor or Claude Code extends a real service app. You then wire an external payment processor for the billing, since the template is the service interface and the licensed money movement is the processor’s. It is built for living with a subscription rather than only signing up for one.

What is the difference between a subscription-service app and an in-app subscription? An in-app subscription sells digital access, features, content, a SaaS tier, billed through Apple’s in-app purchase, and the app is largely about the paywall and entitlements. A subscription-service app sells a physical service, like a bike you keep and get repaired, billed through an external processor, and the app is largely about the service: the item, the swap or repair requests, and their status. The difference drives both the screens, service-focused rather than paywall-focused, and the billing, external rather than in-app, so it is important to know which you are building.

What states does a service subscription need to handle? The ones that keep the ongoing relationship honest: the item’s status, active, swap requested, in repair, real request tracking with timestamps and an expected window, an easy pause and change in the manage screen, and transparent billing states like an upcoming charge, a failed payment, or a paused period. Offering a pause instead of only a cancel keeps subscriptions healthy. These states matter because the user is entrusting you with an ongoing service rather than buying features, and the app’s honesty about the item and the request is what sustains that trust over time.

More questions from VP0 vibe coders

How do I build a Swapfiets-style subscription app in React Native?

Build it around the service, not the sale. The home shows the active subscription and the item with its status, a request flow lets the user ask for a swap or repair and describe the problem, a status view tracks that request, and a manage screen handles pause, change, and cancel. The sign-up is a small part. Bill the physical service through an external processor like Stripe rather than Apple's in-app purchase, since it is a real-world service. A free subscription-service template gives you the dashboard, the request flow, and the manage screens to start from.

How are physical-service subscriptions billed on iOS?

Through an external payment processor, not Apple's in-app purchase. Apple requires StoreKit in-app purchase for digital goods and content consumed in the app, but physical goods and real-world services, like a bike subscription or a meal-kit box, are billed outside it, typically by card through a licensed processor like Stripe. So your app presents the checkout and the recurring billing while the processor holds the card data and moves the money, and you never custody funds. Treating a physical-service subscription as an in-app purchase would be incorrect, and routing digital content through Stripe would fail review.

Where can I get a subscription-service app template?

The most useful option is a template built around the service flow, not just a paywall. A free VP0 subscription-service template provides the active-subscription home, the swap and repair request flow, the status tracking, and the manage screens, with a machine-readable source page, so an agent like Cursor or Claude Code extends a real service app. You then wire an external payment processor for the billing, since the template is the service interface and the licensed money movement is the processor's. It is built for living with a subscription rather than only signing up for one.

What is the difference between a subscription-service app and an in-app subscription?

An in-app subscription sells digital access, features, content, a SaaS tier, billed through Apple's in-app purchase, and the app is largely about the paywall and entitlements. A subscription-service app sells a physical service, like a bike you keep and get repaired, billed through an external processor, and the app is largely about the service: the item, the swap or repair requests, and their status. The difference drives both the screens, service-focused rather than paywall-focused, and the billing, external rather than in-app, so it is important to know which you are building.

What states does a service subscription need to handle?

The ones that keep the ongoing relationship honest: the item's status, active, swap requested, in repair, real request tracking with timestamps and an expected window, an easy pause and change in the manage screen, and transparent billing states like an upcoming charge, a failed payment, or a paused period. Offering a pause instead of only a cancel keeps subscriptions healthy. These states matter because the user is entrusting you with an ongoing service rather than buying features, and the app's honesty about the item and the request is what sustains that trust over time.

Part of the React Native & Expo: Mobile Frontend Architecture hub. Browse all VP0 topics →

Keep reading

Build a Tengo Pay-Style Payment App UI in React Native: a glass photo icon surrounded by chat, music, heart, camera and shopping app icons on a pastel gradient
Guides 8 min read

Build a Tengo Pay-Style Payment App UI in React Native

A payment-app clone reproduces clean send, balance, and QR-pay patterns, not a brand. Here is how to build the Tengo Pay-style UI in React Native, money included.

Lawrence Arya · June 9, 2026
Build a Toss-Style Banking App UI Clone in React Native: a glossy App Store icon on a blue, pink and orange gradient with bubbles
Guides 8 min read

Build a Toss-Style Banking App UI Clone in React Native

Toss feels premium because of minimalism and micro-animation, not its brand. Here is how to build a Toss-style banking app UI clone in React Native.

Lawrence Arya · June 8, 2026
CRED Style Neomorphism UI Clone in React Native, Free: the App Store logo as a glossy glass icon on a purple and blue gradient with floating bubbles
Guides 5 min read

CRED Style Neomorphism UI Clone in React Native, Free

Want a CRED style neomorphic UI clone in React Native? Clone the premium soft-shadow look from a free template with Claude Code or Cursor, accessibly.

Lawrence Arya · June 1, 2026
Kaspi.kz Super App UI Clone in React Native: the App Store logo as a glossy glass icon on a purple and blue gradient with floating bubbles
Guides 5 min read

Kaspi.kz Super App UI Clone in React Native

A payments-first super app, not delivery-first: the QR-pay home, the three-pillar feature-module shell, disclosed BNPL, and real Kazakh/Russian bilingual UX.

Lawrence Arya · June 7, 2026
Maya Digital Bank UI Clone in React Native: the App Store logo as a frosted glass icon on a pink and blue gradient with bubbles
Guides 6 min read

Maya Digital Bank UI Clone in React Native

A wallet-plus-bank hybrid, not just a wallet: QR Ph pay and buy-load alongside a real deposit account, with the two balances never blurred.

Lawrence Arya · June 7, 2026
MobilePay Danmark UI Clone in React Native: Guide: a vivid neon 3D App Store icon on an orange, pink and blue gradient
Guides 5 min read

MobilePay Danmark UI Clone in React Native: Guide

How to build a MobilePay-style payment UI in React Native: amount-first numpad, swipe-to-pay slider, social payment feed, and the licensing lines.

Lawrence Arya · June 5, 2026