Did you catch Felix Krause’s announcement of his new Context SDK last week?

It’s a library that helps an app determine the best time to present an upsell, purchasing decision, or any call to action to a user based on what they are doing and how likely they are to be receptive to it. It advocates presenting fewer upgrade prompts for better conversion rates.

How does it know when to suggest good times for an upgrade prompt? iOS devices have a vast amount of information on what we are doing, and the library combines data from some of the sensors with CoreML to figure out what users are doing. Is someone out walking their dog or bored and sitting on their sofa? Are they running late to meet friends for dinner with only 10% battery or commuting to work on a bus? People are far less likely to sign up for something in some situations, no matter how good the special offer is. They’re also more likely to sign up if it’s not the 1,000th time they’ve seen the CTA.

Read the whole article if that sounds interesting because the post has plenty more details and evidence that the technique works.

This would instantly be deep into “creepy” territory if that data was being sent back to some company’s server to be stored and cross-referenced against loads of other data, but the SDK doesn’t request any additional app permissions and never sends a network request. It all happens on-device.

There is something that keeps my “this doesn’t feel quite right” sense tingling. I think it comes down to many years of hearing story after story of unscrupulous companies doing dubious (or awful) things with large amounts of behaviour data, though, rather than being related to anything this SDK is doing. Of course, nothing will stop companies from integrating this SDK and sending all this data somewhere, but they could also do that without this SDK. As long as you agree with the business model of free apps marketing their in-app purchases, I don’t think there’s anything to dislike here.

This idea feels like a win for everyone involved. Users get fewer calls to action at inconvenient times, and developers get happier users who are slightly more likely to respond to a CTA. That sounds good to me!

For full disclosure, I know Felix well and knew he was working on this project.

Dave Verwer  




Senior iOS Developer @ Shareup – Want to build something new? Join our small, design-led team at @shareupapp to build the fastest, easiest, and most secure way to share anything with anyone. We use Apple’s best tech, including Swift Concurrency, Combine, Catalyst, UIKit, and SwiftUI, and you’ll work closely with our talented team. – Remote (within European timezones)

Apple Platforms Developer @ Cascable AB – Cascable is a small "indie" company based in Stockholm, Sweden. This is the job for you if you love working with and learning about multiple technologies. We have UIKit, AppKit, SwiftUI, and Swift-on-the-Server (Vapor) across our suite of products, and you'll be working with all of them! – On-site (Sweden) with some remote work (within European timezones)

Senior iOS Engineer @ Reveri – We’re looking for an experienced, adaptable, and engaged Senior iOS Engineer looking to make a genuine positive difference in our member’s lives through self-hypnosis. 100% SwiftUI codebase, iOS 15+, Combine, and Concurrency. Small team, 3 iOS, 2 Android Engineers, every role has impact. – Remote (within European timezones)


Do you have any open positions at your company? You can list them over at iOS Dev Jobs and have them promoted to thousands of developers for free. 🚀


And finally...

Why doesn’t the real Uber app have this? 🐶

I only recently came across Soren’s satirical app design newsletter via a recommendation from a friend, but it has already brought me many chuckles. 👍