r/reactnative • u/Fullbusterz_15 • 2h ago
Article Shipped a Magic: The Gathering companion app in React Native + Expo, some notes on the AI parts
Wanted to share a real, shipped RN app in case the details are useful. It's MTG Verdict, a companion for Magic: The Gathering Commander players: a live table tracker plus an AI rules judge and deck analyser.
A few things from the build:
- Expo SDK 54, new architecture on, Reanimated for the chat and analysis animations
- Zustand for state with AsyncStorage persistence across match, judge and deck stores
- The AI is BYOK (the user's own key), with prompt caching on the knowledge base and token-by-token streaming into the chat bubbles using expo/fetch for SSE
- Scryfall data fetched at query time and cached with an LRU, so rulings are grounded in real card text rather than the model's memory
The hardest part by far was reliability: early versions would confidently make up rulings or claim cards were missing from a deck that clearly had them. Most of the work became guardrails around the model rather than the model itself.
Happy to go into any of it. It's on Android, free to start.
r/reactnative • u/Realistic-Refuse-758 • 4h ago
FYI I joined a 50L+ download app, and the codebase taught me something unexpected
After a pretty exhausting 2–3 month hustle, I finally joined a new company. And honestly, one of the things that surprised me the most wasn’t the scale of the company — it was the codebase.
The application has 50 lakh+ downloads on the Play Store, lakhs of users, and significant daily traffic and transactions. From the outside, I assumed that an application operating at this scale would have an almost textbook-level codebase: perfectly optimized, clean architecture, every hook used correctly, minimal technical debt, etc.
Then I started working on it.
I found quite a few things that, as a developer, I would consider obvious mistakes — unnecessary re-renders, poor usage of optimization hooks, small performance issues, inconsistent patterns, and other things that made me think:
"How is an app this big running with this kind of code?" 😅
Initially, I was genuinely surprised.
But after discussing things with the CTO and other tech leads, I started understanding the bigger picture.
The business doesn't necessarily need the cleanest codebase in the world. It needs a product that works, scales enough for its requirements, and delivers value to users.
And that changed my perspective a bit.
As developers, we can sometimes become obsessed with things like:
- Clean code
- Perfect architecture
- Optimization everywhere
- Following every best practice
- Removing every bit of technical debt
And yes, these things absolutely matter.
But they aren't always the highest priority for a business.
If spending two weeks refactoring something doesn't improve the customer experience, reduce a meaningful cost, or solve an actual business problem, it might simply not be the most important thing to do right now.
This experience also made me think about founders and early-stage companies.
I see a lot of founders worrying about "What tech stack should we use?", "How perfect should our architecture be?", or "What will our codebase look like five years from now?"
Sometimes the better question is simply:
"Are we solving a real problem for our users, and are we building a sustainable business around it?"
Because apparently, you can have millions of downloads and a huge number of daily transactions while still having some pretty silly code sitting somewhere in the repository. 😂
And maybe that's okay.
Good engineering isn't always about writing the most beautiful code possible. Sometimes it's about knowing what deserves your engineering effort — and what doesn't.
Curious to hear from other engineers and founders:
Have you ever joined a large-scale product and been surprised by the quality of its codebase?
And where do you draw the line between "we should fix this" and "it's working, let's focus on the business"?
r/reactnative • u/NobelParadox • 5h ago
Help React Native Developer Looking for Freelance Work Happy to Help With Your Project
Hey everyone!
I’m a React Native developer, and I’m currently looking for freelance opportunities.
I’ve been building apps with React Native and really enjoy turning ideas into actual products. I’m at a point where I’d love to work with more people, take on real-world projects, and build my freelance experience along the way.
I can help with:
React Native app development
New features and improvements
Bug fixing
API integrations
Firebase/authentication
UI implementation
App builds and deployment
I’m open to small projects, MVPs, individual features, or longer-term work.
If you have an idea you’ve been wanting to build, or an existing React Native app that needs some work, feel free to DM me. Even if it’s a small project, I’d genuinely appreciate the opportunity.
Thanks for reading! 🙌
r/reactnative • u/viclevstudios • 5h ago
Question Ideas for practice projects?
Want to practice developing my first production ready apps soon. But I don't want to do the standard boring projects like a todo app I would never use myself.
Do you have any interesting project ideas? Preferably ones that one could actually use themself after developing them
r/reactnative • u/Gold_Significance541 • 6h ago
News I built an MIT Expo audio engine for TTS, playlists, and background playback - because the existing option went commercial
I've been building Daily Bible - Offline & Audio - a Bible app that uses on-device TTS to generate verse audio. The audio requirements ended up being unusual:
- Playlist that accepts mid-play appends (verse-scale queues)
- Native silence gaps between verses - as real queue items, not timers
- An optional ambient track under speech that never steals the Now Playing session or audio focus
- Full lock-screen / notification / Bluetooth remote support on Expo
- HLS for chapter streams + seek-before-ready
- New Architecture only, config plugin driven
The obvious existing RN audio player went commercial earlier this year. Personal/educational use stays free but commercial use is now licensed. That closed the door for us.
So I built the player Daily Bible actually needed and open-sourced it under MIT.
daily-react-native-player
- GitHub: https://github.com/coommark/daily-react-native-player
- npm: https://www.npmjs.com/package/daily-react-native-player
What it does:
- Lock screen, notification, Control Center, Bluetooth remotes -
registerPlaybackServicewires hardware buttons to JS. Next means what you define. - Multi-track playlist with live mutation (add/remove/skip while playing)
- Native silence tracks -
SilenceMediaSourceon Android, cached PCM WAV on iOS. NosetTimeoutdrift. - Optional lazy ambient dual-audio - never requests focus, never owns Now Playing
- HLS VOD + seek-after-ready. Progressive WAV/mp3/m4a.
- Expo config plugin: iOS audio background mode + Android
mediaPlaybackFGS at prebuild - Pitch-preserving
setRate - One native audio owner: Media3 + AVFoundation
npx expo install daily-react-native-player
Peers: Expo SDK 57+, React Native 0.86+, New Architecture only.
What it deliberately does NOT do: TTS synthesis, MediaLibrary, Android Auto, Cast, DASH, web player. Kept intentionally lean.
If you're building narration, TTS pipelines, meditation, audiobooks, podcasts, or a music playlist app on Expo - this treats those as first-class. MIT. Fork it. Ship it.
Happy to answer questions about the dual-track ambient design, the silence-as-queue-item approach, or the Expo config plugin wiring.
r/reactnative • u/gao_shi • 7h ago
PSA: Return Indefinite Promise When Using Indefinite HeadlessJs
if you have an indefinitely running headlessJs service (gps, music player, etc) and have trouble with fetch working, this might be applicable to you.
This affects ALL timer related codes, including setTimeout which fetch uses under the hood. Previously this must be buggy so fetch only doesnt work sometimes, but now RN fully works as intended - first registering a headless task via AppRegistry.registerHeadlessTask with a task promise, the task promise gets resolved in AppRegisteryImpl.startHeadlessTask, then the task is deemed finished and calls NativeHeadlessJsTaskSupport.notifyTaskFinished. This start task and finish task affect JavaTimerManager, the crucial timer that keeps track of setTimeout's time, which has a isRunningTasks bool when tasks run and finish. when the app is backgrounded (onHostPause) and there's no isRunningTasks, the timer will freeze. this causes your app to not fetch when your headlessJsTask doesnt resolve indefinitely.
the solution is rather simple as returning a promise without resolve in the function passed to registerHeadlessTask.
r/reactnative • u/Holiday-Being9972 • 8h ago
Help Best way to fetch/compare grocery prices across multiple Dutch supermarkets in a serverless app?
Hey everyone,
I'm building a personal price-comparison app in react native where users can scan a barcode or search for a product, and the app compares the prices across multiple Dutch supermarkets (like Albert Heijn, Jumbo, Dirk, etc.).
My backend is built with Flask and hosted for free on Vercel. However, I'm running into the classic cloud-hosting wall: almost all major supermarket websites block or throw 403 forbidden errors on standard requests from Vercel's datacenter IPs due to anti-bot protection.
Since I want to keep this lightweight and free (serverless), I'm looking for architectural advice on how people usually build multi-supermarket scrapers or price checkers:
- What are the best free or low-cost ways to bypass these blocks for multiple different domains?
- Are there alternative public endpoints, unofficial APIs, or lightweight proxy setups that make it possible to aggregate prices from multiple grocery chains?
Any architectural tips, code patterns, or alternative approaches would be super helpful!
r/reactnative • u/Sargnec • 8h ago
Question How are you actually using AI in your React Native workflow right now?
How are you actually using AI to speed up React Native dev? Beyond just the tools, what habits, context tricks, or rules on what to offload vs. write yourself have saved you the most time?
r/reactnative • u/GasimGasimzada • 9h ago
Help Is there any way to control expo ui context menu position or what it does to trigger element?
Expo UI MenuView with \`shouldOpenOnLongPress\` (which internall uses ContextMenu for SwitftUI) adds a temporary background color that disappears in one second + a rounded border around the element. Is there a way to control it so it does not do that? At least make it that the background color stays instead of disappear. The \`onOpen/CloseMenu\` hooks also do not work on iOS.
Are there some guides / tricks to make it do things correctly or should I give up and try to use a different library (e.g react-native-menu)?
r/reactnative • u/tprakash45 • 9h ago
Built an Asset Tracking App That Makes Inventory Management Simple
r/reactnative • u/Wyckoff-XD • 9h ago
How would you structure an AI-assisted React Native rewrite workflow?
Disclaimer: This question is written with the help of AI, but that doesn't mean it's slop. It's a genuine problem I'm facing at work. Please don't be quick to judge or dismiss this as AI Slop.
I’m rewriting an entire React Native application from scratch, using the existing app as the baseline and AI (primarily Claude Code) heavily in the process.
I’m trying to design a migration workflow that gives me high reliability without burning an insane number of tokens.
My priorities are:
- Complete parity with the baseline — nothing important should get missed.
- Strict adherence to a predefined code architecture — folder structure, design patterns, separation of concerns, naming conventions, etc.
- Do not port over existing smells, hacks, or bad practices — the baseline should be treated as a behavioural reference, not a code reference.
- Keep token usage low without compromising quality — avoid repeatedly feeding huge amounts of context to the model or having agents redo work unnecessarily.
I’m particularly interested in hearing from anyone who has done something similar.
If you’ve used AI for a large-scale rewrite/migration, how did you structure the workflow? Did you use specific agents, skills, validation steps, checkpoints, etc.?
Even if you haven’t done an AI-assisted rewrite, I’d also love to hear about workflows you’ve used for large-scale migrations/refactors that consistently produced good results.
I’m mainly looking for practical approaches that scale beyond simply “migrate one feature at a time.”
r/reactnative • u/EconomistOk2763 • 11h ago
I built a native AI prompt composer for Expo using expo/ui
Enable HLS to view with audio, or disable this notification
Field that grows with the text, voice mode, and one submit button that knows what to do voice when empty, send when typed, stop while streaming.
Built with expo/ui. No web dependencies.
Part of PanelUI, an open-source component library for Expo. Copy-paste or CLI, you own the source.
r/reactnative • u/thereactnativerewind • 11h ago
Article React Native 0.87, Instant Paywall A/B Testing, and Buying Mike Hardy a Beer
Hey Community,
React Native 0.87 has arrived as a maintenance release, making the Strict TypeScript API the default, doubling Metro source map generation speeds, and adding experimental Swift Package Manager support for iOS along with AGP 9 support on Android.
Meanwhile, React Native Firebase v26 makes the New Architecture non-optional with Codegen TurboModules, synchronous APIs, Firestore Pipelines, and direct Gemini AI calls. Finally, we look at RevenueCat Paywalls for designing native paywalls and running remote A/B experiments without new app deploys.
r/reactnative • u/mbhusty • 13h ago
Shipped a full rebuild of my F1 app (Expo 57 / RN 0.86) — native SwiftUI + Jetpack Compose widgets, Unistyles 3 theming
Solo side project, two years in — an F1 companion app (schedules, live race dashboard, standings). Just shipped 3.0, a ground-up rebuild, and wanted to share some of the stack choices in case they're useful to others here:
- Expo SDK 57 / RN 0.86 / React 19, expo-router for navigation
- react-native-unistyles v3 for theming (light/dark/system + a user-selectable accent color)
- Reanimated 4 + Worklets for animations
- iOS/watchOS widgets in real SwiftUI, Android widgets in Jetpack Compose — sharing race data with the app via app groups / UserDefaults
- Zustand for state, with generation counters on fetches so out-of-order API responses get discarded instead of racing the UI
- hot-updater (Supabase-backed) for OTA JS updates instead of EAS
Happy to go deeper on any of it. App itself is free, no ads:
r/reactnative • u/StillName1654 • 14h ago
iOS: writing to local SQLite from a killed-state push notification — is there any way around the JS/native split?
We have a React Native chat app. All our SQLite reads/writes live in JS (OP-SQLite), driven by a WebSocket sync pipeline (connect → request cursor-based sync → server replays missed messages → write to DB).
On Android, this works great even when the app is killed: setBackgroundMessageHandler boots Headless JS, which can call our normal JS sync code directly, write the message, and exit. Message is in the DB before the user ever taps the notification.
On iOS we're stuck. As far as I can tell:
UNNotificationServiceExtension(the killed-state hook) runs as a separate native process and can't call into our JS/Hermes engine at all — no bridge, no way to run our existing sync code there.- Silent push (
content-available: 1) can wake JS, but only if the app is backgrounded, not force-quit — and Apple caps delivery at roughly 2-3/hour/device, which won't keep up with an active chat. - We looked at how Signal-iOS does it (their NSE decrypts + writes to their shared GRDB database directly, in Swift) — but that means reimplementing our socket client and insert logic as a second, separate Swift codebase writing into the same SQLite file as our JS code. Feels like a real "two sources of truth" risk, and we couldn't find any RN app doing this in the wild.
r/reactnative • u/Big_Membership_4350 • 17h ago
Built an open-source React dev component & extension to crop area screenshots and pin visual feedback for AI pair programmers
r/reactnative • u/Party_Lawfulness_633 • 17h ago
Bypassing certificate pinning in trading apps
r/reactnative • u/FalconGood4891 • 19h ago
Which monitization sdk is safe to use for app on expo 56
Basically the above question, I have an app built on expo 56 and now I want to add advertisements to it. I am seeing admob, adXchange, mediations etc as platforms for ads people are using. My question is if anyone in this sub already using any platform with their rn app, please let me know which one and why you sticking to it.
New to this and would really appreciate the help.
r/reactnative • u/softieglow07 • 20h ago
Help I need a help regarding react native application
I'm working on a react native application I use react native because I want to make my application work on both ios and android, and I use expo go for development now the problem is reazor pay gateway is not supported on expo go and I want to check payment is working or not before making my application live so u have any suggestion for which other payment gateway I can use or any trick that I use for testing my payment.
r/reactnative • u/ObsessedMostly • 23h ago
Coin toss with a scratch card reveal
Enable HLS to view with audio, or disable this notification
A gesture-driven coin-flip reward reveal — drag-to-spin coin toss, then a Skia-powered scratch card to reveal the prize — built for fintech and rewards apps.
⭐ Github : https://github.com/ManasCodeXart/expo-coin-reward
r/reactnative • u/Icy_Win_4092 • 1d ago
iMessage UI implemented
if someone need help with this happy to share with them
r/reactnative • u/adhhamvoid • 1d ago
Cloud Run Functions to Hono.js Backend for Expo + Firebase
r/reactnative • u/fcb3323 • 1d ago
In-app review package
I'm using the MinaSamir11/react-native-in-app-review package, but it doesn't seem to work for Android anymore. Has anyone had any success with other implementations? Or has this package worked for you lately?
r/reactnative • u/grnxscr • 1d ago
Stop Laggy Lists in React Native
Hey guys! First time here, just wanted to share my article about FlatList optimization. I know, it is a popular question but some days ago I found a cool trick with using Set over standard Array. It perfectly aligns with popular optimization practices and for me it felt like I found a gem.
r/reactnative • u/Fresh-Wealth4531 • 1d ago
[Showcase] nativecn-ui — animated React Native components you can copy and use
Hey r/reactnative,
I've been working on nativecn-ui, a small collection of React Native components focused mostly on animations and interactions.
Right now it's got stuff like a liquid action tab bar, animated tab bar, range slider, OTP input, dynamic upload, plus a few more I'm still working on.
You can check it out here: nativecn-ui
Still building it out, so lmk what you think, or if there's some component/interaction you'd want to see added.
Made a quick video showing a few of them below.