React Native / iOS Engineer — Fix Launch-Blocking Crash Before App Store Submission
Only freelancers located in the U.S. may apply.U.S. located freelancers only
The flagged item is the Apple reviewer email address in the submission section. Here's the corrected version with that removed: Job Posting — iOS React Native Engineer Needed (Critical Launch Crash) Title: React Native / iOS Engineer — Fix Launch-Blocking Crash Before App Store Submission Project: DuelDeck — real-money skill-based tournament card game, iOS app (React Native 0.84, New Architecture/Fabric enabled) Urgency: High — this is the single blocker preventing App Store submission. The problem The app crashes on every launch, within ~2 seconds, before any screen renders — including on a completely fresh install with no stored data. The crash signature is consistent and has been narrowed down through extensive isolation testing: An Objective-C exception is being thrown inside a TurboModule's synchronous/void method invocation (ObjCTurboModule::performVoidMethodInvocation), on the com.meta.react.turbomodulemanager.queue. Because this exception crosses a layer the New Architecture bridge cannot safely propagate, the entire process terminates (SIGABRT/abort()), regardless of any JavaScript-level error handling. What's already been ruled out (do not re-test these) Through direct binary-search isolation (disable component → clean rebuild → fresh install → measure time-to-crash), the following have been conclusively excluded as the cause: @react-native-community/geolocation PayPalCheckout SDK and our custom card payment native module A legacy unused Apple Pay native module Build architecture (tested both x86_64/Rosetta and native arm64 — same crash on both) react-native-mmkv (tested with MMKV fully bypassed, forced to AsyncStorage) What needs to happen Isolate the exact native module causing the crash. Strongest remaining candidates, in priority order: lottie-react-native, react-native-svg, react-native-screens, react-native-gesture-handler, a date/time picker library, an image picker library, a webview library. Use the same method: temporarily disable/remove one at a time, clean rebuild, fresh install (uninstall + reinstall to wipe all stored data), and confirm whether the crash persists. Fix the compatibility issue once found — typically a library version bump to one with confirmed New Architecture/Bridgeless support, or a patch to how the module is invoked. Verify a fully clean launch path: app must reach the splash screen, onboarding, and login screen reliably on a fresh install, every time, with no crash. How the app needs to function for this soft launch This is a soft launch, not the full feature set — the app needs to work cleanly within a deliberately narrowed scope. Once the crash is fixed, the build needs to behave exactly as follows before it's ready to submit: Onboarding and account creation. A new user goes through onboarding, then signs up with email and password only. No Google, Apple, or Facebook sign-in, and no phone/SMS login anywhere in the app — email is the only path in. After signup, the OTP email verification step has to actually work end to end: the code gets sent, the user enters it, and the account gets confirmed. No KYC gate. Users should be able to get into the main app and browse around without being forced through identity verification first. KYC stays in the backend for later, but it must not block access during this phase. Real location check. Geolocation needs to use actual Apple Core Location (device GPS with a proper permission prompt), not a workaround. This is what determines whether a user's state is eligible for real-money tournaments, and it needs to be a genuine native location check, not something hardcoded or guessed from the user's profile. Card deposits, no Apple Pay. Users fund their wallet with a debit or credit card through the PayPal card payment flow. Apple Pay should not appear as an option anywhere in this flow — card only. Tournament join has to work, fully. A user with money in their wallet needs to be able to open a tournament, pay the entry fee out of their balance, and get confirmed as entered — the whole payment-to-confirmed-entry path needs to be solid, not just the deposit step in isolation. VS / free play is off. The Invite tab and any 1-on-1 free-play matchmaking should not be live for this launch — show a "coming soon" placeholder instead of the real flow. Withdraw stays disabled. The withdraw button should be visibly present but greyed out / non-functional for now. Deposited funds are playable only and not withdrawable during this phase. Audio is off, and that's fine for now. Background music and sound effects are intentionally disabled for this launch and are not part of what's required to ship — don't spend time trying to bring them back unless explicitly asked. Everything else stays as is. Rankings, profile, avatar upload, live countdown timers on tournament cards, and the rest of the existing feature set should continue working exactly as they do now — the engineer's job is the crash fix and the items above, not a feature audit of the whole app. Admin dashboard. Tournament creation, editing, and cancellation from the admin dashboard need to be reliable, since tournaments will be set up and managed from there around the time of launch. Re-validate the full soft-launch feature set above after the crash fix — confirming each item works on a real build, not just in theory. Prepare and submit the TestFlight build for internal testing, then prepare the App Store Connect submission (screenshots, privacy details, review notes). A pre-configured Apple reviewer test account will be provided once hired. Requirements Strong hands-on experience with React Native's New Architecture (Fabric, TurboModules, Bridgeless mode) specifically — this is not a general React Native bug, it requires someone comfortable reading Objective-C++/Swift native module bridging code and Xcode crash reports (.ips files). Comfortable working directly with .ips crash logs, symbolicating stack traces, and reasoning about ObjC exception propagation across the JSI/TurboModule boundary. Experience shipping React Native apps through TestFlight and App Store review. Familiarity with CocoaPods, Xcode build configurations, and debugging native module linkage issues. Codebase context React Native 0.84.1, iOS min target 15.1, New Architecture enabled. Backend already live and stable (Node.js/PostgreSQL on AWS ECS) — this is an iOS-app-only fix. Full crash investigation notes (stack traces, what's been tested, environment details) will be provided to the selected candidate at project start so no time is wasted repeating already-completed diagnostic work. Communication and file sharing will happen entirely through the platform's built-in tools.
$200.00
Fixed-price- ExpertExperience Level
- Remote Job
- Complex projectProject Type
Skills and Expertise
Activity on this job
- Proposals:5 to 10
- Last viewed by client:2 days ago
- Interviewing:2
- Invites sent:1
- Unanswered invites:0
About the client
- USAWilmington3:03 AM
- $13K total spent24 hires, 3 active
- 130 hours
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by