[Question] Best approach for Stripe payments in Expo/React Native mobile apps? #2823

Open
opened 2026-03-13 10:22:22 -05:00 by GiteaMirror · 2 comments
Owner

Originally created by @issam-seghir on GitHub (Feb 4, 2026).

Question

I'm building an Expo/React Native mobile app (ebook store) and I'm using Better Auth for authentication. I want to integrate Stripe for payment processing and I'm unsure about the best approach.

Context

  • Platform: Expo SDK 54+ / React Native (Android & iOS)
  • Use Case: One-time digital book purchases (not subscriptions)
  • Backend: tRPC + Supabase + Drizzle ORM
  • Auth: Better Auth with @better-auth/expo plugin working

My Question

Should I use:

Option A: Better Auth Stripe Plugin (@better-auth/stripe)

import { stripeClient } from "@better-auth/stripe/client"

export const authClient = createAuthClient({
    plugins: [
        expoClient({ scheme: "myapp", storage: SecureStore }),
        stripeClient({ subscription: true })
    ]
})

Concern: From the docs, methods like authClient.subscription.upgrade() redirect to Stripe Checkout URLs. This seems problematic for mobile apps since:

  • Web redirects don't provide native mobile UX
  • In-app browsers are not ideal for payments
  • Apple/Google have strict guidelines about payment flows

Option B: Use @stripe/stripe-react-native separately

// Use Better Auth only for authentication
// Use Stripe React Native SDK for native Payment Sheet
import { useStripe } from '@stripe/stripe-react-native';

const { initPaymentSheet, presentPaymentSheet } = useStripe();

This provides native payment UI but requires separate integration outside Better Auth.

Questions

  1. Is the @better-auth/stripe plugin designed to work well with Expo/React Native?
  2. Does it support native mobile payment UX (not web redirects)?
  3. For one-time purchases (not subscriptions), what's the recommended approach?
  4. Should I use Better Auth Stripe plugin + @stripe/stripe-react-native together, or choose one?

Environment

  • Better Auth version: latest
  • @better-auth/expo: latest
  • Platform: Expo SDK 54+
  • Payment type: One-time purchases (digital books)

Thank you for the clarification! 🙏

Originally created by @issam-seghir on GitHub (Feb 4, 2026). ## Question I'm building an **Expo/React Native** mobile app (ebook store) and I'm using Better Auth for authentication. I want to integrate Stripe for payment processing and I'm unsure about the best approach. ## Context - **Platform:** Expo SDK 54+ / React Native (Android & iOS) - **Use Case:** One-time digital book purchases (not subscriptions) - **Backend:** tRPC + Supabase + Drizzle ORM - **Auth:** Better Auth with `@better-auth/expo` plugin ✅ working ## My Question Should I use: ### Option A: Better Auth Stripe Plugin (`@better-auth/stripe`) ```typescript import { stripeClient } from "@better-auth/stripe/client" export const authClient = createAuthClient({ plugins: [ expoClient({ scheme: "myapp", storage: SecureStore }), stripeClient({ subscription: true }) ] }) ``` **Concern:** From the docs, methods like `authClient.subscription.upgrade()` redirect to Stripe Checkout URLs. This seems problematic for mobile apps since: - Web redirects don't provide native mobile UX - In-app browsers are not ideal for payments - Apple/Google have strict guidelines about payment flows ### Option B: Use `@stripe/stripe-react-native` separately ```typescript // Use Better Auth only for authentication // Use Stripe React Native SDK for native Payment Sheet import { useStripe } from '@stripe/stripe-react-native'; const { initPaymentSheet, presentPaymentSheet } = useStripe(); ``` This provides native payment UI but requires separate integration outside Better Auth. ## Questions 1. **Is the `@better-auth/stripe` plugin designed to work well with Expo/React Native?** 2. **Does it support native mobile payment UX (not web redirects)?** 3. **For one-time purchases (not subscriptions), what's the recommended approach?** 4. **Should I use Better Auth Stripe plugin + `@stripe/stripe-react-native` together, or choose one?** ## Environment - Better Auth version: latest - @better-auth/expo: latest - Platform: Expo SDK 54+ - Payment type: One-time purchases (digital books) Thank you for the clarification! 🙏
GiteaMirror added the expoquestion labels 2026-03-13 10:22:22 -05:00
Author
Owner

