Switching from paid upfront to freemium requires grandfathering existing users who already purchased the app. Using StoreKit's AppTransaction API, you can check the original app version or purchase date to identify legacy users and grant them lifetime access. Testing has quirks: TestFlight always reports version 1.0, reinstalls reset the original version, and device clock manipulation can affect date-based checks. The release sequence matters: set manual release, add reviewer notes explaining the transition, get approval, change the price to free in App Store Connect, then release the approved build. Cache legacy status locally in UserDefaults (or keychain for better security), and consider CloudKit for multi-device scenarios.
Sort: