Our Work

Icon Builder

Studio Sanctus had a live subscription app it couldn't see inside. We moved the code and servers off the previous agency, fixed purchases on both stores and made sure only current subscribers can open paid lessons.

Scroll Down
Service
App rescue, subscription and payments engineering, ongoing app support
Platforms
iOS & Android
Technology
Flutter, Node.js, Google Cloud Run, Firebase
Website
studiosanctus.com
How we helped
Took over a live subscription app from its previous agency and now keep its purchases and releases working.
The Icon Builder home screen, showing the lesson category grid with Welcome Video, Step 1 and Step 2The Icon Builder subscription screen: a Standard plan at fifteen pounds a month, with what the subscription includesA video lesson from Icon Builder, the instructor teaching to camera beside a painted icon of Saint George

Paid lessons, only for subscribers

Studio Sanctus teaches Byzantine icon painting through Icon Builder, a subscription app for iPhone and Android built in Flutter with a Node.js server. Since taking it over from the previous agency in early 2026, we've fixed its purchases on both stores and made sure only current subscribers can open paid lessons. Subscribers get video lessons on drawing and painting, downloadable worksheets, 3D icon models and a chat room for sharing work in progress.

When Justin Venn came to us in January 2026, Icon Builder was live on the App Store and Google Play and taking payments, but Justin had no view of what was happening inside it. Nothing reported crashes. The server hid its errors behind a generic message and kept no usable logs, so a problem would most likely surface as a customer complaint. The source code and servers were still with the previous agency.

Eight months on, Studio Sanctus has:

  • its source code and servers moved off the previous agency, with the server now on Google Cloud Run
  • purchases and restores that work on both the App Store and Google Play, including after a reinstall
  • server alerts that go straight to Justin by email
  • eight crash fixes shipped in a single release
  • an app kept up to date with Google Play's Android 16 requirement
Eight months of work: review, stabilise, payments, access fixed, then ongoing support
Diagram: four separate access checks that never tested expiry, replaced by a single gate that doesDiagram comparing before and after: no crash reports, logs or alerts, against crash reports, structured logs and email alerts

Project Execution

Seeing inside the app

We started in January 2026 with two written reviews, one of the app and one of the server, written in plain English for Justin to act on. Each found that nobody could see what was going wrong. As we put it to Justin at the time, running a subscription business with no crash reporting and no server logs is like running a shop with no CCTV and no till receipts.

That set the order of work. A fixed-price stabilisation phase in February and March 2026 moved the code off the previous agency's Bitbucket and the server onto Google Cloud Run, with media files in Google Cloud Storage. Development and production now run as separate services, so changes can go to a development server before they reach paying customers. We added structured logging that strips login tokens out before anything is written, and Cloud Run alerting that emails Justin when the server starts returning errors.

Purchases that work on both stores

The previous developers built their own in-app purchase system instead of using a service such as RevenueCat, and it produced a long list of subscription bugs. Some Apple renewal notifications failed on the server, and when Google sent the same purchase notification twice, the second copy threw an error. Worse, on Android anyone who reinstalled the app couldn't restore a subscription they'd already paid for.

Purchases from the iOS and Android apps pass through one receipt check before access is granted, with store webhooks, restore purchases and duplicate-safe writes underneath

We fixed each of those in place: Apple purchases are now verified with StoreKit 2, and we corrected the Google Play verification. In June 2026 we walked Justin through the alternatives, including a move to RevenueCat, and advised against migrating. Moving existing subscribers would have been complicated, the subscription data we'd inherited on current users was in poor shape, and the purchase code was stable by then anyway.

Paid lessons for current subscribers only

Justin flagged an account that had cancelled but could still watch paid lessons. We started on it the morning of 29 June 2026 and traced it to four separate checks on the server, each deciding who could see paid content. None of them looked at whether a subscription had expired, so lapsed accounts had kept their access, and the server was sending paid video links to accounts that shouldn't have had them. The fix was in production by 10:20 that morning: one check in place of the four, tested against every combination of subscription status and expiry date.

Keeping the app stable and on the stores

Icon Builder has been on our App Care retainer since March 2026. In August we worked through the Firebase Crashlytics backlog and shipped eight crash fixes in one release, version 9.3.2. We also stopped the app reporting recoverable network errors as crashes. About half the users showing crashes over the previous 30 days had only hit one of those, so the crash figures now reflect real faults.

When Google Play raised its target to Android 16 (API level 36), we updated the app to meet it and moved it to edge-to-edge display. We've also checked it against the Play Billing Library 8 requirement and Google Play's age-verification rules under the Texas App Store Accountability Act. Version 9.3.3 is live on both stores.

Results

Paid lessons have been limited to current subscribers since 29 June 2026. Purchases work on both the App Store and Google Play, and subscribers can restore what they've paid for after reinstalling.

Server errors now reach Justin's inbox directly, and recoverable network errors no longer count as crashes.

The code and servers are out of the previous agency's hands, and the app has kept shipping since March 2026, most recently version 9.3.3. Studio Sanctus also skipped a RevenueCat migration. We advised against it once we'd seen what moving existing subscribers would involve.

If you've taken over an app you can't see inside, app rescue is where we'd start. Get in touch and we'll tell you in the first conversation whether we're the right fit.

What our clients say

Icon Builder approached Foresight Mobile with a broken app and no point of contact

Facebook - Elements Webflow Library - BRIX Templates

"A fantastic experience!"

Foresight Mobile have been great work with! My previous developer was messing me around, but Foresight's structured App Care process transferred all of the servers and source code efficiently without any hiccups. We now have working payments and great observability on issues that real users might be having.

Justin Venn
Founder - Icon Builder
Testimonials

What our clients think

Get in Touch  

"A team of great marketing experts"

“They’re more thoughtful than any other development team I’ve worked with..... I’m not sure what they could improve."

Mark Bryk
CTO, Prax

"The best marketing agency out there"

"The team has delivered exactly what we asked for but is able to use their own skill and judgment to make improvements"

Frederick Drapkin
CEO and Founder, Tenner

"One of the best marketing agencies"

"Foresight Mobile effectively and promptly met our needs. They were a candid, reliable, and collaborative partner."

Fumbi Kolawole
Our Work

Some of our successful projects

Graph Icon - Agency X Webflow Template

Email List Growth

Lorem ipsum dolor sit amet, consectetur adipiscing elit. At sedcon vestibulum ac diam. Enim praesent cras bibendum elit id condimentum etiam.