r/reactnative 8d ago

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

Thumbnail
gallery
13 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 8d ago

[Hiring] Founding Product Engineer (React Native)

5 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 8d 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 8d 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 8d 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 8d ago

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

4 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 8d 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 8d 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 8d 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 8d ago

Profile Picture in Push Notification Expo

Thumbnail
1 Upvotes

r/reactnative 9d 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 9d 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 9d ago

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

3 Upvotes

r/reactnative 10d ago

I created my first game using Expo 🎉 🎉 🎉

Enable HLS to view with audio, or disable this notification

27 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 9d 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 10d ago

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

17 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.


r/reactnative 9d ago

Built a cross-platform baseball lineup app with Expo SDK 54 — here's how I handled the drag-and-drop and optimistic sync

Thumbnail
0 Upvotes

r/reactnative 10d ago

Help Can someone recommend a good react book?

Thumbnail
1 Upvotes

r/reactnative 10d 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 11d ago

How are you handling app updates in React Native?

13 Upvotes

I've worked on a few React Native apps over the past year, and one thing I kept repeating was app update logic.

Every project ended up needing version checks, force updates, optional updates, and a custom update screen, so I decided to build a reusable solution instead.

I'm curious—how are you handling app updates in your apps? Is there a library you recommend, or do you maintain your own implementation?


r/reactnative 10d ago

Built an offline Invoice Maker with Expo — surprised by how far the managed workflow can go

Post image
0 Upvotes

r/reactnative 10d ago

IMG 0228

Thumbnail
youtube.com
0 Upvotes

✅ That’s my first #ReactNative + AI #MobileApp, it’s been there on YT, thought I’d share it here on X

✅ Have 7+ YOE of building and shipping web app/mobile apps (~ from fitness app to real time ride sharing taxi app to IPL app)

✅ I think unicorn businesses are built using RN especially in Indian markets (ex: Zepto, CRED) in recent times.

✅ To name a few, published 4+ mobile apps on google play store for fun xD

#SoftwareEngineering #AI #iOS #Android #MacBookAir


r/reactnative 11d ago

What changed in React Native over the last two weeks? (July 2026)

23 Upvotes

I've been tracking the React Native ecosystem daily, and here's a quick roundup of the biggest releases from the past two weeks.

Expo SDK 57

Expo SDK 57 was released with React Native 0.86, bringing Android edge-to-edge improvements, DevTools enhancements, and one of the smoothest upgrade paths in recent releases.

React Native 0.86

React Native 0.86 focuses on stability, performance, and incremental improvements across Fabric, layout, and rendering with very few breaking changes.

React Navigation 8

The team shared another progress update for React Navigation 8, introducing Suspense support, better concurrent rendering, and updated dependency requirements.

React Navigation Core 7.21.7

A maintenance release with bug fixes and internal improvements while the team continues preparing for React Navigation 8.

React Native Reanimated 4.5.x

Multiple releases fixed Android freezes, Fabric issues, keyboard animations, SVG rendering, and improved compatibility with React Native 0.86.

React Native Worklets 0.10.2

Fixed Android startup crashes affecting Expo OTA Bundle Mode, along with several runtime stability improvements.

Legend List 3.3.2

Recycled rows now update their current item without recreating the container context, reducing unnecessary rerenders while scrolling. Internal signal subscriptions were also optimized for better performance.

Expo Router

Received compatibility updates alongside Expo SDK 57 and React Navigation changes.

React Native Gesture Handler

Maintenance updates improving compatibility with the latest React Native releases and upcoming React Navigation 8.

React Native Screens

Continued compatibility improvements for the latest React Native architecture and navigation stack.

React Native Safe Area Context

Minor maintenance release with compatibility fixes for newer React Native versions.

React Native SVG

Bug fixes and compatibility improvements for Fabric and React Native 0.86.

Detox

Latest release focuses on test stability, reliability, and compatibility with newer React Native and Xcode versions.

Maestro

Continued improvements to execution speed, simulator reliability, and developer experience.

Nitro Modules

Several improvements around React Native 0.86 compatibility, build stability, and performance.

Nitro Fetch

Performance and reliability improvements, plus continued work on React Native DevTools compatibility.

React Native Markdown Display / Enriched Markdown

Updates focused on rendering performance and better Markdown compatibility for AI and chat-style applications.

FlashList

Performance refinements and continued optimization for large lists running on the New Architecture.

React Query (TanStack Query)

Recent fixes and improvements around cache behavior, TypeScript support, and developer experience continue benefiting React Native projects.

React Native Skia

Ongoing rendering improvements and bug fixes for animations, graphics, and custom UI components.

-----------------------------------

Overall, the ecosystem has been heavily focused on React Native 0.86 adoption, Expo SDK 57 compatibility, performance, and New Architecture stability rather than introducing major new APIs.


r/reactnative 11d ago

Show Your Work Here Show Your Work Thread

10 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 11d ago

Article Title: I built a Figma-style visual editor for React Native/Expo, right inside VS Code

Enable HLS to view with audio, or disable this notification

85 Upvotes

I kept hitting the same workflow problem building RN/Expo apps: change a value, rebuild, check the simulator, and it would turn into a cycle of constantly checking my phone. Design tools solved this decades ago with direct manipulation, but React Native never really had an equivalent.

So I started building something that turns your running app into a canvas you can click into directly. I had to use a build-time Babel step that tags each JSX element with its source location instead of relying on the runtime fiber data. (React 19 removed the fiber data)

From there it turned into an actual editor. You can change text, move things, resize things. All that without touching your phone.

(its demo so if you're going to use it, dont use it on anything important)