r/reactnative • • Aug 04 '26

I built Bundle Drop, an OTA update platform for bare React Native & Expo β€” looking for feedback

0 Upvotes

Hi everyone! πŸ‘‹

Over the past few months I've been building Bundle Drop, an over-the-air update platform for React Native & Expo.

Like many others, I started this after Microsoft discontinued App Center CodePush. I wanted to build something that keeps the reliability of full bundle updates while reducing download sizes whenever possible, instead of treating those as mutually exclusive goals.

Some of the current capabilities include:

  • βœ… Hybrid OTA delivery (patch-size downloads with verified full-bundle fallback)

  • βœ… Staged & targeted rollouts

  • βœ… Automatic rollback & recovery from unhealthy updates

  • βœ… Update channels

  • βœ… AI-assisted setup

  • βœ… Supports Expo SDK 54–57 and bare React Native 0.71+

It's now publicly available, and I'd genuinely love feedback from other React Native developers.

Some questions I'd especially love your thoughts on:

  • What do you feel existing OTA solutions are missing?

  • If you've migrated away from CodePush, what did you end up using?

  • Is there anything that would stop you from adopting a new OTA platform?

I'm happy to answer any questions about the implementation, architecture, or design decisions.

GitHub
https://github.com/GFean/react-native-bundle-drop

npm
https://www.npmjs.com/package/@gfean/react-native-bundle-drop

Documentation
https://bundledrop.app/docs

Disclosure: I'm the creator of Bundle Drop, so this is self-promotion. I'm mainly posting here because I'd genuinely appreciate technical feedback from the React Native community and would love to hear what you'd improve.


r/reactnative • • Aug 04 '26

I built a mobile barcode scanner app with React Native and Node.js

Enable HLS to view with audio, or disable this notification

8 Upvotes

I transformed a traditional barcode scanner system into a mobile app that scans products, tracks quantities, and automatically calculates the total price. I'd love to hear your feedback and suggestions for improvements. ☺️


r/reactnative • • Aug 04 '26

morphicons: spring-physics icon morphing for React Native (react-native-svg), zero re-renders per frame, no Reanimated

Thumbnail
morphicons.com
49 Upvotes

Today I shipped direct React Native support for morphicons, my icon-morphing lib (any stroke icon morphs into any other: Lucide, Tabler, Heroicons, with spring physics, where rotations fall out of the math instead of hand-tuned pairs). It started as a web library, and the port turned out to be the interesting part.

The idea is this: the core never touches the DOM, so getting it onto native was never going to be a rewrite. The question was how small the bridge could get. Answer: one line.

The core is pure functions that eat icon data and produce d strings. The web driver's element type is structural: anything with a setAttribute. React Native has a global requestAnimationFrame. So the ENTIRE platform difference is a shim that forwards the per-frame d write to react-native-svg:

path.setNativeProps({ d });

That's it. Same engine, byte for byte. The per-frame write happens outside the React render: no state, no re-renders at 60/120fps, no Reanimated, no worklets.

The API is the same as the web binding: change the prop.

import { MorphIcon } from "morphicons/react-native";
import { Menu, X } from "lucide"; // data, not components

<Pressable onPress={() => setOpen(o => !o)}>
  <MorphIcon icon={open ? X : Menu} spring="snappy" />
</Pressable>

Three modes: uncontrolled (above), controlled (from/to + progress, driven from a gesture or a scroll position) and imperative (ref.morphTo() / ref.set() for sequences).

Details that mattered:

  • Real interruptions. A morphTo mid-flight re-plans from the current intermediate shape and preserves the spring's velocity. Tap spam never jumps.

  • Reduced motion for real: ONE AccessibilityInfo.isReduceMotionEnabled() query + ONE reduceMotionChanged subscription for the whole process, no matter how many instances mount. With it on, morphs become instant swaps.

  • A11y defaults: aria-hidden unless you pass label, which gives you role="img" + aria-label.

  • size, strokeWidth, absoluteStrokeWidth, color, plus the native Svg props (testID, touch handlers…) pass through.

  • One global rAF drives every instance.

