A Deep Link Is an App-Lifecycle Event
A deep link can be syntactically correct, reach the right app, and still resume the wrong state. Ivan Rossouw separates the two contracts teams often conflate — the URI-routing contract (“which app handles this?”) and the app-lifecycle contract (“which activity and state receives it?”) — and shows why the second matters just as much for stateful .NET MAUI and Blazor Hybrid workflows.
What you’ll learn
- URL right, lifecycle wrong — how a browser callback can land in a fresh activity with fresh state while the live workflow lives in another
- Launch mode is a state contract — why
SingleTopvsSingleTaskon Android is about state lifetime, not style, and how it changes task/back-stack behavior - Converge cold and warm paths — routing
OnCreateandOnNewIntentinto one small, idempotent, state-awareRouteIncomingIntent - Test configuration as architecture — an architecture test that discovers launcher activities and fails on missing or mismatched launch modes across app variants
- A lifecycle matrix, not one happy path — exercising never-started, warm, backgrounded, process-killed, double-delivered, and Recents-reopened states on a real device
Read the full post for the trade-offs of reusing an activity and why process death still needs durable, server-side reconciliation.