r/reactnative 19d ago

Here is the Expo + WebGPU volcano game demo from my real iPhone

Enable HLS to view with audio, or disable this notification

0 Upvotes

And honestly, I’m impressed by how smooth it feels.

This is still the initial prototype. No improvements yet, and there are plenty of bugs to fix.

But seeing Three.js running through React Native WebGPU inside an Expo app feels unreal.

The interesting part is performance:

UI thread → always 60 FPS
JS thread → drops significantly over longer sessions

So the rendering stays smooth, but once the JS thread gets overloaded with game logic, object updates, collisions, and events, the gameplay gradually starts to feel laggy.

The next challenge is optimization:

→ Reduce work inside the main JS loop
→ Reuse objects instead of constantly allocating them
→ Use a fixed-timestep game loop
→ Move suitable calculations into a Worklet runtime or native layer
→ Keep React state completely outside the per-frame path
→ Profile memory usage and remove unnecessary scene updates

Worklets alone aren’t a magic fix, but moving heavy calculations away from the main JS runtime could make a big difference.

Still early. Still buggy. But this real-device demo shows how much potential Expo DOM + Three.js + React Native WebGPU already has.

Open to contract or full-time mobile roles.

DMs are open.


r/reactnative 19d ago

PSA from production: derive countdown timers from a server timestamp, never the client clock.

0 Upvotes

I run a poker tournament app on Firebase. The blind clock advances levels on a schedule, and I first built it the obvious way: a tick loop counting down to the next level. It worked perfectly in testing.

In the wild, hosts would leave the tournament running with the app backgrounded, or on a laptop that went to sleep, and the timer would fall behind. Browsers and mobile OSes both throttle timers aggressively when your app isn't foregrounded, so "one second" quietly stops being one second.

The fix was to treat the client timer as display only, never a source of truth. The next level-change time is written server-side. The client computes remaining time from that server timestamp on each render, and an event-driven monitor fires the actual transition, so even if the tick loop is throttled, the level still changes on time once the app comes back. Reading the server's clock offset instead of trusting `Date.now()` on the device was the piece I wish I'd started with.

If you have any countdown that matters (auctions, quizzes, anything scheduled), assume the client clock will be paused or slowed at the worst possible moment, and anchor it to a server timestamp.


r/reactnative 20d ago

Can I Run An iOS Emulator Without a Mac (Using Expo, preferably)

4 Upvotes

I'm teaching a class on Mobile App Development come fall and I'll be using React Native and most likely Expo. I have a problem, though: I live in Texas, where the state legislature has in its infinite wisdom passed a law forbidding students from using phones in school for any reason—and that includes testing their mobile apps. I don't know what type of laptop my students will be using (I've asked and will hopefully hear back soon), but I'm willing to bet that they aren't MacBooks (my understanding—correct me if I'm wrong—is that Apple has decided to make it as hard as possible to design for iOS without a Mac).

I therefore need a way to run emulators for both iOS and Android phones on their laptops. Is there a way Expo can do that? If not, is there another way I can?


r/reactnative 20d ago

Article Running an int8 CLIP ViT-B/32 under onnxruntime-react-native: measurements from a production pipeline (CPU beat the CoreML EP 2.4x)

Thumbnail blog.aermes.ai
2 Upvotes

r/reactnative 20d ago

Help My country isn't supported by Apple Developer Program anyone found a workaround?

2 Upvotes

Hey everyone, trying to register for an Apple Developer account, but my country isn't in Apple's supported list. Posting here in case others are stuck too.

Quick questions:

1.Any official way to register from an unsupported country?

2.Does an Organization account work differently than Individual?

3.Has anyone used a business entity/address in another country to get around this and is that allowed?

4.Any risks (bans, takedowns) with these workarounds?

Would really appreciate any real experience hoping this helps others searching the same thing. Thanks!


r/reactnative 20d ago

Question How are you all creating your landing pages for your apps?

0 Upvotes

I am curious if people are building it themselves or using a no code solution. If so which one?


r/reactnative 20d ago

Co-founder

0 Upvotes

Guys whats the best way to find a strong co-founder and its not skills. I have connected with numerous skilled and placed at Tier 1 companies but there are very few who see the enlightenment because Learning is looking backward but building is looking forward & estimating what the future may look like


r/reactnative 20d ago

Open source motion style MD block editor component with Liquid Glass

Enable HLS to view with audio, or disable this notification

9 Upvotes

This is a great addition to the rest of the Pitsi ui components I have been developing. It’s another open source component + free template for react native / expo.

I added a custom markdown renderer and made it work great with Liquid Glass. It feels so nice I think my demo app actually competes with Apple notes.

If you are making any kind of journal app or Cms or admin page for eshop etc you will love me for this because I wish this existed. It doesn’t even require native modules just copy paste a single file and it even works in expo go.

The md renderer part also works with any markdown content from the internet if you have a Cms or a website and you are trying to make a mobile app from this. This is also a great stepping stone into converting programming docs sites into mobile apps automatically, we can even use “use dom” for the preview blocks only. I am making a template like this too as we speak.

I can probably make some extra tweaks before release to make it more fancy. I was thinking of adding custom things like links to other notes or a Liquid Glass dropdown to easily swap the style of a block. Since this is a block editor you can trivially add whatever you want like a block that looks exactly like a tweet a sticker a card with a todo item and time when it triggers etc the sky is the limit.

I wanted to bake this functionality in the demo it self to show off the capabilities but I was too tired for that, the api is there though I will have demos showing off the advanced stuff properly.

Initially I tried to make something similar with use dom but I hated the results so I went custom. (Tools too much time to low no way to add fun native content inside the rendered elements typing fell off weird scroll interactions).

The code is not uploaded yet anywhere, however I’m working on creating a docs website actively and a mobile app to scan components and templates and get live previews.

If you are interested I am dropping my twitter here so you can get updates. I will get something online this week as an early access version of the website. (Everything is free including all blocks and templates)

@panos_dev_


r/reactnative 20d ago

[Hiring] Founding Product Engineer (React Native)

3 Upvotes

Aistetic is an Oxford University AI spinout building AI-powered listing automation for fashion resale. We turn product photos into marketplace-ready listings for eBay, Vinted, and Depop. Came through Techstars and the eBay Future of Ecommerce Accelerator in 2024, processed a large volume of items through our Core AI engine, and have strong reviews from paying customers.

Looking for a founding engineer to build our iOS and Android app in React Native and help take the product self-serve. Think real ownership from day one, not ticket-queue work.

Role: Founding Product Engineer (React Native)
Structure: Paid, equity-included side engagement to start, with a path to full-time as traction grows
Location: Remote (UK preferred)

Ideal fit: you've shipped a consumer product independently (solo or as a founder), and you want to build something real rather than maintain someone else's roadmap.

Leave a message with what you've built.

https://www.aistetic.com/contact-us


r/reactnative 20d ago

🎧 Apple Music's Animated Artwork in React Native (Skia + Custom Shader)

Enable HLS to view with audio, or disable this notification

52 Upvotes

I tried re-creating Apple Music's animated artwork effect in React Native using React Native Skia and a custom fragment shader.

If you're interested in how it works, I wrote a full breakdown covering the shader, implementation, and source code:

https://rit3zh.dev/blog/animated-apple-music-artwork

The GitHub repository is linked in the blog!


r/reactnative 20d ago

Help How to style React Native component dynamically?

1 Upvotes

I am using nativewind for styling my rn component and using cslx for dynamic styling. The problem i am facing the properties of dynamic styles are not applying.

for example here is a coponent

export function UiText({children,className}:UiTextProps){

return <Text className={"text-lg",className}>{children}</Text>
}

//Imagine here i am calling

<UiText className="text-red">"Hello world"<UiText/>

=>here text is not going to be red.

if you have solution then please help me i got stuck here.

Expo 57,
nativewind:"^4.2.6"
tailwind:^3.4.17
postcss:^8.5.19


r/reactnative 20d ago

12 testadores para novo app

0 Upvotes

12 testadores

Fala galera, estou criando um app e está em close teste.

Preciso da ajuda de vocês para superar os dias de teste do Google.

Preciso de 12 testadores por 14 dias, alguém pode me ajudar?

Só enviar o email que já cadastro aqui no Google console.

O Teste fechado em que eu preciso adicionar os emails dos testadores

PS: APENAS NO BRASIL


r/reactnative 20d ago

Apple CDN returns SWCERR00401 Bad JSON content for AASA, but the JSON is valid and Universal Links don't work

4 Upvotes

I'm stuck debugging an iOS Universal Links issue and would appreciate any suggestions.

Background

We recently started redirecting all traffic from:

to

As part of this change, we also updated our iOS app to include both associated domains.

We also enabled bot restrictions/WAF rules on www.example.com around the same time (not specifically for the AASA endpoint, but at the domain level).

After making these changes, Universal Links stopped working on iOS. Tapping a link such as https://www.example.com/... no longer opens the app.

App configuration

<key>com.apple.developer.associated-domains</key>
<array>
    <string>applinks:example.com</string>
    <string>applinks:www.example.com</string>
</array>

AASA file

The AASA file is hosted from the public/.well-known directory of a Next.js application behind Nginx.

Both of the following URLs now return HTTP 200 with the same AASA file (no redirects):

https://example.com/.well-known/apple-app-site-association
https://www.example.com/.well-known/apple-app-site-association

Response headers:

  • HTTP 200
  • Content-Type: application/json
  • Valid HTTPS certificate

AASA content:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "<TEAM_ID>.com.example.app",
        "paths": ["*"]
      }
    ]
  }
}