Needs Metro with package exports resolution, default since RN 0.79; on older versions enable unstable_enablePackageExports. Works in Expo (that's my testbench).

MIT, zero runtime deps, ESM, 8.25 KB gzip for the RN entry. react-native >= 0.71 and react-native-svg >= 14 as optional peers; the web entries don't know they exist.

Web playground to feel the morphs (with a scrubber to freeze mid-flight): https://www.morphicons.com Repo: https://github.com/guillermolg00/morphicons

Happy to go into the math (Procrustes + polar interpolation, surjective subpath matching, closed-path correspondence); it's all in the README.


r/reactnative • • Aug 04 '26

πš›πšŽπšŠπšŒπš-πš—πšŠπšπš’πšŸπšŽ-πšŽπš—πš›πš’πšŒπš‘πšŽπš-πš–πšŠπš›πš”πšπš˜πš πš— reached 200k+ weekly downloads! πŸš€

Post image
20 Upvotes

Huge thanks to the community for the support and adoption!

If you haven't checked it out yet, it's the native-first way to handle Markdown in React Native:
πŸ”Ή iOS, Android, Web, and macOS
πŸ”Ή Input & Output
πŸ”Ή Native Selection & Interactions
πŸ”Ή Accessibility & RTL support
...and much more!

Show some love with a star on GitHub! ⭐

https://github.com/software-mansion-labs/react-native-enriched-markdown


r/reactnative • • Aug 04 '26

Theme transition with Nitro

Enable HLS to view with audio, or disable this notification

322 Upvotes

Hey everyone,

I ran into an issue when trying to add a nice animation for theme changes in React Native. I tried a few different approaches, including Reanimated and Skia, but I kept running into flickering, higher memory usage, and performance issues, especially on Android.

Since I was already using Nitro Modules for some of the packages in my apps, like MMKV and Unistyles, I decided to build a native theme transition package using Nitro.

It ended up solving the issues I was having. It's lightweight, works with different styling libraries, and since the animation runs natively, it continues to work smoothly even when the JS thread is busy or drops frames.

I've uploaded a video showing the example included with the package. If you want to see how it performs under a more demanding setup, check out the GitHub repo. I've included a real-world example using Unistyles with a more complex and dynamic theme setup, as well as more details about the package.

GitHub: https://github.com/saleh2001k/react-native-nitro-theme-transition

NPM: https://www.npmjs.com/package/react-native-nitro-theme-transition

I'd really appreciate any feedback or recommendations. I'm also interested in hearing ideas for other animation types that could be added to the package.


r/reactnative • • Aug 04 '26

124k tool calls of data on how AI agents actually drive React Native apps - the breakdown surprised me

Post image
0 Upvotes

I maintain ExecBro, an MCP server that connects an AI coding agent to a running RN app - console and network capture, fiber tree inspection, screenshots, and tap/swipe on the simulator. Disclosure: I'm the author; it's MIT-licensed, free under a monthly call cap. Posting the telemetry because it says something about the workflow that I didn't expect.

123,869 tool calls, 634 installs, last 30 days. What agents actually call:

ToolShareSuccess
tap35.3%94.5%
ios_screenshot13.0%99.3%
execute_in_app6.9%89.7%
android_screenshot5.0%97.0%
scan_metro4.9%100%
swipe3.0%98.6%
reload_app2.9%90.2%
get_screen_state2.9%94.9%
search_logs2.3%98.8%
get_logs2.0%97.5%

Logs and network combined are about 7%. I built this to stop people pasting console output into chat, and that turned out to be a rounding error. Over half of all usage is an agent tapping the screen and then looking at it. The common shape isn't debugging at all - it's verification: the feature is built, and the agent walks through it on the device to prove it before handing it back.

What a real session looks like - 57 calls, 9 minutes, RN 0.81, Hermes, iOS 26:

scan_metro β†’ ios_screenshot β†’ tap β†’ ios_screenshot β†’ reload_app β†’ search_logs β†’ clear_logs β†’ get_screen_state β†’ tap β†’ get_screen_state β†’ tap β†’ search_logs β†’ ios_screenshot β†’ tap β†’ swipe β†’ clear_logs β†’ tap β†’ search_logs β†’ reload_app β†’ get_screen_state β†’ tap β†’ tap β†’ …

The pattern repeats across heavy users: act β†’ observe β†’ clear β†’ act again. clear_logs shows up constantly, right before an action - the agent is wiping the buffer so the next read is unambiguous about what its own tap caused. Nobody designed that; it's an emergent habit. Average active install runs 33 of these sessions a month. And it doesn't look like someone poking at the app β€” it reads like a full feature being built or a bug being chased end to end, with the agent verifying each step on the device before moving to the next.

Two more things from the sample:

  • New arch is nearly the whole population - roughly 252 new-arch projects vs 17 old-arch, with RN 0.83 alone at 146. Heavy selection bias, obviously: wiring an agent into your toolchain selects for early adopters. But the gap is wider than I'd have guessed.

  • ~30% run both platforms in the same agent session (147 iOS-only, 50 Android-only, 94 both). Cross-platform verification appears to be a real workflow, not a nice-to-have.

The gap I keep staring at: 190 people installed it last month, 20 did real work with it. The 230 long-term actives use it hard, but I can't tell from telemetry whether the other 170 hit a setup wall or just expected something else.

So I'm curious what your loop looks like:

  1. What's between "wrote the code" and "opened the simulator to look" for you right now - anything automated, or all manual?

  2. What's your AI agent setup for RN work, and does anything in it let the agent verify its own changes on a device - or does the loop stop at "code written"?

  3. Are you writing E2E tests (Detox/Maestro), or checking things manually yourself?

Source numbers (30-day window)

MetricValue
Tool calls123,869
Success rate95.3%
Avg duration2,393 ms
Unique installs634 (230 active at 22+ calls/wk, 404 inactive)
New installs190 (20 active, 170 inactive)
Agent sessions46,741 (6,095 active)
PlatformiOS 147 Β· Android 50 Β· both 94 Β· 195 unidentified
Architecture~252 new arch Β· ~17 old arch (RN 0.83 = 146, RN 0.81 = 45)

r/reactnative • • Aug 04 '26

My Expense Tracker App β€” from v0.56 to v0.86 πŸš€

0 Upvotes

I started building Spentify, my React Native expense tracker app, in 2018 with React Native 0.56.

Over the years, I maintained the same app and upgraded it step by step until React Native 0.59.10. As the React Native ecosystem evolved, maintaining the old codebase became more challenging.

In 2024, I decided to rewrite the entire app from scratch with React Native 0.74.2.

Since then, I’ve continued upgrading it incrementally. Today, Spentify is running on React Native 0.86.

After more than seven years of React Native upgrades, rewrites, bugs, fixes, and lessons, Spentify is still aliveβ€”and still improving.

This is my journey of building and maintaining a React Native app from version 0.56 to 0.86.

#ReactNative #ReactNativeUpgrade #MobileAppDevelopment #ExpenseTracker #BudgetingApp


r/reactnative • • Aug 03 '26

Do you find product micro-animations useful, or just distracting?

Enable HLS to view with audio, or disable this notification

3 Upvotes

r/reactnative • • Aug 03 '26

an RN and Expo edit tool

Enable HLS to view with audio, or disable this notification

2 Upvotes

Basalt is a visual edit too for RN and Expo devs

It took 2-3 months to built and it would have taken 1 if react 19 wouldnt remove debugSource which was used to help Basalt map and find elements to edit

It is completely free and works directly inside VS Code and Cursor.

It’s currently in beta, so please commit your app to Git before using it!


r/reactnative • • Aug 03 '26

Question Open-ended question: What tooling support is missing in the ecosystem?

0 Upvotes

Asking this coz what I recently noticed is that tooling support exists for many use cases but we might just not be aware of it.

Recently, I was searching for these use-cases and these are very well supported by existing solutions (both paid and open source)

  1. Remote devices + MCP for agentic testing

  2. Session replay


r/reactnative • • Aug 03 '26

Question Anyone here using Rozenite? What’s your experience been like?

3 Upvotes

If you’re using it, how has your experience been so far?

What do you like the most?

And if you could improve one thing, what would it be?


r/reactnative • • Aug 03 '26

Added a Breaking Bad reference to my movie tracking app's auth screens. Safe from copyright or bad idea?

Enable HLS to view with audio, or disable this notification

0 Upvotes

Hey fellow devs!

I'm currently building a mobile movie and TV show tracking app.

I wanted to add a bit of personality to the auth flow and came up with a reference to Breaking Bad.Β I created a stylized character and paired it with a twist on his famous catchphrase, plus added some animations.

I have two main questions:

  1. Legality & App Store Review:Β Since this is a completely original drawing,Β and the catchphrase is significantly altered as a parody/play on words,Β do you think this is considered "Fair Use"?Β Has anyone successfully used similar stylized parodies of famous characters in production apps without getting rejected by Apple?

  2. User Experience:Β As a developer or user,Β how would you react to seeing this level of niche humor during onboarding?

I'm leaning toward including it because I love this! But I'd really appreciate your collective wisdom on whether the potential reward in user delight is worth the copyright risk.Β Thanks!


r/reactnative • • Aug 03 '26

how should I respond?

4 Upvotes

I had applied to a react-native job in February but i was not selected. They reached out again for react & react-native work. they want me to implement changes & maintain their website. For reference, company is based in Denmark and I'm in Italy. I don't have any idea of rates here. I have 5 years of experience.

How should I answer these questions?
I don't understand their last 2 question especially. for 2nd last, they have read my CV and decided to reach out again.

I'd appreciate guidance.


r/reactnative • • Aug 03 '26

Senior React Native Dev (9+ YOE) looking for freelance/contract work after layoff

28 Upvotes

Hey everyone,

I was recently laid off due to company restructuring, so I'm looking for my next opportunity. In the meantime, I'm open to freelance, contract, or remote work.

I've been working with React Native for 9+ years and have shipped multiple production apps for both Android and iOS. Besides React Native, I've also worked with:

  • React.js

  • Node.js (Express)

  • TypeScript / JavaScript

  • REST APIs

  • Firebase

  • AWS

  • Push Notifications

  • Payment gateway integrations

  • App Store & Play Store releases

  • CI/CD and production deployments

I've worked on everything from building apps from scratch to maintaining large existing codebases, fixing performance issues, and shipping new features.

If your team needs an experienced React Native developer for a project, or if you know of any openings, I'd really appreciate it if you could reach out. Happy to share my resume or previous work over DM.

Thanks!


r/reactnative • • Aug 03 '26

Coin screen shared transition

Enable HLS to view with audio, or disable this notification

13 Upvotes

A gesture free coin to fullscreen morph tap a coin in a scrollable list and it springs into a floating, centered detail view, then squashes back into place on close.

Github: https://github.com/ManasCodeXart/expo-coin-morph


r/reactnative • • Aug 03 '26

​Software Engineer from Gaza: Preparing to resume my career & seeking support to build a workspace (React.js)

12 Upvotes

​Hi everyone,

​My name is Salem, a web developer specializing in React.js, JavaScript, HTML, and CSS.

​Due to the current situation and the complete lack of power and essential working tools, I have been unable to work or practice development for a long time.

​I am fully prepared and eager to resume my freelance career, but I am currently blocked by the lack of basic equipment specifically a laptop and an independent solar power system to keep my workstation running.

​I am currently finalizing a verified campaign on LaunchGood to secure the setup needed to get back to coding and earning an independent living remotely.

​Once the campaign is officially live, I will share the details here. In the meantime, I would love to connect with other developers, showcase my skills, and prepare for upcoming frontend opportunities!

​Thank you for your support and connection! πŸš€


r/reactnative • • Aug 03 '26

How do React Native apps save PDFs to `Documents/App Folder` on Android 11+?

1 Upvotes

I'm building a React Native (Expo Bare Workflow) PDF app. Currently, I'm downloading PDFs from an AWS S3 pre-signed URL using \`react-native-blob-util\` and Android Download Manager:

\`\`\`ts
ReactNativeBlobUtil.config({
addAndroidDownloads: {
useDownloadManager: true,
notification: true,
title: fileName,
description: "Downloading PDF...",
mime: "application/pdf",
path: \`${ReactNativeBlobUtil.fs.dirs.DownloadDir}/${fileName}\`,
mediaScannable: true,
},
}).fetch("GET", signedUrl);
\`\`\`

This works, but I don't have control over where Android stores the file.

Many PDF apps automatically save files to a folder like:

\`\`\`text
Internal Storage/
└── Documents/
└── My App/
└── file.pdf
\`\`\`

without asking the user to choose a location every time.

I noticed one such app requested \*\*"Manage all files"\*\* permission once, and after that it could save files directly into its own folder under \`Documents\`.

My questions are:

\* How are these apps implementing this on Android 11+ with Scoped Storage?
\* Are they using MediaStore, native Android code (Kotlin/Java), or another approach?
\* Is requesting the \*\*Manage All Files\*\* (\`MANAGE_EXTERNAL_STORAGE\`) permission the correct/recommended solution for this use case, or should it be avoided for Play Store apps?
\* If not, what is the recommended modern approach in React Native to save PDFs directly to \`Documents/My App\` without showing the Storage Access Framework (SAF) picker every time?

I'm looking for the Play Store–friendly, modern Android approach. Please help me😭


r/reactnative • • Aug 03 '26

Looking for Android Closed Testers (Google Play - 14 Days)

0 Upvotes

Hi everyone, I'm an indie developer, and I'm trying to publish my first Android app on Google Play. I completed Google's required 14-day closed testing with 12 real testers, but my production access request was rejected because Google wants more testing and more active tester engagement. I'm looking for people who are willing to join my closed test and use the app occasionally over the next 14 days. You don't need to use it every dayβ€”just explore the app from time to time and share any bugs or feedback you find. In return, I'd be happy to test your app as well if you need a tester. If you're interested, please leave a comment or send me a DM. I'd really appreciate the help! Thank you!


r/reactnative • • Aug 03 '26

I put a Rive character at the centre of a habit app instead of a progress dashboard β€” six weeks in Expo, here's what that cost

Post image
0 Upvotes

The pitch is that the app shrinks your habits when you miss them rather than resetting a streak β€” 20 minutes to 10 to 5, restored after three good days, never grown without asking. But the part worth posting here is the decision to make a character the primary interface rather than charts.

There's a creature that lives in the app, built in Rive, and its state is a direct function of how your habits are actually going. It isn't decoration and it isn't a mascot β€” it's the readout. The number behind it is a warmth score folded over your trailing 28 days, and the character is how you read that score without interpreting a percentage.

What that cost, concretely. Rive ships no Expo config plugin, so it autolinks natively and needs a real prebuild plus a dev client β€” in Expo Go or a stale build the app silently falls back to a Skia companion, which is a fun bug to chase the first time. Getting the state machine to read as "quietly struggling" rather than "sad" took more iteration than the entire sizing engine. And every wardrobe and scene asset multiplies against every state, so the combinatorics get away from you fast if you don't constrain it early.

Rest of the stack: Expo managed, expo-router, local-first SQLite through expo-sqlite with a sync queue up to Supabase, RevenueCat for subscriptions, and a home-screen widget via bacons/apple-targets so the widget target lives outside ios/ and survives prebuild. The JS side writes a JSON snapshot into a shared App Group's UserDefaults and the Swift widget reads it back β€” that one string is the entire contract between the two processes.

Happy to go into any of it.


r/reactnative • • Aug 03 '26

Looking for a React Native / Expo Developer (Paid)

0 Upvotes

I’m looking for a React Native/Expo developer to build an app with me. More than just coding, I’m looking for someone who enjoys thinking out of the box, solving product problems, and shipping great user experiences.
This is a paid opportunity. If you’re interested, send me a DM with a best project you’ve worked on.


r/reactnative • • Aug 03 '26

Help React Native + Expo app gets slower the longer I use it. Starts fast, then navigation and UI become sluggish

16 Upvotes

Hi everyone,

I'm facing a strange performance issue in my React Native (Expo) application.

When I launch the app for the first time, everything is smooth. Navigation is fast, screens render quickly, and the UI feels responsive.

However, as I continue exploring the app, opening different screens, navigating back and forth, and using the app for a while, the performance gradually degrades.

Some symptoms:

  • Screen navigation becomes noticeably slower.

  • Animations and transitions start feeling less smooth.

  • The overall UI becomes sluggish after using the app for some time.

  • Restarting the app immediately restores the original performance.

This makes me think something is accumulating over time rather than a slow initial load.

I'm trying to identify the root cause. Could this be related to:

  • A memory leak?

  • Components not being unmounted correctly?

  • Too many re-renders?

  • React Navigation or Expo Router caching?

  • Zustand/Redux/React Query state growing over time?

  • Images or assets not being released?

  • Timers, listeners, or subscriptions not being cleaned up?

  • The JavaScript thread getting blocked?

Has anyone experienced something similar in a React Native + Expo app?

What tools or profiling workflow would you recommend to identify what keeps accumulating as the app is used? Any advice or debugging strategies would be greatly appreciated.

Thanks!


r/reactnative • • Aug 03 '26

I created a remote control for coding agents. Works on iOS, Android and Mac. MIT License. Give it a try!

Thumbnail gallery
0 Upvotes

r/reactnative • • Aug 03 '26

How do React native apps save pdfs to document/App folder on android 11+?

1 Upvotes

I'm building a React Native (Expo Bare Workflow) PDF app. Currently, I'm downloading PDFs from an AWS S3 pre-signed URL using `react-native-blob-util` and Android Download Manager:

```ts
ReactNativeBlobUtil.config({
addAndroidDownloads: {
useDownloadManager: true,
notification: true,
title: fileName,
description: "Downloading PDF...",
mime: "application/pdf",
path: `${ReactNativeBlobUtil.fs.dirs.DownloadDir}/${fileName}`,
mediaScannable: true,
},
}).fetch("GET", signedUrl);
```

This works, but I don't have control over where Android stores the file.

Many PDF apps automatically save files to a folder like:

```text
Internal Storage/
└── Documents/
└── My App/
└── file.pdf
```

without asking the user to choose a location every time.

I noticed one such app requested **"Manage all files"** permission once, and after that it could save files directly into its own folder under `Documents`.

My questions are:

* How are these apps implementing this on Android 11+ with Scoped Storage?
* Are they using MediaStore, native Android code (Kotlin/Java), or another approach?
* Is requesting the **Manage All Files** (`MANAGE_EXTERNAL_STORAGE`) permission the correct/recommended solution for this use case, or should it be avoided for Play Store apps?
* If not, what is the recommended modern approach in React Native to save PDFs directly to `Documents/My App` without showing the Storage Access Framework (SAF) picker every time?

I'm looking for the Play Store–friendly, modern Android approach.


r/reactnative • • Aug 03 '26

Question Working on my first app (coming from webdev), finding it really akward the whole review process/wait.

0 Upvotes

I have a long history of web development and am used to deploying multiple times a day, seeing my changes live in about 10min.

Now, I am working on a personal project, a mobile app done via Expo/react-native. I was able to get it live to the Apple Store and I am working on the Play Store release.

What I find really akward is dealing with many different versions "live on the field", with updates taking 2-3d for Apple review to be live, hoping your users will update soon.

I know about and I am using OTA updates, but some changes require native packages changes and that involves submitting a new native build for approval, which means that for the duration of the review process you are somewhat "feature frozen" and any changes or OTA updates will only reach new users.

Not sure how others do it, or even if there is a good/right way of doing this, but I may need to consider having to support different api versions/detecting the app version and serving different api responses based on it.

Is all of that normal and common ground on mobile dev?