top of page

The Mystery Hang: Debugging a Swift-C++ Interop Bug After Launch

Late-night debugging: it’s all part of the indie dev life.


When Muser Studio launched, I thought the hardest part was behind me. But just six hours later, I noticed something strange: the production app from the AppStore would hang whenever the user tapped the Share tab — which also happens to be where the subscribe buttons live.




Late-night debugging: it’s all part of the indie dev life.

Was it the file sharing system? The App Store APIs? A random edge case? At first, it wasn’t clear.


Even worse: it didn’t happen in TestFlight. Only with a regular App Store download. I reached out to a friend in the UK — he confirmed the issue. That’s when it clicked: even though I have a US phone, I was traveling and using the UK App Store. That was a clue.


 

The Trail Leads to Swift-C++ Interop

After a full day of trial and error, I found another lead: the Swift side could print App Store subscription data just fine, regardless of localisation.


But when I passed those strings to C++ to be used in the UI?

Memory leaks. Lag. Then a full hang.


Turns out, some localized data — like currency symbols or special characters — didn’t play nice when Swift strings were passed into C++ via Swift-C++ interop. Even with multiple attempts to copy or sanitize the strings, the app would crash silently.


The eventual fix?

I filtered the strings down to just alphanumeric characters and a handful of safe currency symbols.

That finally broke the bug.


 

18 Hours, One Fix, and Some Sleep Later…

By 10pm, I had the source of the problem. By 2am, I had cleaned up the code, tested with a bunch of simulated localizations, packaged the update, and shipped the fix.


Exhausting? Yes.

Embarrassing? A little.

But ultimately? A solid reminder that real-world edge cases don’t show up until you’re live — especially when working across Swift and C++ in production.


All’s well now. The Share tab works. Subscriptions work.

And Muser Studio is fully international — without hanging.


 

If you downloaded Muser Studio and ran into this bug — thanks for your patience. It’s fixed now!


And if you’re a dev navigating Swift-C++ interop edge cases, feel free to reach out. I’m happy to share what I’ve learned (or just trade war stories). More soon!


 

Image credit: Tai Bui IG: @agforl24

Commentaires


bottom of page