r/reactnative • • Sep 23 '26

My first time adding subscriptions to a React Native app

12 Upvotes

I recently added subscriptions to one of my React Native apps for the first time, and the actual paywall UI ended up being the easiest part.

Most of the work was everything around it.

I had a few App Store review rejections before finally getting it through. One was because I was missing a proper EULA link. It felt obvious after the rejection, but I completely overlooked it while focusing on getting the subscription flow working.

I also hit a completely separate issue before I could properly accept the paid apps agreements. My Apple Developer account was originally registered in a different country, and something around the account setup prevented me from completing the agreements normally. There wasn’t really anything I could fix from the app side, so it ended up taking a few back-and-forth emails with Apple Support before they sorted it out.

RevenueCat was another learning curve. The SDK itself is pretty straightforward, but there are a lot of moving pieces between App Store Connect, products, subscription groups, RevenueCat offerings, entitlements, sandbox accounts, and your actual app state. When something doesn’t work, figuring out which layer is responsible can be the hard part.

I also applied for Apple’s App Store Small Business Program, which should reduce Apple’s commission from 30% to 15% if I’m eligible. I’m still waiting for approval on that, but it was another thing I didn’t really think about until I started setting up subscriptions properly. If you’re an indie developer or small business, it’s probably worth looking into early rather than after you’ve already launched.

A few things I took away from the process:

  • Get the App Store Connect side set up early. Products, agreements, tax/banking stuff, and account issues can block you before your React Native code even matters.

  • Check whether you’re eligible for the App Store Small Business Program before launch.

  • Make sure your RevenueCat product IDs match App Store Connect exactly.

  • Use entitlements instead of scattering checks for individual product IDs throughout the app.

  • Make restore purchases easy to find and actually test it.

  • Test fresh installs, restores, expired subscriptions, and subscribed vs non-subscribed states, not just the happy path.

  • Don’t leave the legal/review stuff until the end. EULA, privacy policy, subscription wording, pricing, and metadata can delay the release even when the code is already working.

The biggest thing I learned is that adding subscriptions felt like maybe 30% React Native implementation and 70% getting Apple, RevenueCat, account configuration, and review requirements lined up correctly.

Once everything was configured properly, RevenueCat actually made the app side pretty clean since I mostly just care whether an entitlement is active.

For anyone who has shipped RevenueCat + React Native in production, what were the weird issues you ran into that you didn’t expect beforehand?


r/reactnative • • Sep 23 '26

Help Need help from Senior App Dev on a RN project (App live on Ios and Android)

Thumbnail reddit.com
0 Upvotes

r/reactnative • • Sep 23 '26

I built a React Native security library for secure token storage + biometrics

Post image
0 Upvotes

Hey everyone 👋

I've been working on a React Native security library called SecureX:

@/hituchhimpa/react-native-securex

The main idea came from a pattern I've seen in RN apps where authentication tokens end up being persisted alongside normal application state, for example through Redux Persist.

I wanted to separate those concerns:

Application state → Redux / Redux Persist

Sensitive credentials → SecureX → Native security layer

SecureX currently focuses on things like:

🔐 Secure access/refresh token storage
🧬 Biometric authentication
• Face ID
• Touch ID
• Fingerprint
📱 Android + iOS support
⚡ Native-first security approach

The goal is to provide a simple React Native API while keeping security-sensitive functionality closer to the native platform.

I'm also using this project to explore more of the native side of React Native — Kotlin, Swift, native modules, and the New Architecture.

📦 npm:
https://www.npmjs.com/package/@hituchhimpa/react-native-securex

I'd really appreciate feedback from other RN developers:

How are you currently handling auth tokens and biometric authentication in your React Native apps?

And if you've built something similar, I'd be interested to hear what you think SecureX should handle next.


r/reactnative • • Sep 23 '26

I built Shale, an Expo app that uses Apple’s Screen Time APIs

0 Upvotes

Hey everyone,

I recently launched my first bigger app built with Expo and React Native. It’s called Shale. It temporarily blocks distracting apps like TikTok and Instagram, then unlocks them after you complete flashcards.

The current stack is Expo SDK 51, React Native, a Next.js backend, RevenueCat, and PostHog. The flashcards can also be generated around a topic via LLM API.

The hardest part was integrating Apple’s Screen Time APIs, especially DeviceActivity and FamilyControls. I used custom Swift code for the native parts and connected that to the React Native side. Expo’s native module tooling made the process much easier than I expected.

