UIViewRepresentable never dismantled on deletion (MEMORY LEAK)

I have find out that a UIViewRepresentable, even with a simples UIView, seems to never be dismantled when deleted from a ForEach and this can cause serious crashes.

In the following example you can observe this behavior by deleting a row from the list. The dismantleUIView function of SomeUIViewRepresentable or the deinit of SomeUIView are never called.

Has anyone faced this and found a solution for it?

I have also filled a Feedback: FB11979117

class SomeUIView: UIView {

    deinit {
        print(#function)
    }

}

struct SomeUIViewRepresentable: UIViewRepresentable {

    func makeUIView(context: Context) -> SomeUIView {
        let uiView = SomeUIView()
        uiView.backgroundColor = .systemBlue
        return uiView
    }

    func updateUIView(_ uiView: SomeUIView, context: Context) { }

    static func dismantleUIView(_ uiView: SomeUIView, coordinator: Coordinator) {
        print(#function)
    }

}

struct Model: Identifiable {
    let id = UUID()
}



struct ContentView: View {

    @State var models = [Model(), Model(), Model(), Model(), Model()]

    var body: some View {
        List {
            ForEach(models) { _ in
                SomeUIViewRepresentable()
            }
            .onDelete {
                models.remove(atOffsets: $0)
            }
        }
    }

}
UIViewRepresentable never dismantled on deletion (MEMORY LEAK)
 
 
Q