Back to Projects

iOS

RenewExit

  • Available on the App Store
RenewExit Subscriptions screen showing a monthly cost summary, active plans, and a free-trial entry.

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

  1. Subscription and Trial Tracking

    Tracks subscriptions, free trials, renewal dates, and related information through manual entries.

  2. Exit Plans

    Guides the user through a step-by-step process for leaving a subscription.

  3. Cancellation / Management Method Selection

    Lets the user choose the appropriate route for managing or cancelling a subscription.

  4. Result and Remaining Access Tracking

    Records the outcome of the process and keeps track of any access that continues afterward.

  5. Local Reminders

    Uses local reminders for relevant subscription, trial, and exit-plan dates.

Technologies

  • Swift
  • SwiftUI
  • SwiftData
  • StoreKit
  • UserNotifications
  • LocalAuthentication

Development decisions

  1. 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.

  2. 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.

  3. 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.

Project destination

View on the App Store