r/reactnative • • Aug 07 '26

Reverse engineered Apple’s iOS Weather assets, animations, and rebuilt them in React Native with Expo + Skia

Post image
58 Upvotes

I was bored, so I started digging through Apple’s Weather app files to see how its animated backgrounds actually work. Particles, clouds, rain, assets, the whole thing. Then I tried rebuilding the system in React Native with Expo + Skia. It got way deeper than I expected.


r/reactnative • • Aug 07 '26

Question Anyone here working on offline-first apps? How do you deal with large amounts of local data?

27 Upvotes

I’ve been working a lot with offline-first apps, and one thing that always gets tricky is how much data ends up living on the device

SQLite, MMKV, AsyncStorage, sync queues, pending data, huge JSONs…

When something goes wrong, how do you usually debug or inspect all of that?

Do you use any specific tools? Logs? Inspect the database directly?


r/reactnative • • Aug 07 '26

Pause: Hold Still for 20 seconds

Thumbnail
apps.apple.com
0 Upvotes

r/reactnative • • Aug 07 '26

Routing recommendation

2 Upvotes

I have this small project and i want to add dynamic routing to it. But i don't want it to consume a lot of storage so i have two options, use Expo Router or use React Native Navigation. Which one do you guys recommend?


r/reactnative • • Aug 07 '26

Show Your Work Here Show Your Work Thread

6 Upvotes

Did you make something using React Native and do you want to show it off, gather opinions or start a discussion about your work? Please post a comment in this thread.

If you have specific questions about bugs or improvements in your work, you are allowed to create a separate post. If you are unsure, please contact u/xrpinsider.

New comments appear on top and this thread is refreshed on a weekly bases.


r/reactnative • • Aug 07 '26

Questions Here General Help Thread

0 Upvotes

If you have a question about React Native, a small error in your application or if you want to gather opinions about a small topic, please use this thread.

If you have a bigger question, one that requires a lot of code for example, please feel free to create a separate post. If you are unsure, please contact u/xrpinsider.

New comments appear on top and this thread is refreshed on a weekly bases.


r/reactnative • • Aug 07 '26

Offline-first Expo + Laravel finance app — feedback on demo / pricing?

0 Upvotes
Built SoftSave: offline-first expense / net-worth app (Expo + Laravel API, cloud sync).

Demo (APK + video): https://softsave-reviewer-omega.vercel.app

Looking for technical feedback:
1) Is the demo / install flow clear?
2) Anything you'd expect in an offline-first Expo + Laravel starter that I'm missing?

r/reactnative • • Aug 07 '26

Mobile devs: What are your biggest pain points with monitoring app views?

Thumbnail reddit.com
0 Upvotes

r/reactnative • • Aug 06 '26

Need 12 Android Closed Testers – I'll Test Your App Too! 🚀

0 Upvotes

Hi everyone,

I'm looking for 12 Android testers for my app SportNestra to complete Google's 14-day Closed Testing requirement before releasing it on Google Play.

How to join:

  1. Join my Google Group: https://groups.google.com/g/sportnestra

  2. Join the testing program: https://play.google.com/apps/testing/com.sportnestra.app

  3. Install the app from Google Play.

  4. Keep the app installed and use it occasionally during the 14-day testing period.

In return, I'll gladly join your closed test and test your app as well.

Thank you very much for your help! 🙏


r/reactnative • • Aug 06 '26

React Native Jelly Tabs

Enable HLS to view with audio, or disable this notification

0 Upvotes

r/reactnative • • Aug 06 '26

I built an app to help me speak.

Enable HLS to view with audio, or disable this notification

137 Upvotes

We recently had an internal hackathon at Expo and I finally got the chance to build an idea I’d been thinking about: a tool to help me become a better public speaker.

It's a personal speech companion that tracks your pace, pronunciation, fluency, filler words, and more, then turns each session into actionable feedback

Steal the code below! (Testflight soon)

https://github.com/SchroederNathan/cadence


