Skip to main content
Published on

Xamarin to React Native: Rebuilding When the Old App Is the Documentation

A legacy mobile application can contain years of product decisions that were never written down. When the framework reaches end of life, the obvious task is to replace the code. The harder task is to recover what the product is supposed to do and make sure the organization can validate the replacement.

That was the central problem in an anonymized e-prescribing application migration from Xamarin to React Native.

The company made a responsible proactive decision: Xamarin was approaching deprecation, and the team wanted to move before support pressure forced a rushed response. React Native was selected as the destination, with the goal of preserving the original mobile functionality.

The technology choice was not the largest risk. The old application was effectively the documentation.

The first discovery: working behavior is not product intent

There was little reliable written context explaining why each screen behaved the way it did, which workflows were clinically or operationally important, or how the mobile application used its APIs.

The team could see what the Xamarin product did. It could not always explain why it did it, which edge cases were intentional, or which behavior had merely survived because nobody had challenged it.

That distinction matters during any replatform:

  • Copy too literally and you preserve accidental complexity.
  • “Improve” behavior without evidence and you may remove something users depend on.
  • Rebuild APIs from assumptions and you can create subtle differences that appear only in production.
  • Wait until the end for knowledgeable validation and the release date becomes the first real product review.

The migration therefore became a behavior-recovery effort as much as a code-replacement effort.

Run the old and new products side by side

The practical approach was feature by feature and screen by screen.

For each workflow, the team ran the Xamarin application, observed the visible behavior, recorded the sequence, and compared the work with the React Native implementation. Because the mobile APIs were already relatively lightweight, many endpoints could be reused. But the lack of API documentation meant the team still had to inspect requests and responses directly.

That included questions such as:

  • What information does the screen send?
  • Which fields are required, optional, or derived?
  • What does the API return for the happy path?
  • How does the old application behave when information is missing or invalid?
  • Which state belongs to the device, the current session, or the server?
  • What must remain identical for users, and what can responsibly change?

This kind of behavior archaeology is slower than copying a screenshot, but it is faster than discovering after launch that the team rebuilt the appearance and lost the product.

The organizational constraint appeared late

The application had an original September 1 target and ultimately released near the end of October after unforeseen organizational events.

One major issue was ownership. As the technical work approached release, the organization still had not assigned enough people with deep knowledge of the Xamarin application to validate feature parity in the React Native product. The team had to scramble to assemble knowledgeable QA support near the deadline.

The lesson is not that QA should simply work faster. It is that validation ownership must be planned at the beginning of a replatform.

Before implementation accelerates, leaders should know:

  • Who owns the intended behavior of each critical workflow?
  • Who can distinguish a defect from an intentional legacy rule?
  • When will QA compare the old and new systems?
  • Which users or internal experts must validate the product?
  • Who can make a decision when the old behavior and current business goal conflict?
  • What release evidence is required before the replacement becomes authoritative?

The codebase was not the only system that needed a migration plan. Product ownership, QA capacity, release readiness, and knowledge transfer needed one too.

Documentation is transition infrastructure

People leave, receive promotions, switch teams, or stop working on a product. If the organization stores product knowledge only in those people, every transition becomes an emergency.

This migration directly influenced how CAM Software later approached AI-assisted documentation. Pull requests can record:

  • What changed and why
  • Which acceptance criteria were addressed
  • The happy path the developer tested
  • Likely regression areas for QA
  • Relevant workflow and architecture decisions
  • Documentation that should be updated when the change merges

AI can help draft and cross-check that material, but the developer and product owner remain responsible for whether it is correct. The goal is not more text. The goal is usable organizational memory.

When a new engineer joins, they should be able to understand the product, build it, test a meaningful workflow, and find the current release process without waiting for the one person who remembers everything.

A better migration sequence

The exact technical plan varies, but the operating sequence should answer five questions.

1. What must survive?

Identify business-critical workflows, regulated or sensitive behavior, offline requirements, integration contracts, release obligations, and user expectations before choosing what to rewrite.

2. How will behavior be recovered?

Use documentation where it exists. Where it does not, run the old product, inspect requests and responses, speak with knowledgeable users and stakeholders, and create decision records as behavior becomes understood.

3. Who validates parity?

Assign product and QA ownership early. Do not assume knowledgeable reviewers will become available simply because the code is ready.

4. How will the team keep shipping?

Define what continues on the legacy application, what waits for the new product, how builds reach testers, how incidents are handled, and what evidence governs cutover.

5. What knowledge will the replacement leave behind?

The new codebase should be easier to inherit than the old one. That requires useful setup instructions, workflow context, API knowledge, release documentation, decision records, and accountable owners—not only newer syntax.

The larger lesson

A Xamarin-to-React-Native migration is not successful because the new application compiles or reaches a store. It succeeds when the company has recovered the product behavior that matters, made deliberate decisions about what changes, built a credible validation and release system, and reduced dependence on individual memory.

The framework is the visible transition. Ownership is the durable one.

If your company is inheriting or replatforming a mobile product, CAM Software handles that work inside its 90-day embedded product engineering leadership engagement, with build and replatforming context here.

Need help with your project?

CM

Chris Martinez

Founder of CAM Software · Mobile engineer

Chris founded CAM Software in 2022. He leads embedded product engineering engagements for established companies with mobile-led products, inherited applications, and delivery challenges. His work spans product alignment, React Native and native mobile engineering, supporting web and backend systems, release reliability, and responsible AI delivery. He also operates software products owned and operated by CAM Software from Northwest Arkansas and works with teams nationwide.