Building a React Native commerce app is less about choosing a single template and more about assembling compatible pieces. This guide explains how to compare headless commerce and custom backends, estimate implementation effort, evaluate payment and checkout integrations, and create a launch plan that can be recalculated as providers, regions, and store requirements change.
Overview
A typical React Native commerce app combines product discovery, search, cart management, checkout, payments, customer accounts, order history, and notifications. Each capability may come from a different layer: a React Native ecommerce template for the interface, a commerce API for catalog and orders, a payment integration for transaction processing, and a backend service for identity, local business rules, and event handling.
The main architectural decision is whether to use a headless commerce platform or build commerce services on a custom backend. A headless platform can reduce the amount of catalog, cart, pricing, and order infrastructure your team must create. A custom backend gives more control over data models and workflows, but the team assumes responsibility for more operational and compliance work.
A useful way to think about the stack is:
React Native app
├─ Navigation, screens, UI kit, local state
├─ Catalog and search client
├─ Cart and checkout orchestration
├─ Payment SDK or hosted payment flow
└─ Push notification registration
│
▼
Commerce API or custom backend
├─ Products, pricing, inventory
├─ Customers, carts, orders
├─ Promotions and shipping rules
└─ Webhooks and order events
│
├─ Payment processor
├─ Tax, shipping, or fulfillment systems
└─ Analytics, crash reporting, and monitoring
Keep payment credentials and authoritative order state on a trusted server-side layer. The mobile app should request the information it needs, display the payment experience, and receive a confirmed result rather than becoming the source of truth for transaction status.
For adjacent stack decisions, compare your navigation choice with React Native navigation libraries, and review backend trade-offs in the Firebase, Supabase, and Appwrite comparison.
How to estimate
Estimate the project in capability groups rather than by counting screens. A screen estimate can hide difficult work such as inventory consistency, payment failures, address validation, or order-status synchronization.
Use this repeatable model:
Estimated effort = foundation + commerce features + integrations + quality assurance + release reserve
Assign each group a relative size—small, medium, or large—or use your team’s own person-day estimates. The important point is consistency. For each feature, record:
- Build effort: UI, state management, API calls, and server-side logic.
- Integration effort: SDK setup, authentication, webhooks, credentials, and environment configuration.
- Failure-path effort: retries, declined payments, expired carts, unavailable products, and interrupted sessions.
- Verification effort: unit tests, API tests, device testing, accessibility checks, and release testing.
- Maintenance exposure: provider updates, native build changes, dependency upgrades, and regional expansion.
For a financial estimate, multiply the expected effort by the blended internal cost rate used by your organization, then add recurring platform and operational costs as separate line items. Do not hide recurring fees inside the initial build estimate. They change independently and should be reviewed by product, engineering, finance, and operations.
Score each candidate stack against five decision factors: time to first release, control over commerce behavior, geographic and payment coverage, integration complexity, and long-term ownership. A slightly faster template may be a poor choice if its dependencies restrict your checkout flow or make upgrades difficult.
Inputs and assumptions
Before comparing a React Native commerce app stack, write down the assumptions that affect the estimate. This prevents a low initial estimate from quietly expanding during implementation.
| Input | Questions to answer | Why it changes the estimate |
|---|---|---|
| Catalog | How many product types, variants, attributes, and images are needed? | Complex product data affects search, filtering, caching, and UI states. |
| Commerce model | Is the app single-vendor, marketplace, subscription-based, or mixed? | Multiple sellers or recurring orders add identity, payment, and order rules. |
| Checkout | Which address, shipping, discount, tax, and payment steps are required? | Every step introduces validation and failure paths. |
| Regions | Which countries, currencies, languages, and delivery areas are in scope? | Regional expansion can require new payment methods and business rules. |
| Operations | Who manages products, inventory, refunds, fulfillment, and support? | Admin workflows and webhooks are part of the product, even if they are not mobile screens. |
| Release model | Will the app ship through a managed Expo workflow or a more customized native setup? | Native modules, payment SDKs, and build configuration affect CI/CD effort. |
Then compare the main architecture paths:
| Approach | Commerce API responsibility | Payment approach | Best fit |
|---|---|---|---|
| Headless commerce | Usually provides catalog, carts, customers, promotions, and orders through documented APIs. | Connect a compatible payment provider through the platform or your server layer. | Teams that want established commerce workflows and a faster initial build. |
| Custom backend | Your team designs product, inventory, cart, pricing, and order models. | Integrate a provider directly and implement payment state handling. | Products with unusual rules, proprietary data, or deep workflow requirements. |
| Hybrid | Use a commerce platform for core transactions and custom services for search, content, loyalty, or operations. | Keep payment confirmation tied to the authoritative order service. | Teams that need customization without rebuilding every commerce capability. |
For payments, compare the integration pattern rather than only the provider name. A native payment SDK may provide a polished mobile experience but introduce native build dependencies. A hosted or redirected flow may reduce mobile complexity while adding navigation and return-state handling. A provider-hosted payment sheet can simplify sensitive form handling, but you still need to verify how it works with your target platforms, authentication flow, refunds, saved methods, and deep links.
Check each candidate’s current React Native or Expo support, supported platforms, server requirements, webhook behavior, test environment, regional availability, pricing model, and upgrade process before committing. Treat these as verification tasks, not assumptions.
Worked examples
Example 1: A focused single-vendor launch
Assume the first release includes browsing, search, product details, a cart, one checkout path, customer accounts, order history, and push notifications. The catalog is managed by an existing commerce system, and the app supports one initial region.
The estimate might be organized as follows:
- Foundation: React Native ecommerce template or starter, navigation, design system, authentication, environment configuration, and API client.
- Commerce: catalog mapping, search, cart persistence, checkout states, order history, and account screens.
- Payments: SDK or hosted-flow integration, payment confirmation, cancellation, retry, refund display, and webhook testing.
- Quality: device coverage, network interruption tests, empty and error states, accessibility review, and release builds.
This path is usually easier to estimate because the business rules are narrower. Keep the first release narrow enough that inventory, payment status, and order confirmation can be tested end to end rather than mocked across many special cases.
Example 2: A regional expansion
Now assume the product adds another region, currency, delivery method, and payment option. Recalculate the integration group instead of simply adding another checkout screen. Review price formatting, currency conversion ownership, address fields, tax or shipping responses, payment-method availability, order notifications, refund behavior, and customer-support workflows.
The mobile work may be modest, but the commerce and operations work can be substantial. Add explicit estimates for contract changes, webhook updates, translation, test data, analytics events, and release review. This is where a headless commerce platform can reduce custom infrastructure, while a custom backend may offer better control if regional rules are highly specific.
Example 3: Replacing a commerce provider
Provider migration should be estimated as a data and behavior migration, not as an API URL change. Inventory identifiers, customer accounts, cart behavior, promotion rules, order history, payment references, webhooks, analytics events, and admin procedures may all change. Run both systems in a controlled test environment where possible, define the cutover plan, and include rollback or reconciliation work in the estimate.
When to recalculate
Revisit this architecture and estimate at least whenever a pricing input, payment option, commerce API, native dependency, or store requirement changes. A quarterly review is a practical rhythm for active products, with an additional review before a major release or regional launch.
Recalculate immediately when:
- A payment SDK changes its React Native, Expo, iOS, or Android support.
- Your commerce provider changes API versions, pricing, rate limits, webhooks, or checkout capabilities.
- You add currencies, countries, delivery methods, subscriptions, saved payment methods, or marketplace sellers.
- A template or UI kit introduces dependency conflicts, abandoned packages, or restrictive customization.
- Store review requirements or payment rules relevant to your app category change.
- Crash, conversion, checkout-abandonment, or support data reveals a failure path that was not in the original scope.
Use a simple review checklist: confirm provider documentation and pricing, test the payment flow in a clean build, verify webhooks and order reconciliation, inspect native dependencies, rerun critical device tests, and update the release estimate. Pair this with a documented decision log so the team knows why a commerce API, payment pattern, or React Native template was selected.
Finally, validate the complete journey—not just the happy path—from product search to confirmed order, notification, fulfillment update, cancellation, and refund. Use the React Native CI/CD workflow guide for repeatable builds and the testing and debugging comparison to plan regression coverage. A commerce stack is ready for release when its integrations, failure states, operational handoffs, and update assumptions are all visible and testable.