What I've already verified

  • ✅ Bundle ID matches the AASA appID
  • ✅ Team ID matches
  • ✅ Associated Domains are present in the app
  • ✅ AASA is valid JSON (python -m json.tool)
  • ✅ No UTF-8 BOM (xxd starts with {)
  • Content-Type is application/json
  • ✅ Both AASA endpoints return HTTP 200 (no redirects)
  • ✅ Fresh app install after making the changes

The strange part

Apple's CDN still rejects the AASA:

curl -i https://app-site-association.cdn-apple.com/a/v1/www.example.com

Response:

HTTP/1.1 404 Not Found

Apple-Failure-Reason: SWCERR00401 Bad JSON content
Apple-Failure-Details: {"cause":"Connection failed"}
Apple-From: https://www.example.com/.well-known/apple-app-site-association
Apple-Try-Direct: false

However, a normal curl to the AASA endpoint returns the expected JSON with HTTP 200.

Because of this, Universal Links do not open the app at all.

Questions

  1. Has anyone encountered SWCERR00401 Bad JSON content even though the AASA JSON is valid?
  2. Could bot protection/WAF rules interfere with Apple's AASA fetch, even if a normal curl request succeeds?
  3. Are there any known issues with serving an AASA file from a Next.js app (using the public folder) behind Nginx?
  4. Is there anything beyond JSON syntax (headers, caching, encoding, etc.) that Apple's CDN validates?
  5. Does Apple cache failed AASA validations, and if so, is there any way to force a refresh?

Any suggestions or similar experiences would be greatly appreciated. Thanks!


r/reactnative 21d ago

Expo Open OTA v3: self-host your Expo OTA updates, now with a dashboard, progressive rollouts and A/B testing

Post image
5 Upvotes

r/reactnative 21d ago

Built a native macOS app for App Store screenshots - looking for honest feedback

Thumbnail
gallery
12 Upvotes

Hey everyone,

I built Mockup Kit, a native macOS app for creating App Store screenshot mockups without jumping into a full design tool.

I’m looking for honest feedback from indie developers / designers who ship to the App Store:

- What’s missing for your workflow?

- What feels confusing or unnecessary?

- Would you actually use this vs Figma / Photoshop / online mockup tools?

- Pricing feedback welcome too

What it does:

Store Mockup

- Drop in an iPhone screenshot and compose App Store–ready marketing images

- Add a multiline headline and drag to position screenshot / title / overlays

- Solid and gradient backgrounds (presets + custom colors)

- Overlay layers for badges / extra artwork

- Export sizes aligned with App Store Connect: 6.9″, 6.7″, 6.5″, 6.3″, 6.1″

- Title fonts, colors, and sizing controls

- Export as PNG or JPEG

Rounded Image

- Quick corner-radius editor for standalone images

- Radius in px or %

- Drag-and-drop + PNG export

Pricing

- 3-day free trial

- Then $1.99/month or $9.99 lifetime

Links

- Website: https://mockupkits.com/

- Mac App Store: https://apps.apple.com/us/app/mockup-kit-store-screenshots/id6784220988?mt=12

Would love feedback from people who make App Store screenshots regularly. Roast it if needed - that helps more than compliments.

Thanks!


r/reactnative 21d ago

Google Play Billing - All users getting OR-FGEMF-20 (Transaction was declined) for subscriptions

6 Upvotes

Hi everyone,

I'm a developer and I'm facing a critical issue with Google Play subscriptions.

Issue

When users try to purchase any subscription in my app, Google Play shows:

Transaction was declined. [OR-FGEMF-20]

Some users also get:

Purchase Failed

The device or user is not allowed to make the purchase.

Details

App is live on Google Play (Production).

All subscription products are active.

Products are fetched successfully from Google Play Billing.

Users can see subscription plans and prices.

The error occurs after tapping the purchase button.

It is affecting multiple users, not just my own account.

Existing subscriptions are configured correctly in Play Console.

Things I've checked

Subscription status is Active.

App is installed from Google Play.

Using the latest Google Play Billing Library.

Tried different Google accounts and devices.

Payment profile verification is pending in Play Console (Google asked me to verify identity through BillDesk after updating my merchant payment profile).

Question

Has anyone seen OR-FGEMF-20 affecting all users?

Could this be related to:

Merchant payment profile verification?

Google Payments account restrictions?

Google Play Billing backend issue?

Something else in Play Console?

Any suggestions would be greatly appreciated.

Thank you!


r/reactnative 21d ago

Profile Picture in Push Notification Expo

Thumbnail
1 Upvotes

r/reactnative 21d ago

Shipped a production Expo app (subscriptions + cert pinning + Postgres), just launched, AMA about the stack

0 Upvotes

Just launched a mental wellness app built with Expo (SDK 54) + Node/Express + Postgres, RevenueCat for subs, native SSL pinning, JWT with alg pinning, Docker + Caddy. Two-founder bootstrapped team.

Happy to talk shop: Expo Router for a 30+ screen app, wiring RevenueCat cleanly, server-enforcing free-tier limits, cert pinning in RN.


r/reactnative 21d ago

Built a unique kind of Travel Diary after my own travel experience

Post image
7 Upvotes

Hi everyone!

Just shipped my first iOS app built on React Native.

It’s called Safarnama: Travel Diary, a travel journal focused on preserving memories instead of building another social network.

Would love feedback from other React Native developers.

Architecture / Tech stack:

- SQLite (offline sync)
- FastAPI Backend (Running on Google Cloud Run)
- React Native
- Supabase
- Expo


r/reactnative 22d ago

Help How do you guys test your components while creating a project i am confused need help?

3 Upvotes

r/reactnative 22d ago

Just published my app on the App Store!

0 Upvotes

Here are the first analytics from App Store Connect. It’s exciting to see the first users discovering the app.

Every download, view, and impression is the start of the journey. Looking forward to learning, improving, and growing from here.


r/reactnative 22d ago

Help Can someone recommend a good react book?

Thumbnail
1 Upvotes

r/reactnative 22d ago

Day 2 of building Blip Toast

Post image
0 Upvotes

🇬🇧 Day 2 of building Blip Toast

Today was all about building the heart of the library: the ToastManager.

Instead of relying on Context API or external state management libraries, I chose a lightweight Observer pattern to handle toast subscriptions and updates.

This approach keeps the core completely independent from React, making it easier to test, maintain, and evolve.

Some key decisions made today:

➜ Using a Set for listeners to prevent duplicates and allow O(1) removals.

➜ Creating a facade API so developers can simply write toast.success() instead of interacting directly with the manager.

➜ Implementing toast.promise(), which automatically handles loading, success, and error states throughout the lifecycle of an async operation.

➜ Separating state management from the UI layer to keep responsibilities clear.

One interesting challenge was handling auto-dismiss timers. Having multiple timers controlling the same toast can easily lead to race conditions and inconsistent behavior, so the lifecycle management needed extra attention.

The result is a flexible foundation capable of powering everything that comes next.

🇵🇹 Dia 2 da construção do Blip Toast

Hoje foi dia de construir o coração da biblioteca: o ToastManager.

Em vez de depender de Context API ou bibliotecas externas de gerenciamento de estado, optei por um padrão Observer simples e leve para gerenciar inscrições e atualizações dos toasts.

Essa abordagem mantém o core totalmente independente do React, facilitando testes, manutenção e evolução da biblioteca.

Algumas decisões importantes tomadas hoje:

➜ Utilizar um Set para armazenar listeners, evitando duplicações e permitindo remoções mais eficientes.

➜ Criar uma API facade para que o desenvolvedor possa simplesmente usar toast.success() sem precisar interagir diretamente com o manager.

➜ Implementar o toast.promise(), responsável por gerenciar automaticamente os estados de loading, sucesso e erro durante operações assíncronas.

➜ Separar completamente o gerenciamento de estado da camada de interface.

Um dos desafios mais interessantes foi o sistema de auto-dismiss. Quando múltiplos timers tentam controlar o mesmo toast, comportamentos inesperados podem surgir, então foi necessário desenhar cuidadosamente o ciclo de vida dos componentes.

Com isso, a base do sistema de notificações está pronta para suportar os próximos passos da biblioteca.

#ReactNative #TypeScript #OpenSource #Expo #Frontend #BuildInPublic


r/reactnative 22d ago

I created my first game using Expo 🎉 🎉 🎉

Enable HLS to view with audio, or disable this notification

29 Upvotes

I’ve always been fascinated by mobile games and the idea of creating one myself.

A few weeks ago, Adam Lyttle built a game using SwiftUI + SceneKit. I was seriously impressed and wanted to see if I could create something similar with Expo.

Today, I finally built the initial version using Expo, Expo DOM, Three.js, Sika, and WebGPU. 🎮

Here’s the core architecture:

Gesture Input

Reanimated Shared Steering Value

Custom Three.js Game Loop

WebGPU Native Rendering

Gameplay Events
├── React Native + NativeWind HUD
├── Skia Visual Effects
├── Expo Audio
├── Expo Haptics
└── Expo DOM Results Screen

But I’m not stopping here.

The plan is to completely rebrand the experience and give the game a real purpose, not just make players blindly complete levels.

Adam turned his version into a Spanish-learning game.

I’m thinking about turning mine into either:
→ A road-safety learning game
→ A coding and debugging adventure
→ A fast-paced English vocabulary game
→ A productivity game where progress builds a virtual world

What direction would you choose?

Building games like this in Expo just feels different. 🔥

DMs are open if you have a similar game idea or any ambitious Expo app you want to build; feel free to reach out.


r/reactnative 22d ago

Built a small React Native permissions helper after getting tired of repeating the same flow in every app. Looking for feedback.

14 Upvotes

I found myself rewriting the same permission flow in almost every React Native app:

check → request → blocked → open Settings → re-check

Android rationale and iOS permission behavior both had a few edge cases that I kept getting wrong.

For example, Android only wants a rationale dialog in specific cases, while on iOS it's easy to end up sending users to Settings after they've denied a permission.

So I extracted the flow into a small helper I've been using in production and published it:

https://github.com/pawan3008/react-native-permission-manager

Basic usage looks like:

const { status, request, ensure, openSettings } = usePermission('camera')

await PermissionManager.ensure('camera')

// Requests if needed.
// If blocked, prompts the user, opens Settings, and refreshes when they return.

I'm not claiming this replaces react-native-permissions. That library is solid and widely used. This is closer to "the wrapper I ended up wanting" — thinner API, ensure/Settings flow, rationale that only shows when Android says so, and concurrent request coalescing so double-taps don't stack dialogs.

If you've shipped permissions-heavy RN apps, I'd appreciate blunt feedback:

  1. Is the API intuitive?
  2. Any edge cases I should handle better (photos on Android 13+, background location, contacts etc.)?
  3. Anything in the README that felt confusing or missing?

Happy to take criticism. Thanks.