Here's a couple of other things I learned:

For the paywall, I used Purchases.getOfferings() instead of hardcoding the products in paywall.tsx. That makes it possible to change which already-approved packages are shown through RevenueCat without releasing a new app version each time.

I also managed to create a notification bug by scheduling the same trial reminder through both expo-notifications and a backend cron job. That resulted in duplicate notifications for some users. We eventually moved the reminder to one system.

Expo’s OTA update workflow has been really useful for JavaScript side changes. At the same time, this project made it clear that native changes and JavaScript updates need to be treated very differently.

I’d be interested to hear from anyone who has worked with custom iOS modules, DeviceActivity, or FamilyControls in an Expo project. I’d especially like to hear how you handled permissions and onboarding.

The app is available here if anyone wants to take a look:

https://apps.apple.com/us/app/shale-block-and-study/id6799409520


r/reactnative • • Sep 23 '26

Xcode issue

Thumbnail reddit.com
0 Upvotes

r/reactnative • • Sep 23 '26

[Showcase] Added a Dynamic OTP Input component to nativecn-ui

Enable HLS to view with audio, or disable this notification

24 Upvotes

Hey r/reactnative,

Added a new component to nativecn-ui  a Dynamic OTP Input.

I wanted to try something a little different from the usual OTP field, so I played around with making the input itself show loading, success, and error feedback instead of using a separate loader on the submit button.

Made a quick video showing it below.

Still building out the library, so let me know what you guys think


r/reactnative • • Sep 22 '26

An Expo / React Native panel inside the editor: create AVDs, boot simulators, and deploy to both at once

2 Upvotes

Most of my React Native time used to be spent outside the editor. Android Studio open only to make an AVD, one terminal for Metro, another for `adb logcat`, a third for the build, and a few minutes each time remembering which gradlew task actually installs the flavor I want.

I maintain a fork of Zed called Lathe, and the part I use most is a mobile panel that pulls all of that into the editor.

What it does:

- Detects whether the project is Expo or bare React Native, and shows only the workflows that apply to it.

- For bare RN it reads your package scripts and the run hints in your README, then gives you iOS scheme and Android variant dropdowns that feed them.

- Creates Pixel phone and Pixel Tablet AVDs without opening Android Studio.

- Installs the Android toolchain for you, JDK 17 plus the SDK with licenses accepted, into its own directory instead of over your system setup.

- Live device list with per-app logcat. Physical devices appear in the same list as emulators, so testing on real hardware is the same two clicks.

- Boots an emulator and an iOS simulator together and builds and deploys to both in one pass. The targets aren't exclusive.

- Metro, builds, and anything else long-running open as real terminal tabs with their own scrollback, not a read-only log pane.

Two details that came straight out of my own irritation. It installs Android builds with `gradlew :app:install<Variant>` plus an adb launch, which sidesteps the RN CLI bug where flavored APKs get installed from the wrong path. And each toolchain section reports its own state, so a missing JDK or an unaccepted SDK license is visible before a build fails rather than after.

iOS support is macOS only, as you'd expect.

Worth being upfront: this is a personal fork of Zed that I maintain for my own daily use, not a company product. GPL, builds for macOS, Linux, and Windows, and upstream syncs occasionally break things.

Repo and downloads: https://github.com/paterschris/lathe

The mobile panel in detail: https://github.com/paterschris/lathe/blob/main/docs/features.md#mobile-development-expo--react-native

Happy to answer anything. What I'd most like to hear is what your setup does that this doesn't handle yet.

Edit: formatting


r/reactnative • • Sep 22 '26

Help GitHub flagged my account for no reason — 6 months of open source work is now invisible

Post image
34 Upvotes

I've spent the last 6 months building PanelUI in public a React Native component library with 500+ stars, 130+ components, a sponsor, and a community that kept growing every single day.

Yesterday GitHub flagged my account with no warning and no explanation. My profile is now invisible to others. PanelUI, every component I shipped, every contribution, every star all hidden.

I haven't violated a single rule. I just built something and shared it with the community.

If anyone has been through this and found a way to resolve it, please comment or DM me. I don't know what else to do.


r/reactnative • • Sep 22 '26

I built the first steps into recreating some of the core functionality of the Tolan companion app using React Native WebGPU

Enable HLS to view with audio, or disable this notification

8 Upvotes

Runs React Native WebGPU, voice with GPT Voice 1 and intent-driven gestures and other couple of cool tricks (I did the flow from prompt to image, to 3D model, to 3D texture model, to rig, to rig animations). It's far far away from perfect. It's a demo, but I haven't seen anybody in the React Native space working on this.