@better-auth-agent[bot] commented on GitHub (Feb 4, 2026):

Hello! Here are responses to your questions regarding the integration of Stripe for one-time payments in your Expo/React Native mobile app using Better Auth.

  1. Is the @better-auth/stripe plugin designed to work well with Expo/React Native?

    • The @better-auth/stripe plugin integrates Stripe's payment and subscription functionality with Better Auth, and it can simplify integration for authentication. However, its main design is geared towards handling subscriptions and related webhooks, which might not align perfectly with your use case for one-time purchases.
  2. Does it support native mobile payment UX (not web redirects)?

    • Based on the usage of the Stripe plugin, workflows such as authClient.subscription.upgrade() direct users to Stripe Checkout URLs, which can be problematic for mobile UX due to web redirects. This indicates that it may not provide the native mobile experience desirable for transactions, making it less suited for in-app purchases [1].
  3. For one-time purchases (not subscriptions), what's the recommended approach?

    • It would be advisable to utilize the @stripe/stripe-react-native for processing one-time payments. This SDK provides support for a native payment UI that enhances the user experience by avoiding web-based redirects.
  4. Should I use Better Auth Stripe plugin + @stripe/stripe-react-native together, or choose one?

    • Given your focus on one-time purchases, it would be best to use @stripe/stripe-react-native separately for payments. You can still utilize Better Auth for authentication, but managing payments outside of the Stripe plugin will likely lead to a more seamless experience for users.

How do you plan to proceed with these options or integrate them into your existing architecture? If you have any more questions, feel free to ask!

If you need more help, tag @better-auth-agent in a comment so I can respond.

DiagramDiscordGitHub

Diagram Join Star

@better-auth-agent[bot] commented on GitHub (Feb 4, 2026): Hello! Here are responses to your questions regarding the integration of Stripe for one-time payments in your Expo/React Native mobile app using Better Auth. 1. **Is the `@better-auth/stripe` plugin designed to work well with Expo/React Native?** - The `@better-auth/stripe` plugin integrates Stripe's payment and subscription functionality with Better Auth, and it can simplify integration for authentication. However, its main design is geared towards handling subscriptions and related webhooks, which might not align perfectly with your use case for one-time purchases. 2. **Does it support native mobile payment UX (not web redirects)?** - Based on the usage of the Stripe plugin, workflows such as `authClient.subscription.upgrade()` direct users to Stripe Checkout URLs, which can be problematic for mobile UX due to web redirects. This indicates that it may not provide the native mobile experience desirable for transactions, making it less suited for in-app purchases [[1]](https://www.better-auth.com/docs/plugins/stripe). 3. **For one-time purchases (not subscriptions), what's the recommended approach?** - It would be advisable to utilize the `@stripe/stripe-react-native` for processing one-time payments. This SDK provides support for a native payment UI that enhances the user experience by avoiding web-based redirects. 4. **Should I use Better Auth Stripe plugin + `@stripe/stripe-react-native` together, or choose one?** - Given your focus on one-time purchases, it would be best to use `@stripe/stripe-react-native` separately for payments. You can still utilize Better Auth for authentication, but managing payments outside of the Stripe plugin will likely lead to a more seamless experience for users. How do you plan to proceed with these options or integrate them into your existing architecture? If you have any more questions, feel free to ask! _If you need more help, tag @better-auth-agent in a comment so I can respond._ <!-- bot:webhook reply v1 --> [Diagram](https://repodiagrams.s3.eu-north-1.amazonaws.com/better-auth_ultra_detailed_interactive.html) • [Discord](https://discord.gg/better-auth) • [GitHub](https://github.com/better-auth/better-auth) [![Diagram](https://img.shields.io/badge/Diagram-2b3137?style=flat-square)](https://repodiagrams.s3.eu-north-1.amazonaws.com/better-auth_ultra_detailed_interactive.html) [![Join](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&style=flat-square)](https://discord.gg/better-auth) [![Star](https://img.shields.io/badge/star-181717?logo=github&logoColor=white&style=flat-square)](https://github.com/better-auth/better-auth)
Author
Owner

@bytaesu commented on GitHub (Feb 5, 2026):

-> Related to https://discord.com/channels/1288403910284935179/1465848520635322389

@bytaesu commented on GitHub (Feb 5, 2026): -> Related to https://discord.com/channels/1288403910284935179/1465848520635322389
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#2823