React Native mobile for B2B SaaS teams
Companion apps for power users with fast session continuity, push that respects tenant timezones, and a release cadence that doesn't block the web team.
Domain context
Mobile in B2B SaaS is rarely the primary surface. It's the companion app a sales rep opens between meetings, the approval queue a manager clears from a taxi, the alert console an on-call operator checks at 2am. That framing changes the engineering brief. The job isn't feature parity with the web app. The job is the five workflows a power user needs to do without sitting down at a laptop, executed faster than the mobile web equivalent, with session continuity that survives a flight and a push notification system that respects the tenant's own working hours instead of waking up half the customer base at the wrong local time. Get that wrong and the app sits at one star with reviews that stay there for a year. Get it right and it's the surface that drives renewal conversations.
Why this combination
Generic React Native shops will give you a mobile shell that mirrors the web app, ships under a single binary, and looks fine at the demo. SaaS-specific React Native gives you a companion app that respects everything that makes a multi-tenant B2B product different. The same entitlements model that gates web features has to gate mobile features without duplicating logic. Push notifications have to route through tenant-level preferences and timezone-aware quiet hours, not the device default. Deep links have to resolve into the right tenant context when a CSM is impersonating across accounts. Single sign-on has to work with the customer's own identity provider, not a hardcoded auth flow. These are domain decisions, made early, by an engineer who has shipped a B2B SaaS companion app before.
“We shipped a companion app for a multi-tenant project management SaaS with the five most-used power-user workflows, push that obeyed each tenant's working-hours policy, and crash-free sessions above 99.9% on both platforms inside 90 days.”
Frequently asked
- Companion apps for B2B SaaS are usually maintained by a small subset of the product engineering team, not a dedicated mobile org. Two native codebases mean every feature ships twice, which the web roadmap won't tolerate. React Native, with a thin native bridge for the few capabilities that actually need it (biometric unlock, push, deep links), gives you a single codebase the web team can keep current without a separate mobile hire.
- Mobile SSO usually means SAML or OIDC against the customer's own IdP, not a hosted login screen we control. We use the platform-native browser auth flow (ASWebAuthenticationSession on iOS, Custom Tabs on Android) so password managers and IdP cookies work, store refresh tokens in the platform keystore, and respect the tenant's session-length policy. The same auth flow handles step-up authentication for sensitive actions without rewriting the surface.
- Routed server-side, with tenant-level preferences as the source of truth. The mobile app doesn't decide when to show a notification; it renders what the server sent. The server respects each tenant's timezone-aware quiet hours, the user's own per-channel preferences, and a global rate limit that prevents a noisy integration from waking up the entire customer base. Deep links inside the notification resolve through the entitlements layer, not directly to a screen.
- Offline-first is rarely worth the complexity in a SaaS companion app. Session continuity is. The user expects the app to remember exactly where they were after a backgrounded hour, an aircraft-mode toggle, or a process kill. Not to reload from the dashboard. We persist navigation state and form drafts to disk on every meaningful change, and only attempt true offline write queueing for the specific workflows where it earns its weight.
- Decoupled release trains. The web app ships behind a feature flag; the mobile app ships when the App Store and Play Store reviewers say so. We design the API contracts so an older mobile build and a newer web build coexist without breaking, version the entitlements payload, and use OTA updates (CodePush or EAS Update) for non-native bug fixes so a critical fix doesn't wait two weeks for store review. The mobile release plan never gates a web feature.