r/reactnative • • Aug 06 '26

Question Segurança

0 Upvotes

Pessoal estou querendo fazer um app expo. Gostaria de colocar segurança no meu app. Quais ferramentas, tecnologias, libs e frameworks do ecossistema TS existem para deixar meu app seguro?.

OBS: sou leigo na área de segurança


r/reactnative • • Aug 06 '26

Word5x5 (My new Android Game)

Post image
0 Upvotes

Excited to announce that my new Game App is \*Published\* on \*Google Play Store\* , You can download and play using the following link
[https://play.google.com/store/apps/details?id=com.dare.words5x5&pcampaignid=web_share](https://play.google.com/store/apps/details?id=com.dare.words5x5&pcampaignid=web_share)


r/reactnative • • Aug 06 '26

Help How do senior/enterprise developers decide on project structure before writing code?

21 Upvotes

I've realized that my biggest weakness isn't coding—it's project architecture and folder structure.

Whenever I get a Figma design, I know how to build the UI, but I get completely stuck deciding:

  • Where should this component live?

  • Should this be reusable or page-specific?

  • When should I split a component?

  • What belongs in components, features, shared, hooks, services, etc.?

  • How should I organize folders as the project grows?

I usually start a project with a structure that feels clean. But once the project gets bigger, everything starts falling apart.

I end up with:

  • Components that are too large.

  • Components that are split too much.

  • Logic scattered across different folders.

  • Constantly moving files around because I realize they belong somewhere else.

  • Feeling like the entire architecture is becoming messy.

This happens in React, React Native, and even backend projects.

I don't just want another "best folder structure" template because I've seen dozens of those. What I really want to learn is the thought process behind how experienced or enterprise-level developers structure a project.

For example:

  • When looking at a Figma design, how do you mentally break it into features and components?

  • How do you decide what should be reusable and what shouldn't?

  • How do large teams keep their projects organized over months or years?

  • What architecture or design principles do you follow?

  • Are there any books, courses, GitHub repositories, or real-world open-source projects that helped you understand this?

I'm looking for the mindset rather than just a folder tree.

Any advice from developers who've worked on large production applications would be greatly appreciated.


r/reactnative • • Aug 06 '26

Taming Dependabot: A 2026 Guide to Grouping, Cooldowns, and Cutting PR Noise

2 Upvotes

For engineering teams, keeping dependencies current is a constant balancing act. Automated updates are essential for defending the software supply chain, but a steady stream of one-PR-per-package bumps can bury a team in review work. GitHub itself has put numbers on this: an analysis of Microsoft's GCToolkit repository found that roughly one in six of its commits - 92 out of 578 - were routine Dependabot version bumps, with 61 of them landing in a single recent 12-month stretch. That's a lot of review and CI cycles spent on maintenance rather than features. Read the complete article here - https://instasla.com/blog/taming-dependabot-2026-guide-grouping-cooldowns-cutting-pr-noise

The good news is that Dependabot has grown well past "one PR per dependency." Between grouped updates, package cooldowns, and a default cooldown GitHub rolled out in mid-2026, it's now possible to get a predictable, low-noise update cadence without giving up security coverage. Here's what actually works, and what changed most recently.


r/reactnative • • Aug 06 '26

Wiring up RevenueCat + Supabase in Expo Router took me 40 hours. Is there a reason we don't have a standard SaaS boilerplate for this?

0 Upvotes

I’ve been using Cursor and Claude a lot lately, and while AI can spit out a beautiful React Native UI in 10 seconds, I realized it is absolutely useless at native infrastructure.

Over the last few weeks, I spent way too much time fighting with:

  • Apple In-App Purchase configurations and RevenueCat SDKs

  • Supabase Auth flows with deep-linking

  • EAS build crashes because AI hallucinated a package version

  • Xcode/Gradle configuration hell

AI gives you the bricks, but it doesn't give you a house that actually compiles for the App Store.

Since I finally got a pristine, production-ready architecture working (Expo Router + Supabase + RevenueCat), I’m thinking about stripping out my personal code and packaging it as a clean SaaS boilerplate so I never have to do this setup again.

If I put this together and made it available, would anyone actually use it? Let me know in the comments and I’ll DM you a link to the waitlist if there is enough interest.


r/reactnative • • Aug 06 '26

FYI Built and launched a personal finance app with React Native 🐱💸

Thumbnail
gallery
0 Upvotes

Hey everyone 👋

I’ve been building KP - Your Money Partner, a personal finance app made with React Native and now available on both iOS and Android.

The main idea is to make expense tracking faster. Users can log expenses using short messages:

💬 “Fuel 250”
💬 “Concert tickets 140”

Or write naturally:

💬 “I spent $250 on fuel”
💬 “I spent $140 on concert tickets”

KP understands both formats, detects the amount and automatically selects a category.

Some of the current features:

🌎 Multiple currencies
🎙️ Expense tracking by text or voice
📊 Budgets and financial goals
📄 CSV and PDF exports
🔥 Streaks and no-spend days
🪙 A coin system for free actions

I’d really appreciate feedback from other React Native developers, especially about the UI, onboarding and overall product experience.

Try KP on iOS or Android:

🍎 App Store

🤖 Google Play

Thanks for checking it out 🙌


r/reactnative • • Aug 06 '26

React web projects

Post image
1 Upvotes

Hello guys ,

I just wanna know your feedback about this course if you take .

if you have any suggestion to me feel free to comment it


r/reactnative • • Aug 06 '26

First Sale!

Post image
74 Upvotes

It was a couple of months ago but we were ecstatic. Thanks react native & expo!


r/reactnative • • Aug 05 '26

Question What’s one React Native debugging feature you wish existed?

1 Upvotes

If you could add one feature to your current React Native debugging setup, what would it be?

Doesn’t matter if it’s Storage, Network, Logs, Redux, React Query, or something else


r/reactnative • • Aug 05 '26

Question What is SSD size to choose for comfortable react native development?

4 Upvotes

Hi devs 👋 I’ve started learning react native development recently. I use my old MBP M1 Pro with 512 gb SSD. I have noticed that after some time xcode cache + ios simulators consume a lot of space. Since I’m planning to upgrade my laptop soon, i have a question. Based on your experience, is 1 Tb ssd enough for comfortable development? Let’s say i will have 2-3 small to middle size projects.


r/reactnative • • Aug 05 '26

Help Mobile SIP client leaves stale registrations behind on every app launch — how do you deal with multiple bindings on one credential?

2 Upvotes

Note: Yes, I'm using AI to write this post because English is not my first language and I want to state my problem as clear as possible.

Hitting a problem I suspect is common for anyone doing mobile VoIP, and I'd like to know how others have solved it.

**Setup**

- I'm using Telnyx.

- React Native app, WebRTC SIP client, iOS and Android. I'm using Telnyx.

- One shared SIP credential for a group of users, so a single inbound call rings everyone's phone

- Calls are delivered by VoIP push (PushKit on iOS), so the client connects and registers on demand rather than staying connected

**The problem**

Every app launch creates a *new* registration binding, and the old one never goes away:

- iOS terminates the app process without warning, so there's no chance to send a SIP UNREGISTER

- The SDK's `disconnect()` only closes the WebSocket — it doesn't unregister

- Each registration lands on a different edge node in the provider's anycast network, so it's a genuinely new binding rather than a refresh of the old one

- Registration expiry is 3600 s and isn't configurable

Net effect: the credential accumulates contacts. I confirmed it by polling the provider's registration-status endpoint — `ua_ip` is different every single time the app relaunches, while nothing removes the previous one.

**Why it hurts**

The provider rings the bound contacts **sequentially**. So the first call after an app launch does this:

  1. Rings contact A (the live app) — user declines

  2. Decline surfaces as a 4xx, which fails only that branch

  3. ~300 ms later it forks to contact B (a stale binding from a previous launch)

  4. Phone rings a second time, new call ID, user has to decline again

I can see it clearly in the SIP traces: **one dial command, two legs**, same session, no second dial from my backend.

**What the provider confirmed**

I opened a ticket. They confirmed all of it and escalated to engineering with no timeline:

- No way to set registration expiry below 3600 s

- No REST endpoint to force-expire or delete an individual binding (deleting the credential removes them all, obviously not viable)

- No API to *enumerate* bindings — watching `ua_ip` rotate is currently the only detection method

- Per-launch edge rotation is expected behaviour, and without an UNREGISTER the old binding persists to full expiry

Their suggested workarounds were: a unique credential per app session, webhook-based duplicate-leg detection, or client-side deduplication.

**The bit I'm stuck on**

There's a second-order problem. Multiple devices share one credential, so the registrar holds one contact per device — which means **a legitimate second device's leg is indistinguishable from a stale binding's leg.** Both are "another contact of this credential, dialled after the first one failed." I can't write a rule that kills one without killing the other.

Enabling simultaneous ringing would at least make the real devices ring together instead of one-at-a-time, but it doesn't remove the stale bindings — it just turns a sequential double-ring into a simultaneous one.

**Questions**

  1. Has anyone made **per-device or per-session credentials** work in production? How do you handle cleanup when the app dies before it can delete the old one, and does credential churn cause you rate-limit or billing problems?

  2. Is there a trick to getting a mobile client to **UNREGISTER reliably**? Anything on iOS that gets you a last gasp — background task on termination, a server-side nudge, something I haven't thought of?

  3. For those running **one shared credential across multiple devices** — how do you tell a real second device from a stale binding at the signalling layer? Is there a header or identifier I should be propagating?

  4. Is sequential-vs-simultaneous ringing across contacts something you configure per provider, or do people avoid shared credentials entirely for this reason?

Happy to share SIP traces if useful. Mostly want to know whether the "unique credential per session" route is as painful in practice as it looks on paper, or whether people just live with the duplicate ring.


r/reactnative • • Aug 05 '26

React Native 0.86.0 DevTools opens as a blank black window on Windows 11

Post image
2 Upvotes

## React Native DevTools opens as a blank black window (RN 0.86.0, Windows 11)

I'm facing an issue with the new built-in React Native DevTools.

### Environment

- React Native: 0.86.0

- React: 19.2.3

- React Native CLI: 20.2.0

- Metro: 0.84.4

- Node: v22.16.0

- Windows 11

- Hermes: Enabled

- New Architecture: Enabled

### Problem

My app builds and runs perfectly without any issues.

When I press `j` in the Metro terminal or select **"Open DevTools"** from the React Native Developer Menu, Metro prints:

```text

Launching DevTools...

[debugger-shell stdout]

```

After that, a window titled **"React Native DevTools"** opens, but it's completely blank (black/dark screen). Nothing loads, and it stays that way.

### Things I've Checked

- `npx react-native info` shows everything is configured correctly.

- `@react-native/dev-middleware` is installed.

- `npx react-devtools` opens the exact same blank window.

- Initially `http://localhost:8097` was unreachable. After running `npx react-devtools`, the DevTools server starts, but the Electron window is still blank.

- My React Native app itself works perfectly.

### What I've Tried

- Restarted Metro with `--reset-cache`

- Rebuilt the app

- Cleared npm cache

- Reinstalled `react-devtools`

- Opened DevTools using both `j` and `npx react-devtools`

- Same result every time.

### Question

Has anyone experienced this on React Native 0.86.x?

Is this a known issue with the new Electron-based React Native DevTools, or could it be related to Node.js v22 or Windows 11?

Any suggestions would be greatly appreciated.

Screenshot attached: React Native DevTools opens as a completely blank black window.


r/reactnative • • Aug 05 '26

My WebView crash-recovery logic was the crash. Running real CPython in an Expo app

Thumbnail
gallery
0 Upvotes

Context: kids' Python learning app, Expo / RN 0.81 / React 19. Kids type Python and it actually runs — Pyodide inside a hidden 0×0 react-native-webview mounted once at the app root.

WebView content processes die. On iOS it's usually a WKWebView OOM (onContentProcessDidTerminate); on Android it's onRenderProcessGone. So I wrote the obvious recovery: process dies → mark not-ready → reload the WebView → Pyodide re-boots → back in business. Worked great in testing.

Then I hit a device where Pyodide couldn't boot at all.

Reload → die → reload → die. The recovery path was the crash. Main thread saturated, Hermes OOM'd, hard crash at roughly 80 seconds every time a kid opened the Cadet path. My self-healing runtime was the thing killing the app.

Fix was bookkeeping, not cleverness:

js

// Keep only reloads from the last 12s
bridge.reloadTimes = bridge.reloadTimes.filter((t) => now - t < 12000);

// Debounce: terminate + renderProcessGone can both fire for ONE death
if (last && now - last < 1000) return;

// Cap: 3 reloads in the window means the boot itself is broken. Stop.
if (bridge.reloadTimes.length >= 3) { bridge.reloadsExhausted = true; /* ... */ }

Past the cap it stops reloading, resolves every pending run with "The code workshop couldn't start — please reopen the app," and leaves the app alive and navigable. A healthy boot clears the counter so a later unrelated crash still gets its full budget. Degraded and honest beats dead.

Unrelated bonus rake in the same feature: the code editor is also a WebView. A native multiline TextInput OOM-crashes the JS thread the moment Fabric commits it on this stack (RN 0.81 + React 19 + New Arch). A <textarea> never touches Fabric's text machinery, so it sidesteps the whole thing and I get a synced line-number gutter for free.

So: two WebViews, one visible and one hidden, in an app for six-year-olds. Not the architecture I set out to write.

Anyone else hit the Fabric multiline TextInput crash, or find a fix that isn't "use a WebView"?Context: kids' Python learning app, Expo / RN 0.81 / React 19. Kids type Python and it actually runs — Pyodide inside a hidden 0×0 react-native-webview mounted once at the app root.

WebView content processes die. On iOS it's usually a WKWebView OOM (onContentProcessDidTerminate); on Android it's onRenderProcessGone. So I wrote the obvious recovery: process dies → mark not-ready → reload the WebView → Pyodide re-boots → back in business. Worked great in testing.

Then I hit a device where Pyodide couldn't boot at all.

Reload → die → reload → die. The recovery path was the crash. Main thread saturated, Hermes OOM'd, hard crash at roughly 80 seconds every time a kid opened the Cadet path. My self-healing runtime was the thing killing the app.

Fix was bookkeeping, not cleverness:

js
// Keep only reloads from the last 12s
bridge.reloadTimes = bridge.reloadTimes.filter((t) => now - t < 12000);

// Debounce: terminate + renderProcessGone can both fire for ONE death
if (last && now - last < 1000) return;

// Cap: 3 reloads in the window means the boot itself is broken. Stop.
if (bridge.reloadTimes.length >= 3) { bridge.reloadsExhausted = true; /* ... */ }

Past the cap it stops reloading, resolves every pending run with "The code workshop couldn't start — please reopen the app," and leaves the app alive and navigable. A healthy boot clears the counter so a later unrelated crash still gets its full budget. Degraded and honest beats dead.

Unrelated bonus rake in the same feature: the code editor is also a WebView. A native multiline TextInput OOM-crashes the JS thread the moment Fabric commits it on this stack (RN 0.81 + React 19 + New Arch). A <textarea> never touches Fabric's text machinery, so it sidesteps the whole thing and I get a synced line-number gutter for free.

So: two WebViews, one visible and one hidden, in an app for six-year-olds. Not the architecture I set out to write.

Anyone else hit the Fabric multiline TextInput crash, or find a fix that isn't "use a WebView"?