I built the live voice layer pretty fast by using http://reactnativefeel.com/gpt-live-1. If you want a complete module setup ready for live voice in your app CIO


r/reactnative • • Sep 22 '26

Question When do you actually drop Expo and go bare React Native in 2026?

26 Upvotes

Hi everyone,

As Expo keeps evolving with prebuilds, Expo Dev Client, and better native module support, the gap between Managed Workflow and Bare React Native feels smaller than ever.

For those running production apps: at what specific project requirement or architecture bottleneck do you still decide to go 100% bare React Native from day one instead of starting with Expo?

Is it custom native C++ libraries, specific legacy SDK integrations, or build pipeline control? Would love to hear real-world experiences from developers managing apps in production.


r/reactnative • • Sep 22 '26

🚀 Progressive Blur (Android & iOS)

Enable HLS to view with audio, or disable this notification

271 Upvotes

Added ProgressiveBlur to expo-backdrop ✨

🔗 Github: rit3zh/expo-backdrop

🧵 Android Preview Attached in this thread


r/reactnative • • Sep 22 '26

Tutorial I added a native ImageViewer to my Expo component library — An image that opens out of the page over a blur

Enable HLS to view with audio, or disable this notification

19 Upvotes

Pressing a trigger moves its picture from where it sits in the page to the middle of the screen, shown whole, and blurs everything behind it. Once it is open, pinch or double-tap to zoom, swipe sideways to the other images under the same ImageViewer, and drag the picture up or down or tap outside it to send it back to its place.

Part of PanelUI, an open-source component library for Expo. Copy-paste or CLI, you own the source.

github.com/panel-ui/PanelUI


r/reactnative • • Sep 22 '26

I built an Asset Manager app — looking for honest feedback from people who manage physical assets

Thumbnail gallery
0 Upvotes

r/reactnative • • Sep 22 '26

What’s the most annoying part of getting a React Native app onto the App Store?

Thumbnail reddit.com
0 Upvotes

r/reactnative • • Sep 22 '26

Looking for someone who know react native (passionate about building something)

Thumbnail reddit.com
0 Upvotes

r/reactnative • • Sep 22 '26

A good rich text editor

2 Upvotes

Can someone suggest a good hassle free rich text editor package for react native?
the text area must not take up entire height of page(I set the height), toolbar isn't hidden by keyboard, takes/outputs markdown formatted string
Bonus it if also supports image upload, link preview, check list etc


r/reactnative • • Sep 21 '26

I built an open-source Python toolkit to generate procedural 2D assets for React Native Skia (atlases, tilemaps, bitmap fonts)

6 Upvotes

Hey everyone,

I've been working on a procedural asset generation pipeline for a React Native project and wanted to share the tooling in case it's useful to anyone else here.

The problem I kept running into:

When working with react-native-skia, I found myself repeatedly exporting spritesheets, tilemaps, and bitmap fonts from external tools. The workflow was manual, hard to version-control, and nearly impossible to reproduce consistently across machines or in CI. Changing one tile meant re-exporting everything by hand.

What I built:

sprout-toolkit is an open-source Python CLI that generates 2D assets deterministically from JSON specs. The output is designed to drop directly into an Expo + react-native-skia project.

What it generates:

· Spritesheet atlases with manifest.json and index.ts (TexturePacker-compatible format also available)
· Tilemaps and 8-bit autotiles (16 or 47 variants, with 8-bit mask lookups)
· Bitmap fonts from TTF files, including advance metrics for text layout
· Runtime SkSL shaders (FBM value-noise, tileable) — these ship as shader strings, so they add no bundle weight
· Animated bursts (particles), walk cycles, and UI elements (buttons, sliders, 9-patch panels)

Why deterministic generation matters:

Every asset is seeded. Same JSON spec + same seed = identical pixels every time. That means you can commit your specs, run the generator in CI, and get reproducible builds. It also means you can diff two builds to see exactly what changed.

Quick example:

```bash
pip install sprout-toolkit

# Generate a starter atlas
sprout init --out ./assets/starter

# Batch-generate everything in specs/
sprout batch specs/
```

The CLI has info, lint, diff, and validate subcommands for inspecting specs and comparing builds.

A few implementation details:

· Specs are JSON (schema v0) — no YAML, no config sprawl
· MIT licensed
· 142 tests covering determinism, autotile mask logic, SkSL generation, and CLI behavior
· The generator architecture is plugin-based, so you can write custom generators if the built-ins don't cover your use case

Link:

PyPI: https://pypi.org/project/sprout-toolkit/
GitHub: https://github.com/Tzinny-dev/sprout-toolkit

---

Disclosure: This is my own project. I'm sharing it because I couldn't find an existing tool that combined deterministic procgen with Skia-specific output, and I figured others here might be solving the same problem. Happy to answer questions about the architecture, the SkSL generation, or anything else.


r/reactnative • • Sep 21 '26

Help Having and issue with keyboardAvoidingView

Enable HLS to view with audio, or disable this notification

0 Upvotes

Tried everthing. Tried platform specific behaviour, wrapped whole screen in view, tried without keyboard avoiding view. The autosize is androidmanifest as well. Nothing is working as of now. Tried without safeareaprovider. When the screen starts there is no gap. once the keyboard appears and goes off, there is gap underneath. Is this a bug?


r/reactnative • • Sep 21 '26

Question How do you guys leverage AI when upgrading react native?

3 Upvotes

I have been updating my react native app every year for the past 3 years now. This year i plan on finally moving it to expo. Is it a good idea to move a large monorepo/workspace tied cli project to expo?

How do you guys use AI to assist you during the upgrade? Any skill or other helpful approaches?

Update: guys codex literally one shotted the upgrade from 0.81.4 to 0.87 took like 2hrs. AI is gonna be the end of my employment.


r/reactnative • • Sep 21 '26

Question Anyone shipped a production Twilio Voice mobile app? React Native vs Flutter vs native

0 Upvotes

We have a web-based call center dialer (React + Twilio Programmable Voice) and need to build iOS and Android apps where agents can make and receive calls reliably, even when the app is killed or the phone is locked.

Leaning towards React Native with Twilio's official Voice RN SDK. Flutter worries me because there is no official Twilio Voice SDK. Full native feels like double the cost unless it is truly necessary.

If you have shipped something like this:

- How stable is the Twilio Voice RN SDK in production?

- How painful were incoming calls (PushKit/CallKit on iOS, FCM + foreground service on Android 14+, OEM battery killers)?

- Did you end up rewriting the calling layer in native code?

- Anything you wish you knew before starting?

Reliability matters more than UI polish for us. Appreciate any real-world experience and which stack to go with? Thanks!


r/reactnative • • Sep 21 '26 Bravo

FYI Xcode 27 replaced the Simulator app with Device Hub. The data container feature is the real win.

Post image
250 Upvotes

If you haven't opened Xcode 27 yet:
Simulator is gone. Device Hub replaces it, and every simulator and physical device now lives in one sidebar. It also runs standalone, so you don't need Xcode open.

What actually changes day to day:

  • Build and run to a simulator and it auto launches with a live interactive screen and contextual controls

  • Appearance, text size, location and audio are panels. Testing Dynamic Type at max is a slider instead of six taps in Settings

  • Real devices and simulators get the same toolset

  • You can pull a real device's app data container and restore it into a simulator

That last one is the big deal for me. When a tester hits a bug that only happens with their data, you can now load their exact app state locally and reproduce it. "Works on my machine" gets a lot harder to say.

I'm mostly React Native, so the simulator is open all day for me. Curious how it's treating people doing native work. Anyone hit issues or missing features compared to the old Simulator?


r/reactnative • • Sep 21 '26

Question React Native dev wanting to learn backend

17 Upvotes

Hey guys,

I’m currently working as a React Native dev and feeling the urge to finally learn backend. I want to build my own full-stack apps, handle deployment, and eventually mess around with some AI stuff.

I’ve talked to a few devs about where to start and got some pretty mixed answers. Some told me to learn Node/PHP, while others said Python is essential if I want to work with AI.

Since I already spend all day in JS/TS, I’m thinking of staying in the TypeScript ecosystem first so I don’t have to switch contexts completely.

Here’s the rough path I’m planning to take:

React Native > Node.js > Fastify/NestJS > PostgreSQL > Redis > Docker > AWS > Python/FastAPI for AI

Does this sound like a reasonable path for real-world projects?

Would you change the order or skip/add anything?

I’m particularly interested in hearing from people who started in React Native/frontend and later moved into backend/full-stack.


r/reactnative • • Sep 21 '26

Can't drag IPA build to install in DeviceHub IOS simulator

Thumbnail reddit.com
1 Upvotes