AccelOne Case Studies | AI, Fintech, Insurance, Construction, Healthcare & Enterprise Software

Personal Safety App Modernization: Backend Rebuild and iOS Migration That Restored Stability and Growth | AccelOne

Written by Marketing | Aug 16, 2024 8:00:00 AM

How AccelOne rebuilt a failing safety app in two structured phases, restoring every feature and returning the platform to subscription growth.

In brief: A personal safety app's legacy backend had degraded to the point where core features, including video processing and user sign-up, were failing. AccelOne overhauled the platform in two phases: first running a parallel Node.js + Express backend to restore features without disrupting users, then completing a full backend rewrite, building a dedicated Node.js media server, and migrating iOS to Swift 5. All features restored. The platform is now gaining new subscriptions weekly.

 

What was wrong with the original safety app?

The client's personal safety app had been built on an aging architecture that had not kept pace with changes in iOS, modern backend standards, or its own feature requirements. What had started as isolated issues had compounded into a platform that was failing its users at the moments they needed it most.

 

The app also had an undocumented legacy: critical backend components had no documentation, and the back-office website and events page contained additional components that needed to be understood before anything could be safely rebuilt. This is the condition that makes legacy modernization genuinely difficult, not the technical work, but the absence of a map.

How did AccelOne approach rebuilding without breaking a live app?

A personal safety app cannot have a gap in service. Users depend on it. The modernization strategy had to be sequenced to restore functionality incrementally, never leaving the platform in a worse state than before.

 

What happened in each phase of the modernization?

 

Why did the safety app need a dedicated Node.js media server?

Video is not just a feature in a personal safety app, it is the feature. When a user records a safety incident, that video needs to be received, processed, stored, and accessible immediately. A failure in video processing is a failure in the product's core promise.

 

What does migrating an iOS app to Swift 5 involve?

The iOS app's outdated Swift version was causing two distinct categories of problems: compatibility failures with current iOS versions and the latest iPhone models, and a codebase that was increasingly difficult to maintain as Apple's frameworks evolved.

AccelOne's Swift 5 migration covered the full scope of what a version migration requires in a production app:

  • Source code updated from the legacy Swift version to Swift 5 syntax and APIs

  • Third-party libraries and frameworks updated for Swift 5 compatibility

  • Breaking API changes from newer iOS versions identified and resolved

  • Most video-related code sections rewritten for improved Swift 5 performance

  • Compatibility verified against the latest iPhone models in use

  • Crash and bug monitoring implemented to catch regressions post-migration

The video code required the most significant rewrite, it was both the most outdated and the most critical section. AccelOne treated this not as a migration but as a rebuild of the video layer, which ultimately produced more stable and performant behavior than the original code had ever achieved.

How does AccelOne handle legacy modernization without documentation?

The most common assumption about legacy modernization is that the hard part is writing new code. It isn't. The hard part is understanding the old code well enough to know what the new code needs to do, especially when the original developers are unavailable and documentation was never written.

 

What technology stack was used for the modernization?

 

How was AccelOne's team structured for this project?

 

The team embedded directly with the client's internal teams, working within their existing workflows while bringing the external perspective needed to evaluate the legacy architecture objectively. This integration also meant that knowledge built during the project stayed within the combined team rather than leaving with AccelOne at handoff.

What were the results?

 

The result that matters most is the simplest: the platform is gaining new subscriptions weekly. For a safety app that had lost market competitiveness due to reliability failures, subscription growth is not just a business metric. It's evidence that users trust the product again, that it works when they need it.

 

Frequently asked questions

What was wrong with the personal safety app before AccelOne's involvement?

The app's legacy backend had degraded to the point where core features were failing, including video processing and user sign-up. The outdated iOS codebase was causing compatibility failures on the latest iPhone models. High operational costs and poor user experience had eroded market competitiveness and stalled subscription growth. The codebase was also largely undocumented, requiring reverse engineering before rebuilding could begin.

How did AccelOne approach rebuilding a legacy app without breaking existing functionality?

AccelOne used a two-phase parallel build approach. Phase 1 ran the new Node.js + Express backend alongside the legacy system using the same database, restoring features incrementally without disrupting active users. Phase 2 completed the full rewrite, built the media server, and migrated iOS to Swift 5. Running the new system in parallel before cutover allowed validation against real data before the legacy system was decommissioned.

What does migrating an iOS app to Swift 5 involve?

Migrating to Swift 5 involves updating source code to current Swift syntax and APIs, updating third-party libraries for Swift 5 compatibility, resolving breaking API changes in newer iOS versions, and verifying compatibility with the latest iPhone models. In this project, most of the video code sections required a full rewrite, not just migration, because the legacy video implementation was both outdated and the primary source of instability.

What is a Node.js media server and why did the safety app need one?

A Node.js media server is a dedicated backend service for receiving, processing, and delivering video. The safety app's legacy system had video processing failing regularly because it ran on the general backend without dedicated capacity. AccelOne built a purpose-built media server to handle this workload separately, making video processing faster, always available, and isolated from the main application backend so media failures can't affect other app functions.

How does AccelOne handle legacy app modernization without documentation?

AccelOne begins with a thorough preparation phase: reverse-engineering legacy backend components, reviewing code for the back-office website and events pages, and identifying critical testing and development points before writing any new code. The parallel build approach, running new and old systems simultaneously, then allows the team to validate behavior against real data before switching users over, catching any behavioral differences that weren't visible from the legacy code alone.

What were the results of AccelOne's personal safety app modernization?

All app features were restored and working as expected. Video processing became faster and consistently available. Sign-up issues were fully resolved. The new backend and media server are stable and scalable. iOS users on the latest iPhone models see significantly improved performance. The codebase is now on current framework versions, ensuring ongoing support for modern iOS releases. The platform is gaining new subscriptions weekly.

What team does AccelOne use for mobile app legacy modernization?

AccelOne deployed a four-person nearshore team: a Senior iOS Engineer, a Senior Backend Engineer, a Technical Project Manager, and a QA Engineer. The team embedded directly with the client's internal teams, working within existing workflows while bringing the external perspective needed to assess and rebuild the legacy architecture objectively.