StoreKit Causing Unrelated SwiftUI View to Freeze

Hello everyone! I've encountered an issue related to SwiftUI and StoreKit. Please take a look at the SwiftUI code snippet below:

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationStack {
            List {
                NavigationLink {
                    Page1()
                } label: {
                    Text("Go to Page 1")
                }
            }
        }
    }
}

struct Page1: View {
    @Environment(\.dismiss) private var dismiss
    @State private var string: String = ""
    
    var body: some View {
        List {
            NavigationLink {
                List {
                    Page2(string: $string)
                        .simpleValue(4)
                }
            } label: {
                Text("Tap this button will freeze the app")
            }
        }
        .navigationTitle("Page 1")
    }
}

struct Page2: View {
    @Binding var string: String?
    
    init(string: Binding<String>) {
        self._string = Binding(string)
    }
    
    var body: some View {
        Text("Page 2")
    }
}

extension EnvironmentValues {
    @Entry var simpleValue: Int = 3
}

extension View {
    func simpleValue(_ value: Int) -> some View {
        self.environment(\.simpleValue, value)
    }
}

This view runs normally until the following symbol is referenced anywhere in the project:

import StoreKit

extension View {
    func notEvenUsed() -> some View {
        self.manageSubscriptionsSheet(isPresented: .constant(false))
    }
}

It seems that once the project links the View.manageSubscriptionsSheet(isPresented:) method, regardless of whether it's actually used, it causes the above SwiftUI view to freeze.

Steps to Reproduce:

  1. Clone the repository: https://github.com/gongzhang/StrangeFreeze
  2. Open it in Xcode 16 and run on iOS 17-18.1
  3. Navigate to the second page and tap the button, causing the app to freeze.
  4. Remove manageSubscriptionsSheet(...), then everything will work fine

FB15932459

StoreKit Causing Unrelated SwiftUI View to Freeze
 
 
Q