Case Study

Re-engineering GNSS Monitoring Application: From Windows-Only Legacy to Kotlin Multiplatform

A 6-year-old WPF/C++ GNSS monitoring app was fully rewritten into a modern Kotlin Multiplatform with Compose UI solution, achieving faster updates, higher stability, and cross-platform growth opportunities.

Reduced device setup time

60%faster

Reduced memory use

38%lower

Onboarding time

3xfaster

Project Overview

Client:

GIS platform

Location:

USA

Company size: 

150 employees

Industry: 

Geospatial hardware & software

Services:


● Architecture assessment and roadmap creation● Concept validation and migration planning (KMP + Compose)● Full rewrite with legacy feature parity● UI/UX redesign (Material 3)● CI/CD setup (Gradle KTS, GitHub Actions)● GNSS SDK integration● Legacy installer adaptation● Support and new features

Solution:

Complete rewrite of a WPF/C++ app into a Kotlin Multiplatform application 

Business Challenge

HAVE YOU EVER FACED the inability to provide instant tooling updates required for your product?

The client was having trouble operating the tool built 6 years ago. It resulted in numerous restraints and shortages, becoming a significant burden for the company.

6-year-old WPF + C++ Code

The code was outdated, brittle, hard to maintain, and slow to update.

A Lack of Qualified Talent

Senior WPF/C++ developers are expensive and hard to find.

Platform Constraints – Limited Customer Base

A Windows-only tool, the product didn’t provide vast multiplatform opportunities for customers.

Architecture Limitations

An outdated, x-86-only solution didn’t allow for providing full functionality on ARM tablets.

Installer Dependency

The client was tied to one installer because of a required signed USB driver, complicating builds.

Discovery & Planning Phase – Key Steps

1

Workshops

Conducted the code audit: Checked 42k lines of legacy code and identified 19k for a full rewrite

2

Gap Analysis

Selected hexagonal architecture to separate GNSS core logic from UI and platform code

3

Workflow Redesign

Recognized packaging as a critical risk and integrated KMP output into the old installer

Let us modernize your brittle legacy code to boost adaptability and prepare for expansion

Our engineers can update your legacy app the same way to tackle the issues of aging code, platform limits, installer dependency, and unmet product demands.

Thank you!

We will contact you shortly.

Can't send form.

Please try again later.

Project In Detail

