iOS
RenewExit
- Available on the App Store

Overview
RenewExit is an iOS app designed to manually track subscriptions and free trials while bringing renewal, cancellation, and remaining-access tracking into a single flow.
Problem
Subscriptions are not only about keeping track of renewal dates. Free trials, different cancellation methods, access that may continue after cancellation, and whether the process was actually completed can end up being tracked in different places.
RenewExit started from the idea of making that process easier to understand and follow in one place.
Approach
I designed RenewExit as a manual, local-first tracking tool that stays under the user’s control rather than as a service that automatically detects subscriptions.
Adding a subscription is only the starting point. When a user wants to leave a subscription, a stateful process called an Exit Plan begins. Choosing a cancellation or management method, opening the relevant route, recording the result, and tracking any remaining access are treated as separate steps.
Selected features
Subscription and Trial Tracking
Tracks subscriptions, free trials, renewal dates, and related information through manual entries.
Exit Plans
Guides the user through a step-by-step process for leaving a subscription.
Cancellation / Management Method Selection
Lets the user choose the appropriate route for managing or cancelling a subscription.
Result and Remaining Access Tracking
Records the outcome of the process and keeps track of any access that continues afterward.
Local Reminders
Uses local reminders for relevant subscription, trial, and exit-plan dates.
Technologies
- Swift
- SwiftUI
- SwiftData
- StoreKit
- UserNotifications
- LocalAuthentication
Development decisions
Keep subscription tracking manual
RenewExit uses manual input instead of automatic subscription detection. This avoids requiring access to bank or email data and keeps the tracking process under the user’s control.
Treat opening a cancellation route and completing cancellation as separate states
Opening a management or cancellation page does not mean the subscription was actually cancelled. RenewExit keeps those actions separate so the app does not assume an outcome that the user has not confirmed.
Model Exit Plans as a persistent lifecycle
Exit Plans persist as an ongoing process rather than a one-time action, allowing the app to retain the recorded result, remaining access, and relevant history after cancellation.
Learnings
App Store differentiation needs to be visible in the product flow
Building a technically functional app was not enough on its own. The App Store review process reinforced the importance of making the product’s differentiation and user flow clear.
Local-first products still need explicit lifecycle state management
RenewExit made local-first data modelling, persistent lifecycle state, and App Store review constraints much more concrete parts of the product-development process.