11 November 2025 · Maren Calder

Instrumentation debt in mobile SDKs

Small group working together with laptops

Web analytics can often be fixed on a Tuesday. Mobile analytics lives on devices that will not update, in SDKs that were pinned two winters ago, and in a dual-write that someone added “just until the migration.” The migration becomes a personality trait of the company.

We start Signal Architecture with an inventory of what already fires, including the embarrassing events and the version spread. If 22% of weekly actives are on an SDK that cannot send the new property, the new property is not a source of truth. It is a hope. Hopes do not belong in finance packs.

Dual-writes are sold as safety and become contradiction. The old event and the new event disagree on timestamps, on user ids, on whether a background fetch counts. Pick a cutover date, print it, and accept that the month of the cutover is ugly. Ugly months are cheaper than five years of “which stream do we trust?”

Retirement is a skill. An event that still arrives from old builds cannot be deleted from the vendor, but it can be unmarked as canonical. We keep a cemetery list: name, last version seen, date we stopped reading it. Product managers who refuse the cemetery end up briefing design on ghosts.

Store privacy, ATT prompts, and SKAN are not covered as a full curriculum here — we are a craft studio, not an ad network — but they belong on the limitation appendix. If you cannot see logged-out iOS traffic, write that down instead of inflating Android until the blended number looks like a strategy.

Debt is not a moral failing. It is a sequence of reasonable Fridays. The studio’s job is to make the next Friday more expensive than the inventory, so the inventory actually happens.

Back to the notes