For web SaaS teams

A native app for your web SaaS

You already run a web product, with its own accounts, billing and API. ReadyNative is an Expo app for iOS and Android that connects to those. It does not turn your website into an app: you build the screens.

Customers sign in with the accounts they already have

Sign-in is a module you pick at setup. It reads the keys of the provider your web app already uses, so the app and the web share one list of users. ReadyNative ships three:

Another provider means writing an auth module, not pasting keys. The module spec describes what one is: module spec.

Your API stays where it is

The app is a client of the API your web app already calls. The data layer you pick decides how it calls it, and every option reads its base URL from EXPO_PUBLIC_API_URL:

Credentials are the part to check. The app sends its session with each request: a Supabase or Clerk access token as a bearer header, or the Better Auth session cookie. The server asks the provider who the caller is, so an endpoint that reads a different cookie or token needs a change.

For server code the app needs, such as the Stripe webhook, use API routes: files in src/app/api, deployed with the app to EAS Hosting or a Node host. A native release build needs EXPO_PUBLIC_API_URL to point at that deployed server, not at localhost.

One pro entitlement on the web and in the store

The store and the web are two billing rails. ReadyNative documents running both and treating either as Pro. Setup picks one payments option, so the two-rail version is a guide you follow by hand, copying from the example app.

Where the boundaries are

Read the web checkout guide, or add a paywall for the store rail alone.

What you still build

What this is not: a tool that turns your website into an app. ReadyNative is an Expo app with the plumbing done. You build your product’s screens on it, in React and TypeScript, against the API your web app already calls.

Wrapper, PWA or native screens

Three ways to put a product on a phone. Each is the right answer for some teams.

WrapperPWANative screens (ReadyNative)
What runs on the phoneYour website in a native app shellYour website, installed from the browserAn Expo app; you write its screens in React Native
Store listingListed in the App Store and Google PlayNot listed in either storeListed: EAS builds and submits it
Sign-inYour web sign-in, inside the appYour web sign-in, in the browserYour provider’s keys: Supabase, Clerk or Better Auth
In-app purchaseNeeds native codeNot availableRevenueCat or Adapty, with the paywall wired
PushNeeds native codeWeb push, where the browser allows itExpo push, wired
ScreensYour web screensYour web screensNative screens you build
Effort to a first buildLowestLowestHighest: your screens are the work
Pick it ifYou need an internal tool, or a quick test of demandYour mobile web already works, and you need no store listing or in-app purchaseYou want the stores, in-app purchase and push, with native screens

The wrapper and PWA columns describe those platforms in general; ReadyNative ships neither. The native column is backed by the module docs linked on this page.

Questions

We’re a web team, not mobile developers. Can we do this?

If your team writes React and TypeScript, yes. The app is Expo: screens are React components, navigation is files in src/app, and store builds run in Expo’s cloud, so nobody has to open Xcode. What is new is the platform itself, and the docs and the two example apps cover it.

Read the Quickstart
Will Apple let us sell our web plan in the app?

Within rules. Digital subscriptions sold inside an iOS app go through in-app purchase (App Review guideline 3.1.1), which is why the paywall is RevenueCat or Adapty. On the US storefront the app may link to your web checkout; elsewhere that needs Apple’s external purchase entitlement, and the web checkout guide shows the storefront check that hides Stripe where it is not allowed. This is a summary, not legal advice: read the guidelines for your markets.

Add web checkout next to the App Store
Who keeps it working when Expo and the SDKs update?

Your purchase includes lifetime updates. Releases are tagged v<version>-sdk<Expo major>, the changelog says what changed, and the update guide walks through pulling a release into an app that already ran setup.

Update from upstream
Do we have to change our backend?

Not for the screens: the app calls the API you already run, through the data layer you pick. Two things can need a change. Your endpoints must accept the token the app sends (a Supabase or Clerk access token, or the Better Auth session cookie). Server code the app needs, such as the Stripe webhook, goes in API routes in the app’s repo, not in your web backend.

API routes
Why not wrap our web app in a web view?

A wrapper is the fastest route, and for an internal tool it may be enough. Its screens still behave like the website, and push and in-app purchase need native code either way. ReadyNative is the other trade: native screens you build in React, with push, in-app purchase and store releases wired. It does not convert your site; you write the screens.

Can the whole team work on it?

A Pro license covers up to 5 developers in one company, employees or contractors. They get access to the private repository on GitHub.

License terms

Your customers already have accounts.

Give them the app on the sign-in and billing they already use. Start with setup, your keys and one screen.

Get Pro · Add sign-in

The modules on this page, each with its own page: Supabase · Clerk · Better Auth · TanStack Query · SWR · Apollo · RevenueCat · Adapty · Stripe · Expo Notifications · API routes. Every module.