Native to React Native, shipped 2x faster with agentic coding

-
vouch

About

Vouch (by vlayer) is AI-resilient authentication for businesses that need to verify users, candidates, and companies without document uploads or manual checks. The product first shipped as two native mobile apps, Kotlin on Android and Swift on iOS, maintained in parallel.

We rewrote that native app to React Native and used agentic coding to compress delivery. The rewrite gave Vouch a single shared codebase across iOS and Android, over-the-air updates, faster UI iteration and, most importantly, a codebase the client's own React/RN team can take over and maintain long-term.

industries:
Communications
technologies:
React Native
Expo
Kotlin
Swift
TypeScript
services:
Mobile Development
Artificial Intelligence
Download on the app storeDownload on Google Play

Why rewrite a working native app to React Native?

The number one reason was over-the-air (OTA) updates. On React Native we can ship fixes straight to users without waiting on app-store review, which the native stack made slow and expensive. React Native also gave Vouch one shared codebase across iOS and Android instead of two implementations of every feature, plus faster UI iteration as the product evolves.

The second reason was ownership. The client didn't have a native mobile team. They had a strong React and React Native team who could realistically own an RN codebase but not two native ones. Consolidating onto React Native put the product in the hands of the people who would actually maintain it.

Not everything moved to React Native, and pretending otherwise would have been a mistake. Some parts had to stay native: native WebViews, platform permissions, and the lower-level capture logic where proof generation depends on OS behavior. A meaningful part of our early work was analysis. We mapped, feature by feature, what could safely move to RN and what had to remain native, so the migration didn't quietly break the parts of the product that mattered most.

Scope of Work

We rewrote the existing native Vouch app (Kotlin, Swift) into a single React Native application, using agentic coding to accelerate delivery, while keeping the parts of the system that genuinely require native code native. The work spanned planning, technical migration, an on-site process setup, and hardening for SOC-2 compliance.

Migration matrix and planning

We started by building a migration matrix as the backbone of the rewrite. Every feature was mapped to its target (RN or native), with tasks, migration order, and quality gates attached. It became our shared source of truth: in the early weeks we pulled work straight from the matrix into the backlog and moved fast.

Native to cross-platform migration

We moved the app from two native codebases to one React Native codebase across iOS and Android, enabling OTA updates, code sharing, and faster UI changes, without regressing the verification flows users depend on.

Agentic coding workflow

We set up an agentic engineering workflow combining Nomtek tooling (Codex / ChatGPT) with vlayer's in-house Claude Code / Claude, layered with a shared skill set: Superpowers, the Grillme skill, and custom skills for the on-device feedback loop.

Automated feedback loop and testing

We gave the agents a real feedback loop. Our skills drove the app on a device, debugged it, and inspected network traffic (which mattered a lot here), backed by Maestro for end-to-end testing and manual QA on production data sources.

Human-in-the-loop verification

We kept engineers in the loop where automation wasn't enough. Many data sources still required manual verification, so we deliberately designed the process around human-in-the-loop checkpoints rather than blind automation.

SOC-2 compliance and supply-chain security

We introduced a vulnerability-management process for the software we produce: automated dependency updates via Dependabot on GitHub plus supply-chain monitoring, as part of meeting SOC-2 compliance requirements.

Solution

The rewrite ran in phases, and the migration matrix set the pace. In the first weeks it worked almost like a conveyor belt: we pulled an item from the matrix into the backlog, let the agentic workflow implement it, validated, and repeated. After roughly one month, about 80% of the app was done and running, though not yet everywhere and not on every data source.

That first month was largely automated. The remaining work split into two phases: about two weeks with lighter guidance, then about two weeks with heavier, hands-on involvement (the human-in-the-loop phase), where we fixed and validated behavior directly against production data sources. As the rewrite went deeper, the up-front AI plan became less useful. After the first month we had effectively set it aside and were working from real-world test results instead.

One pattern is worth naming. Many of the problems we solved late in the project were rediscovered problems: edge cases we had already solved once at the native level that resurfaced in the rewrite. Recognizing that early saved us time, because the answer often already existed in the native code.

The process wasn't only technical. We started with 2-3 days on-site in June to set up the rewrite, organizationally as much as technically, aligning on the plan, the migration matrix, the quality gates, and how the two teams would work together day to day.

Agentic coding: what actually made this fast

The headline isn't just "we used AI." It's that experienced engineers used agentic tooling to move between technologies they hadn't worked in before. On the Vouch side, the team were React developers who had never written anything natively. On our side, one of our senior engineers put it plainly: "I've never written anything in RN in my life," and still contributed to the React Native rewrite from day one.

That's the real unlock: AI-enabled technology switching for experienced developers. Deep engineering judgment carries over, and the agentic workflow closes the syntax-and-ecosystem gap. It's also why AI code review mattered here. As review tooling gets better, it catches more of what a first-time-in-a-stack developer would otherwise miss.

Backward compatibility and getting off Expo

One hard constraint shaped a chunk of the work: Expo version drift. When the app and the embedding environment were more than a couple of Expo versions apart, Expo stopped working cleanly. Removing Expo from the SDK path took real effort, but we needed it to keep the app compatible across the versions Vouch's partners actually run.

Results

2x faster delivery. The original native app took roughly 8 months with 2 engineers, about 16 person-months of effort. Our agentic React Native rewrite took roughly 2 months with 4 engineers, about 8 person-months. Same product, half the engineering effort, on a single shared codebase instead of two.

Beyond the number, the outcomes we're proudest of are qualitative: it works; a developer with no prior RN experience contributed to a React Native codebase from the start; technology-switching for experienced engineers turned out to be a real, repeatable capability; and AI-assisted code review kept quality up while we moved fast.

2x

Faster delivery vs. the native build

~80%

Of the app rewritten and running after the first month

4

Engineers on the agentic RN rewrite

100%

Codebase now ownable by the client's own React/RN team

Build your next app with agentic engineering

Contact Us