Illustration
  • At the beginning, we created the foundation for future speed, stability, and cross-platform capacity. Arranged KMP modules, dependency injection, coroutines, and a CI pipeline.

  • We reconstructed the core GNSS port, re-implementing the binary parser, NTRIP client, and RINEX exporter with unit-test coverage. This guarantees accuracy, reliability, and a future-proof setup.

  • We upgraded the user journey with an advanced Compose UI, implementing a convenient dashboard, satellite sky-plot, and accuracy charts, for conducive interactions and insights.

  • We expanded integration by adding SDK support for the latest receiver model. This enabled real-time telemetry and battery monitoring, ensuring smooth compatibility and extra value for users.

  • To guarantee seamless delivery, we wrapped the new KMP EXE into the legacy MSI installer, retaining the signed USB driver. This connected old and new systems, ensuring stability and compliance at launch.

  • We launched a beta version first to test it with survey partners. The research provided data on performance and user experience, helping confirm stability and polish usability before the full release.

  • In less than a day, we crafted a working Android version from the desktop codebase to establish mobile readiness. Thus, we exploited the power of a single source for flexible growth across platforms.

    • Legacy Stack (2019)

    • Modern Stack (2025)

    • Legacy Stack (2019)

    • Legacy Stack (2019)

    • Modern Stack (2025)

    • Modern Stack (2025)

    • ☒ WPF on .NET 4.x (C#)

    • ☑ Kotlin Multiplatform shared core

    • Legacy Stack (2019)

    • ☒ WPF on .NET 4.x (C#)

    • Modern Stack (2025)

    • ☑ Kotlin Multiplatform shared core

    • ☒ C++ libraries for telemetry

    • ☑ Compose Multiplatform UI

    • Legacy Stack (2019)

    • ☒ C++ libraries for telemetry

    • Modern Stack (2025)

    • ☑ Compose Multiplatform UI

    • ☒ WiX-based MSI installer with embedded driver

    • ☑ Gradle KTS, Coroutines, Koin, kotlinx-serialization

    • Legacy Stack (2019)

    • ☒ WiX-based MSI installer with embedded driver

    • Modern Stack (2025)

    • ☑ Gradle KTS, Coroutines, Koin, kotlinx-serialization

    • ☒ Manual build/deployment

    • ☑ Automated CI/CD with nativeDistributions

    • Legacy Stack (2019)

    • ☒ Manual build/deployment

    • Modern Stack (2025)

    • ☑ Automated CI/CD with nativeDistributions

The Challenges We Faced During the Re-engineering of the GNSS Monitoring Application

Tied to an Old Installer

We faced the inability to change the MSI installer due to a required signed USB driver. This complicated the pipeline builds.

High-Frequency Telemetry Causing Dropped Frames

GNSS receivers sent data at 10 updates/sec, leading to intermittent performance. We resolved this with lazy diffing and Skia canvas pooling. 

Windows-only USB driver

Windows had a USB driver, while macOS didn’t. The team used libusb with Kotlin/Native bindings to access the devices on macOS.

Legacy Navigation Math Written in C++

Rewriting all legacy math would be a lengthy job. Instead, we used Kotlin/Native CInterop to wrap the existing C++ code, saving time and ensuring functionality.

Results

Key Results of Migration to KMP/Compose

Migration from legacy WPF to KMP/Compose delivered faster feature delivery, improved stability, reduced memory use, and true cross-platform capability.

  • With legacy WPF, adding a new GNSS device took 4 months. With KMP/Compose, it dropped to 6 weeks

  • The cold-start RAM has been reduced from 420 MB with legacy WPF to 260 MB with KMP/Compose

  • The system’s stability significantly increased compared to the legacy code, reaching virtually crash-free operation

  • With legacy WPF, onboarding new developers took 6 weeks, while with KMP/Compose, the timeline was cut to 2 weeks

  • We transformed a Windows-only setup into a multiplatform solution, ready for ARM tablets, macOS, Linux, or mobile devices

Key Process Improvements

● We combated constraints and risks posed by legacy six‑year‑old WPF code by implementing a modern KMP/Compose stack.  ● Empowered future innovations and strategic flexibility by creating cleaner architecture, improving code maintainability, and enabling Android/iOS/macOS releases. ● Retained driver-signed distribution through interim MSI, while preparing the system for future Kotlin installer.● Enabled faster feature delivery for new devices, reduced memory use, and reinforced performance stability.● 2x faster feature delivery, including updates for new devices● 38% lower memory use● Near 100% performance stability with minimized system crashes

More Enhancements are Down the Road

Replace the Old MSI Installer

Remove the limits of the legacy MSI by replacing it with a Kotlin‑native installer using Gradle and driver-injection scripts. This will reduce build times by ~15% and eliminate dependency on WiX.

Initiate Cross-Platform Expansion

Develop macOS and Linux versions and release Android and iOS companion apps. This extends user access throughout desktop and mobile platforms.

Create GNSS SDK for Partners

Prepare the GNSS diagnostic library as a Kotlin Multiplatform SDK to drive effortless integration of core functionality into partners’ apps and solutions.

Contacts

Contact Us Now for Seamless Software Modernization.

Ready to experience the Corsac Technologies difference?

Don’t let outdated systems slow your business down – connect with us today and let our experts transform your legacy software into modern, high-performing solutions. Schedule a consultation with our specialists now!

Modernization Experts
+1 416 505 4524moc.hcetcasroc%40ofni

Where to Find Us
16 Yellow Birchway, North York, ON, Canada M2H 2T3

  • Ready to Upgrade Your Legacy System?

    Fill out the form on the right.

Thank you!

We will contact you shortly

Can't send form.

Please try again later.