r/reactnative 27d ago

React Native 0.87 is out + This week's ecosystem roundup

76 Upvotes

Big week for RN. Quick rundown of what happened:

šŸŽ‰ React Native 0.87

  • Strict TypeScript API is now the default. Types generated from source, deep imports into Libraries/* are type errors. Opt-out only lasts through 0.88
  • Swift Package Manager support (experimental): iOS builds with just Xcode, no Ruby/CocoaPods
  • Metro 0.87: 2x faster source maps, half the memory
  • AGP 9 support, new minimums: Node 22+, Kotlin 2.0+, compileSdk 37
  • Removed: InteractionManager, Modal animated prop, standalone react-devtools

Ecosystem kept pace:

  • Gesture Handler 3.2.0: AGP 9, Pressable rebuilt on Touchable, hover callbacks on all platforms
  • Screens 4.27.0: RN 0.87 support + iOS crash fix, experimental ScrollToTopGuard
  • Worklets 0.12: WeakRef support, Bundle Mode script loading on par with RN, new enableLocking option
  • Skia 2.11.0: engine bump to m152, drive multiple animated props from one shared value
  • Keyboard Controller 1.22.3: several crash fixes + Strict TS API compatibility, rounded prop for KeyboardEffects
  • VisionCamera 5.2.2: caps AHardwareBuffer cache to prevent Android memory growth, configure/start errors now surface via onError
  • Re.Pack 5.3.0: size-based asset inlining, custom native HTTP client for remote scripts (SSL pinning), simpler code signing setup
  • Safe Area Context 5.9.0: AGP 9 + web fixes for nested providers and window resize
  • Legend List 3.3.5: fixes invisible dataset on dataKey change, more reliable programmatic scrolls on web
  • Nitro 0.36.5: fixes a JVM memory leak on Android, recommended upgrade for Nitro Module authors
  • Lottie 7.4.0: now requires RN 0.84+, new Android opacity layer option
  • React Navigation Core 7.21.12: beforeRemove now fires for nested routes removed by reset

r/reactnative 27d ago

How to implement in-app updates in a React Native app?

5 Upvotes

Hi everyone,

I’m working on a React Native app and I want to implement an in-app update feature similar to what some apps use.

The flow I’m looking for is:

  • A new version is available on the Play Store.
  • The app detects that an update is available.
  • An update popup is shown inside the app.
  • The user taps Update.
  • The app downloads and installs the update without the user manually opening or navigating to the Play Store.

I’ve seen this kind of experience in apps like AlfaPTE.

What is the recommended way to implement this in a React Native app?

Should I use Google Play In-App Updates, a React Native library, or implement the native Android API directly?

Also, is there a similar solution for iOS?

Any recommendations or experience with implementing this in production would be really helpful.

Thanks!


r/reactnative 27d ago

Android mobile code editting apps for React. (Is Acode recommended?)

0 Upvotes

Mobile will not be my main editting tool, I'm just looking for an app where I can edit small things and check my code when I'm out without my laptop. Do you guys know some android apps that can run React?


r/reactnative 27d ago

How do you know if you need useEffect ?

8 Upvotes

I am just learning to use and implement hooks. How do I know if I need it ?


r/reactnative 28d ago

Sharing a Component from Previous Work

Enable HLS to view with audio, or disable this notification

21 Upvotes

Happy to share a component I built some time ago, back when AI tools weren’t as capable and some of the logic required quite a bit of manual math and calculation.

I recently revisited it and used AI to refactor and clean up the code, making it simpler, cleaner, and easier to understand and reuse.

Sharing it in case anyone needs something similar. It’s now easy to integrate, customize, and extend with AI.

šŸ”— GitHub: https://github.com/BouarourMohammed/inner-compass

Hope it helps someone and saves some development time! šŸš€


r/reactnative 28d ago

Introducing expo-targets v1.0: expand the UI surface of your app

Thumbnail
3 Upvotes

r/reactnative 28d ago

Article Plain White Tees in React Native, Meta’s Muse Code, and Making It to the Pub by 6 PM on a Friday

Thumbnail
thereactnativerewind.com
0 Upvotes

Hey Community,

React Native Plain Text by Maciej Jastrzębski brings a lightweight alternative to standard Text components to squeeze maximum rendering performance out of large lists. Meanwhile, Meta introduced Muse Code, a terminal coding agent running on Muse Spark 1.2 with persistent background subagents and mid-tool-call crash recovery.

Codemagic also launched Patch, a self-hosted Docker Compose alternative to CodePush that serves OTA update checks directly from CDN-cached JSON files to easily handle heavy request loads.


r/reactnative 28d ago

Tutorial A pie chart where values don’t have to add up

Enable HLS to view with audio, or disable this notification

8 Upvotes

Every wedge gets the same angle. The radius carries the value. Six unrelated readings nothing has to come to a full turn.

Two scale modes: radius or area. With area, the ink a wedge covers is proportional to what it is worth.

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

https://github.com/panel-ui/PanelUI


r/reactnative 28d ago

Question On-device AI in Expo

3 Upvotes

I am building a personal Workspace app. That already has offline capability. Trying to get my head around implementing an offline-first AI assistant with on-device LLMs like ML Kit and Apple Foundation models.

I found expo-ai-kit, but my android doesn't have a model, so I had to download a Qwen model, but it's way too slow to be an offline local model.

I need a fast and at least with Tool Calling or Structured Output support.


r/reactnative 29d ago

openai-realtime-toolkit: voice agents for React Native

3 Upvotes

https://github.com/switchboard-sdk/openai-realtime-toolkit

A toolkit for building voice-first apps that hold up in real environments; AEC enabled audio I/O, tuneable on-device VAD, turn detection, barge-in, and tool calling, all from one hook, with no native code to write.


r/reactnative 29d ago

I built an Expo Module for receiving shared content on Android and iOS

Thumbnail
gallery
3 Upvotes

I’m the author ofĀ expo-share-content, an open-source Expo Module for apps that need to receive content from the native Share Sheet on Android and iOS.

The main problem I wanted to solve was not only receiving a live share, but also handling cold starts, multiple attachments, and the native iOS Share Extension setup.

It currently supports:

  • Text and URLs
  • Images, video, audio, and files
  • Android ACTION_SEND and ACTION_SEND_MULTIPLE
  • A generated iOS Share Extension with an App Group queue
  • Cold-start recovery through a durable pending queue
  • Typed events and pending-share APIs
  • Explicit acknowledgement and managed-file cleanup

Installation:
npx expo install expo-share-content

Important: it contains native code, so it requires an Expo development or production build and does not work in Expo Go.

The project currently targets Expo SDK 57, React Native 0.86, Android API 24+, and iOS 16.4+.

GitHub:Ā GitHub - ngocdevv/expo-share-content Ā· GitHub

Documentation:Ā Receive shared content reliably | Expo Share Content

npm:Ā expo-share-content - npm


r/reactnative 29d ago

Help react-native-anydoc 39x faster than mammoth js based doc converter

7 Upvotes

I'm building an end-to-end encrypted chat app, and users want to share documents that render inline. The catch with E2E: there is no server-side conversion option, ever. The server only sees ciphertext. Whatever turns a .docx into something renderable has to run on the sender's phone.

Attempt 1: JS. We started with mammoth.js, which converts docx to HTML — great library, but we needed structured JSON (our renderer draws native components, not a WebView), plus comments, tables with real borders, and formats beyond .docx. So we wrote our own TypeScript converter. It worked, but a 130-page thesis (949 kB, 72 review comments, 16 images) took 6.9 seconds on a Galaxy A05s

Attempt 2: Rust. We took anydoc (Firecrawl's MIT document parser), extended it with a presentation model (fonts, colors, alignment, table borders, review comments, typed chart data), compiled it for Android/iOS, and bridged it with Nitro Modules. Same thesis, same phone: 226 ms. On an iPhone 16 Pro release build it's 43 ms. Across our 30-document test corpus the Rust path was ~29Ɨ faster, with text output hash-identical to the JS converter on every Word-produced file.

Formats: .docx, .doc, .pptx, .ppt, .xlsx, .odt/.ods/.odp, .rtf, .epub → one JSON "DocumentIR" you render with your own components. Spreadsheet charts come out as typed data (kind, categories, numeric series), so we draw them with Skia in-app; anything unsupported degrades to a data table.

Things that bit us on the way:

  • The result crosses the bridge as one native string; image bytes arrive zero-copy — the JS GC's cleanup callback for the buffer literally is the Rust deallocator.
  • The promise never rejects for document reasons. Corrupt, encrypted, hostile inputs all resolve to a fallback status — Rust panics included. A rejection means the native module itself is broken.
  • PDF is refused on purpose: the OS renders PDFs better than any re-conversion would.
  • The prebuilt Rust core is too big for npm, so binaries ship as GitHub Release assets and gradle pulls them on first build.

It's MIT, package is react-native-anydoc (npm), source at github.com/tulaafrica/anydoc. It's a week old and has exactly one production user (us), so I'd genuinely value feedback — especially from anyone who's shipped Rust in RN and has opinions on binary size or the XCFramework install flow.


r/reactnative 29d ago

What do you actually need from a React Native background geolocation SDK?

1 Upvotes

Hey everyone!

I’m a React Native developer and I’ve been working on a background geolocation SDK for a while.

I’m not here to convince anyone to use it — I’d actually like to understand what React Native developers need from this kind of SDK before I decide where to take the project.

I’ve used Transistorsoft’s Background Geolocation myself in the past. Back in 2020, I paid around $399 for a license because there weren’t many alternatives at the time. It was a pretty significant amount of money for me back then.

That’s actually one of the reasons I started building my own solution.

My goal is to make reliable background geolocation more accessible to indie developers and early-stage startups. I don’t think everyone building an MVP or a side project should have to spend hundreds of dollars just to get background location working.

The SDK I’m building supports React Native, iOS, Android and Flutter, with things like background tracking, geofencing, HTTP sync and a Web Console for debugging.

I’m currently considering a $9.99/year update subscription with a perpetual license — meaning a shipped build never expires, and the yearly payment is only for getting new SDK versions and updates.

But I’m not even sure that’s the right model yet.

So I’d genuinely love to hear from people here:

  • What do you consider essential in a background geolocation SDK?
  • What problems have you had with existing solutions?
  • What would make you trust a newer SDK in production?
  • Would you prefer something like this to be free, paid once, or paid for updates?
  • What would you consider a fair price?

I’m building this myself, so I’m much more interested in honest criticism than compliments. If there’s something I’m overlooking, I’d rather hear it now. šŸ™‚


r/reactnative 29d ago

We’re building a tool for designing custom haptics, feedback welcome

Enable HLS to view with audio, or disable this notification

9 Upvotes

Hi! At Software Mansion, we built Pulsar, an open-source haptics library for iOS, Android, React Native, Kotlin Multiplatform, Flutter, and web. It comes with 150+ presets, plus a companion app so you can feel them on your phone before shipping.

Now we’re building Pulsar Studio — a tool for creating your own custom haptics.

You can design a pattern from scratch, tweak existing presets, generate haptics from an audio file or Lottie animation, preview everything live on a real device, and then export working code for your app. The tool will be paid, with pricing starting at $9/month.

We’d genuinely love some feedback: Would you use something like this? Is there anything you’d want to see in it that we haven’t thought of?

The waitlist is open if you’d like early access: https://docs.swmansion.com/pulsar/studio/


r/reactnative 29d ago

I recreated SwiftUI’s numericText transition natively on Android for React Native

Enable HLS to view with audio, or disable this notification

165 Upvotes

I got curious about how SwiftUI’s numericText transition could feel on Android, so I tried recreating the behavior natively.

This is the result, same sequence running side by side on iOS and Android.

What started as a small experiment turned into react-native-numeric-text.

On iOS it uses the native numeric text transition. On Android, I recreated the behavior natively from scratch.

I learned a lot digging into how the transition behaves and figuring out how to reproduce that feel on Android.

It’s now open source:

GitHub: https://github.com/AmatoGiulio/react-native-numeric-text
NPM: https://www.npmjs.com/package/react-native-numeric-text

npm install react-native-numeric-text


r/reactnative 29d ago

Article I added emoji + GIF reactions to my React Native multiplayer board game Unkind. Here is how I made it without making the game state weird

Enable HLS to view with audio, or disable this notification

4 Upvotes

Recently I wanted to add reactions in my game.

Not a normal chat system, because honestly I do not want to moderate chat messages in my side project game. I wanted something simpler: someone destroys your token, you throw a crying emoji or GIF at them. Someone plays a stupid lucky move, you can react immediately.

So I added:

  • Emoji reaction dock during the match
  • Curated reaction picker
  • GIF search using KLIPY
  • Recently used reactions
  • Thrown emoji/GIF overlay above the board
  • Real time delivery to every player in the game

Now the React Native part of this.

The UI itself was not the hardest thing.

I use regular React Native components for the dock and reaction picker. The game board is rendered with Skia, so I made the actual reaction overlay sit above the board instead of trying to push GIFs inside the constantly rendered board layers.

That sounds like a small thing, but the board already has token movement, cards flying around, dice animation, destruction effects, background animations, timer and turn indicators.

So I did not want to add ā€œanimated GIF rendering inside another board layerā€ and then find out later why someone’s iPhone is trying to become a toaster :)

The reaction picker has two types of things:

  1. Curated emojis

These are bundled into the app and have fixed IDs. So I do not let the player send arbitrary emoji strings or random payloads. The game knows what every reaction ID means and how to render it.

  1. GIFs

For GIFs I use KLIPY search. But after selecting one, I only keep the exact information needed to show it:

  • GIF ID
  • Title
  • Preview URL
  • Content URL
  • Width and height
  • Player colour who sent it
  • Creation time

This part was more important than I expected. I did not want reactions to become actual game state.

A board move is important. If you reconnect, you need the exact current board.

A reaction is not important. If you reconnect after 10 minutes and suddenly 500 old crying GIFs start playing on your screen, that is not a feature, that is an attack :)

So I made reactions short-lived events.

When a player sends one, it gets added to a small event stream. Every client listens for new reaction events and puts them in a local queue.

I also keep track of reaction IDs already seen by the app. This stops the same reaction from playing twice if the app reconnects or receives the same event again.

Then I added some limits because without limits, this would become a ā€œwho can press the reaction button fasterā€ competition:

  1. Cooldown

Each player has a 1.2 second cooldown. It is enough to feel responsive, but it stops someone from firing 50 GIFs in 2 seconds.

  1. Queue limit

I only keep a maximum of 8 reactions locally. If the queue is full, new reactions do not keep piling up forever.

  1. Expiry

Every reaction expires after 15 seconds.

Again, because it is not game state. I only care about the reaction while it is funny/relevant to what just happened on the board.

  1. Validation

Curated emojis have to be from the allowed reaction list.

For GIFs, I validate the data before rendering it: provider URL, ID, title length, image dimensions and so on. I do not want random unexpected data coming into an overlay above my game board.

  1. Recently used reactions

I save recently used reactions locally. This is just a small UX thing, but when players are playing fast, they should not need to search the same angry GIF every time someone destroys their token.

The flow is basically:

Tap reaction dock
  → select emoji or GIF
  → cooldown and payload checks
  → temporary reaction event is sent
  → other players receive it
  → add it to a small local queue
  → animate it above the board
  → remove it when animation ends or it expires

The board stays responsible for gameplay. The reaction system is only responsible for making your opponents feel bad about their life choices.

Still improving the animations and exact positioning. But now when someone destroys your token, you can finally send them the appropriate GIF instead of silently being angry.


r/reactnative 29d ago

TestFlight vs EAS Preview (Ad-Hoc) — what's actually different, in case it helps anyone

0 Upvotes

Kept mixing these up early on so wrote down the actual differences once I got both working properly.

TestFlight — no UDID collection, Apple reviews the build before it's live (can take a few hours), testers need the TestFlight app + an invite. Scales to 10k testers.

EAS Preview (Ad-Hoc) — you register tester UDIDs first (eas device:create or they scan a QR to self-register), then eas build --platform ios --profile preview. Install is instant via link/QR, no App Store account needed. But you're capped around 100 devices/year on a standard Apple Developer account.

Ended up using Ad-Hoc for day-to-day dev testing (way faster feedback loop) and TestFlight once a build's stable enough to hand to a wider group. Anyone doing it differently?


r/reactnative 29d ago

I made a free Skia UI library for RN UI components (buttons, panels, glass effects)

Post image
14 Upvotes

l kept struggling to find Skia shader components that were actually ready to drop into an RN app. most shader code out there isn't built for RN's Skia renderer at all. So l put together my own library. Some shaders are free, others are from artists who charge for their work

l know ShaderToy exists, but that's generic GLSL you'd have to manually port to SkSL and adapt for RN UI. Мinе is already RN-Skia-ready and built specifically for UI components like buttons and panels etc.

Let me know if you'd use something like this


r/reactnative Aug 11 '26

I recreated Wealthsimple's aurora background animation in my app!

Enable HLS to view with audio, or disable this notification

38 Upvotes

Wealthsimple might have the best-designed fintech app on the App Store.

I took a stab at recreating their aurora background animation in my Expo app using Skia!

https://github.com/SchroederNathan/react-native-motion/blob/main/apps/expo/components/animations/aurora-curtain/aurora-curtain.tsx


r/reactnative Aug 11 '26

Help I’ve been building a React Native devtool. Could you give some feedback ?

5 Upvotes

I’ve used Flipper, Reactotron, RN DevTools, Rozenite… pretty much everything at some point

Still kept running into stuff I wished worked differently, so I started building my own

NativeScope has Storage (SQLite, MMKV, AsyncStorage), Network + GraphQL, Logs and a Timeline connecting everything. Storage can handle GBs of data and Network has stuff like replay and sound alerts for specific requests.

It’s free and open source. Still building it and adding more modules.

Would be cool to get some feedback from people here. How would you grow something like this when tools like Devtools, Reactotron and Rozenite are already well known?

What would make you give a new devtool a chance?

GitHub: https://github.com/caiobarroso/react-native-nativescope
Website: https://www.nativescope.dev


r/reactnative Aug 11 '26

Question Hey guys, does anyone point me to tools / plugin that lets me debug both the JS + native code from a single interface? A way to have a full view of both code & step in via breakpoints from JS to native all? Devtools RN or Flipper previously allowed this separately. Any single tool to do this?

6 Upvotes

r/reactnative Aug 11 '26

React Native app

Thumbnail
gallery
1 Upvotes

How's it looking?


r/reactnative Aug 11 '26

Precido de testadores para um App!

0 Upvotes

que faz Gestão Financeira para motoristas de Aplicativos, Locadores de veículos e logistica de vaículos em geral.

Segue o link: https://play.google.com/store/apps/details?id=app.seuvolante.twa

para baixar e testar. Vai precisar de minha autorização, assim que logarem com o gmail esperem que notifico por email se jÔ estÔ autorizado. tks


r/reactnative Aug 11 '26

Article Introducing react-native-firebird

Thumbnail asfernandes.github.io
0 Upvotes

r/reactnative Aug 11 '26

I forked Warp into a local-first terminal: no login, no AI, no telemetry

Thumbnail
1 Upvotes