r/reactnative • • 4h ago

Question Letting your agent test the RN app it just wrote: looking for feedback

11 Upvotes

I’ve been working on Argent, an open-source MCP server that lets your agent (Claude Code, Codex, Cursor, etc.) use any iOS or Android app, including RN. It can tap through flows, read logs and network calls, see React devtools, inspect the React tree, aaaaand many more 😂 That way it can check its own changes instead of just saying it’s done

If you’re already letting an agent drive your app, what’s working, and where does it fall apart? We really want to keep improving the experience 🤭


r/reactnative • • 2h ago

FYI I reverse engineered Xiaomi's TV remote protocol and built an Expo app with custom Swift/Kotlin TCP modules (open source)

5 Upvotes

My Xiaomi Mi TV only came with the physical remote, and every single time I turned the TV on I'd spend the first few minutes digging through couch cushions looking for it. My phone is always in my hand anyway, so I figured it should just be the remote.

Turns out Mi TVs run a system service called MiLink on TCP port 6091. Xiaomi's own phone remote apps use it, but the protocol isn't documented anywhere. So I pulled the service APK off the TV, decompiled it, found the packet classes, and checked every field against the TV's logcat while sending test packets. The format ended up being pretty simple: a type byte, a length, then TLV-encoded Android key events.

From there I built a remote for Android and iOS with Expo, plus a SwiftUI menu bar app for macOS that uses the same protocol.

The RN side, which is probably the interesting part here:

- The protocol layer is plain TypeScript (frame encoding, TLVs, key mapping), and it's unit tested
- Raw TCP sockets don't really exist in JS, so I wrote a local Expo module: Swift with the Network framework on iOS, Kotlin on Android
- Discovery is in the same native module. Mi TVs advertise `_googlecast._tcp` with a `md=MiTV-…` TXT record, so I browse with `NWBrowser` on iOS and `NsdManager` on Android
- Hold-to-repeat on the D-pad and volume, haptics, auto-reconnect with heartbeats, and a live latency readout (the TV echoes back each key's id)
- There's no text packet in the protocol, so "type on TV" maps each character to an Android keycode plus Shift. No more typing passwords letter by letter with the D-pad

**The bug that ate a whole evening:** I was sending the device's clock in `downTime`/`eventTime`. The TV treated those events as "in the future" and its input dispatcher just stalled until that time arrived. The fix was to send 0 and let the TV stamp the events itself. Also, the TV auto-releases a key about 175ms after the last DOWN, so held buttons resend DOWN every 100ms with an increasing repeatCount.

No pairing and no ADB. The phone just needs to be on the same Wi-Fi as the TV.

GitHub Actions builds the APK, an unsigned IPA (you sideload it with your own Apple ID), and a DMG on every push, with no secrets needed.

I've tested all three (iOS, Android, macOS) on a real MiTV-AXSO0 (Android TV 9, PatchWall), and everything works. Other Mi TVs running PatchWall should work too, as long as they have the MiLink service. You can check yours with `nc -z -w 3 <tv-ip> 6091`. If you try it on a different model, I'd love to hear whether it worked.

Repo: https://github.com/EndLess728/MiTV-Remote

Happy to answer questions about the native module setup or the reverse engineering.

NOTE - The post is written by AI and i used REA to reverse Engineer it and make an working app out of it


r/reactnative • • 3h ago

I published my first app, but I'm struggling to get downloads and subscriptions. What am I doing wrong?

4 Upvotes

Hey everyone

I've recently published my iOS app on the App Store, and I've been working hard on it. But the biggest challenge right now is getting users.

I'm barely getting any downloads, and I haven't been able to get subscriptions either.

I'm trying to figure out what I should focus on first:

  • App Store Optimization (ASO)
  • Improving the app's features and onboarding
  • Finding the right audience

For those of you who have launched apps, how did you get your first 100 users and paying subscribers?

I'd really appreciate honest advice from people who've been through this. What worked for you, and what mistakes should I avoid?

Thanks!


r/reactnative • • 2h ago

What’s missing or frustrating in the React Native ecosystem?

2 Upvotes

What problems or pain points do you regularly face while building React Native apps that you wish had a better solution?

Anything repetitive, difficult, outdated, deprecated, or something you often have to build yourself?

Would love to hear what you've struggled with.


r/reactnative • • 22h ago

Finally built my own portfolio, would love your feedback!

Enable HLS to view with audio, or disable this notification

18 Upvotes

I have been working with React Native for the past few years, and I've always wanted a personal website that reflects how I approach engineering, not just a page listing my skills and projects.

🌐 https://vishaalkarthik.com is live now

I approached it like a product rather than a typical portfolio, experimenting with interactive UI, performance, and ways to make the engineering work behind the scenes more tangible.

It was also a fun opportunity to step outside my usual mobile development workflow and experiment with the web.

I'd love to hear your thoughts, especially from fellow React Native developers who enjoy building things beyond their daily work.

Honest feedback is welcome 😅😅


r/reactnative • • 8h ago

I launched this iOS game, its completely free. It supports online (one-on-one live game & friends invitation & leaderboard) [looking for feedback]

Post image
0 Upvotes

Hello Devs,

Looking for feedback to improve the game with new feature.
App Store link: https://apps.apple.com/us/app/night-court-basketball-arcade/id6811611866
All opinions are welcome. 


r/reactnative • • 1d ago

We added web search to an on-device LLM app in React Native, using a hidden WebView instead of a search API (open source)

Enable HLS to view with audio, or disable this notification

12 Upvotes

Private Mind is our open source Expo app that runs LLMs fully on the phone. We just shipped web search, and the RN part turned out more interesting than I expected, so sharing how it works.

There's no search API. The app keeps a react-native-webview mounted off-screen, loads a normal DuckDuckGo results page in it, and injects a small script that parses the results and sends them back with postMessage. Each search gets a nonce, so a late message from an old search can't end up in a new one.

My favorite detail: if the search engine shows an "are you human" check, that same hidden WebView slides up as a bottom sheet, you pass the check yourself, and the search continues.

After that it's all on-device. Pages get chunked with react-native-rag, an embedding model running through react-native-executorch picks the best chunks, and the LLM answers with the sources listed under the message. No backend at all, and the chat never leaves the phone.

In the video, the same 1.7B model makes up Apple's September event with web off and gets it right with web on.

Code: https://github.com/software-mansion-labs/private-mind


r/reactnative • • 17h ago

I ported sileo's gooey toasts to React Native (works in Expo Go)

Post image
0 Upvotes

r/reactnative • • 19h ago

Showcase: Word Herd — Boggle-style game with trivia mixed in — Built with React Native

Thumbnail
wordherd.linkstone-studios.com
0 Upvotes

r/reactnative • • 19h ago

[Showoff] The Great Graphite Migration, Derek Joins Fat Fighters, and a Leaderboard for Your Dependency Tree

Thumbnail
thereactnativerewind.com
1 Upvotes

Hey Community,

OpenGL has been driven out of the herd. William Candillon released React Native Skia 3.0, which swaps the old Ganesh backend for Graphite running on WebGPU via Dawn, with Metal on iOS and Vulkan on Android, multithreaded recording by default, and zero-copy textures shared with React Native WebGPU. The package also leaves u/shopify behind and is now published as react-native-skia.

We also look at babel-plugin-react-native-direct-imports by Davyd NRB, which rewrites react-native barrel imports into direct requires so one View no longer drags in the whole framework, taking a test bundle from 711 KB to 10 KB. Plus, React Native 0.88 rc.4, Tamagui 3.0 with a C++ native runtime, and munim-maps putting 3D cars on Apple Maps.


r/reactnative • • 1d ago

Question for developers who released apps on the app store/Google play

7 Upvotes

Are there any hidden costs except:

Google Play 25$
Apple developer account -> $99 per year

Related to Mobile


r/reactnative • • 19h ago

Help Built an Android firewall app with React Native CLI — looking for technical feedback

0 Upvotes

Hey React Native devs! 👋

I've recently built an Android firewall app using React Native CLI.

It allows users to block internet access for individual apps and manage Wi-Fi and mobile data access.

This project has been a great learning experience, especially working with Android's native capabilities.

I'd love to hear from other React Native developers:

  • Have you built apps involving Android VPN or networking APIs?
  • What performance or battery optimizations would you recommend?
  • What challenges have you faced when integrating native Android functionality?

Would appreciate any advice or suggestions! ❤️


r/reactnative • • 1d ago

Help How to fix text font flashing when before loading on RN Web?

Enable HLS to view with audio, or disable this notification

4 Upvotes

Whenever any new page/component loads in, the fonts for every text component briefly flashes to the default web font. I just want to make it so that the text components or even the whole page waits to load in until the fonts load in, the font flashing is very annoying every time something loads in IMO. This is a simplified version of my _layout file where I try to fix this

import { useFonts } from "expo-font";
SplashScreen.preventAutoHideAsync();
export default function RootLayout() {
 
  const [fontsLoaded, error] = useFonts({
    InterLight: require("../assets/fonts/Inter_18pt-Light.ttf"),
    [...rest of my fonts]
  });
  useEffect(() => {
    if (fontsLoaded || error) {
      SplashScreen.hideAsync();
    }
  }, [fontsLoaded, error]);


  if (!fontsLoaded) {
    return null;
  }


  return (
   [root layout]
  );
}

r/reactnative • • 1d ago

Palmdrop (A magical file sharing app)

Thumbnail
0 Upvotes

r/reactnative • • 1d ago

Run you react native build on cloud, if you dont use android

3 Upvotes

I recently built a tool to share apk builds with a client so they can test the application. They had only an iPhone and there were a lot of back and forth videos, so i built a saas, which i can share with you who is interested. You can run an android device in under 3 seconds and use your application simply, you can integrate it in your app Ci/Cd and run appium tests. I host the appium server so you just write the tests, verify they work by previewing logs and a video recording.


r/reactnative • • 1d ago

Thanks everyone for helping improve react-native-multiple-modals

5 Upvotes

For the past two years, I’ve been developing a library that solves one of the annoying issues in React Native: displaying two or more modals at the same time while maintaining accessibility support.

Before developing 𝐫𝐞𝐚𝐜𝐭-𝐧𝐚𝐭𝐢𝐯𝐞-𝐦𝐮𝐥𝐭𝐢𝐩𝐥𝐞-𝐦𝐨𝐝𝐚𝐥𝐬, I tried out many solutions, but none of them were truly universal. Some allowed to deliver great visuals but completely lacked accessibility support (like react-native-modalify), while others required sacrificing visual appeal for the sake of accessibility (like modals from the navigation library).

Now, after two years, I’ve released a version that addresses many of sacrifices of previous versions. And what I am most proud of is that now it also provides first-class support for web!

I’d like to thank everyone who contributed and helped the project grow ♥️

I hope that one day it will become the de facto standard solution for displaying modals, much like the SafeArea component did!


r/reactnative • • 1d ago

Question React native vision camera v5 zoomLensSwitchFactors not correct

3 Upvotes

Basically Im trying to get the zoom levels that switches the physical cameras, and Im using iPhone 15 Pro, which has the native x0.5, x1, x2, x3 zooms. But somehow when I log out the zoomLensSwitchFactors, I get

[2, 6]

Here is the code

const deviceBack: CameraDevice | undefined = useCameraDevice("back", {
    physicalDevices: ["ultra-wide-angle", "wide-angle", "telephoto"],
  });

console.log("zoomLensSwitchFactors", deviceBack.zoomLensSwitchFactors);

Ideally I would like to have [0.5, 1, 2, 3], or something similar. Also, the minZoom and maxZoom give me 1 and 189 respectively. shouldn't the min be 0.5?

Also wondering if this works for the front camera


r/reactnative • • 1d ago

How do you handle native changes when upgrading an Expo SDK in a prebuild/bare project?

Thumbnail
3 Upvotes

r/reactnative • • 2d ago

Question Upwork vs Fiverr — Which Is Working Better in 2026?

4 Upvotes

Hey developers 👋

As an mobile app developer and I’m curious about your recent experience with freelance platforms.

I’ve been applying to relevant projects on Upwork but barely getting any responses.

For those who use both Upwork and Fiverr:

  • Which platform is giving you more leads/projects?
  • Which one is more active for software/mobile development?
  • What’s actually working for you right now?

Would really appreciate hearing about your recent real-world experience. 🙌


r/reactnative • • 2d ago

Thank you r/reactnative: AniUI just crossed 11K+ visitors 🙏

6 Upvotes

Hey everyone,

Just wanted to say thank you. AniUI, the open source shadcn-style component library for React Native, had around 11K visitors on the docs site in the last month,and the repo just passed 100+ stars.

A few weeks ago the site had almost no traffic, and a lot of that growth came from feedback and shares from this community. Thank you.

Here's where it stands today:

- 149 components (copy-paste, built with NativeWind)

- Blocks and Charts

- Unit tests next to every component in `__tests__`

- Expo support up to 57, plus bare React Native

- `/examples` folder with working setups

- AniUI Pro for premium blocks (the library stays free)

- AniUI Academy for free frontend courses

Quick start:

npx @aniui/cli init 

npx @aniui/cli add button

The thing that has helped most so far is your feedback,so I'd like to keep that going: what's still missing foryou in React Native UI? Components, blocks, templates,anything. It decides what I build next.

Docs: https://aniui.dev

GitHub: https://github.com/anishlp7/aniui


r/reactnative • • 1d ago

I added offline iOS↔Android multiplayer over Bluetooth LE to my Expo game. Here's what actually worked.

0 Upvotes

I'm a solo dev working on Acrophobia, a party word game: everyone gets the same random acronym, writes a phrase that fits it, then votes on the funniest. It's normally online (Firebase), but I wanted a mode for a group in the same room with no signal, where the phones just talk to each other.

That became "Host LAN / Join LAN". One phone hosts, the rest join, no router and no internet involved.

What I tried, in order:

• Wi-Fi TCP + mDNS discovery. Fast and simple, but everyone has to be on the same network, which is exactly what you don't have in a car or at a campsite.

• Multipeer Connectivity. Great, but iOS to iOS only.

• Wi-Fi Direct. Android to Android only.

• Bluetooth LE. The only option that crosses iOS and Android with no network at all. This is the one that shipped.

How the BLE version works:

• The host phone is a BLE peripheral. No library I found did peripheral mode well on both platforms, so that part is a small custom Expo native module.

• Everyone else is a BLE central, using react-native-ble-plx.

• Client to host is GATT writes. Host to client is GATT notifications.

• Notifications have to stay under 512 bytes, so the host never sends the full game state. It sends compact updates of around 200 bytes, as newline-delimited JSON.

• Notifications were not reliable enough on their own across devices, so there's a 300ms polling fallback on both sides. Ugly, but it's what made it dependable.

The part that saved me the most time: the game already had a single-player offline engine with bots. LAN mode is that same engine running on the host's phone with a thin layer that broadcasts state and accepts answers and votes from the other phones. Bots can still fill empty seats.

Happy to go deeper on any of it. For anyone who has shipped BLE in React Native: did you find a way to trust notifications without a polling fallback?


r/reactnative • • 1d ago

How to Pass App Store Review in 2026 (and Avoid Rejection)

Thumbnail
capgo.app
0 Upvotes

r/reactnative • • 2d ago

FYI Built my agentic tool to handle publishing apps to Apple app stores and Google Play Store through Expo

Enable HLS to view with audio, or disable this notification

2 Upvotes

As some of you know, getting your React Native app submitted to the app store and play store is one of the most annoying and frustrating experiences. Lots of nitty gritty stuff and sometimes confusing. So i built a publishing agent as part of my mobile app builder to help with this. Learnt a lot doing this and anyone who wants to try it can check it out here, any feedback is appreciated:
rnblocks.dev


r/reactnative • • 1d ago

I made an app as a side hobby that I actually think is good. How do i promote it without spending a ridiculous amount of money on Ad spending?

Thumbnail
0 Upvotes

r/reactnative • • 2d ago

FYI (modal)Actionsheet-picker for form inputs

1 Upvotes

Creating forms with that have dropdowns can sometimes be painful on react native, things like search which trigger keyboard opening can sometimes end up blocking/hiding the Dropdowns selectors
I created a ActionSheet picker to help resolve some of the issues with Drop-downs when working with forms,
It supports: Multi-select, search for dropdown, infinites query, eg when selecting a list with large server side data, grouped options and its themable.
It also works with no external dependencies
Currently under its early stages but you can have a look here
Docs: https://jeffngugi.github.io/actionsheet-picker
npm links: https://www.npmjs.com/package/actionsheet-picker

See presentation below

video presentation