The view dismisses when @ObservedRealmObject is updated

I have a view where realm object can be updated, and when I do that the view dismisses, and that’s unwanted behavior. What could be the problem here and possible solution?

struct CardView: View {
    @ObservedRealmObject var card: Card

    @State private var frontText: String = ""
    @State private var backText: String = ""
    @State private var isAlerPresented: Bool = false

    @EnvironmentObject private var realmManager: RealmManager
    @EnvironmentObject private var audioRecorder: AudioRecorder

    var body: some View {
        VStack {
            TextField("", text: $frontText)
                .padding(.bottom)
            Divider()
            TextField("", text: $backText)
                .padding(.top)
        }
        .font(.system(size: 40, weight: .medium))
        .minimumScaleFactor(0.5)
        .multilineTextAlignment(.center)
        .padding()
        .onAppear {
            print(card._id)
            frontText = card.front
            backText = card.back
        }
        .onDisappear {
            print(card._id)
        }
        .toolbar {
            ToolbarItem(placement: .confirmationAction) {
                Button {
                    do {
                        try realmManager.realm?.write {
                            guard let card = card.thaw() else { return }
                            card.front = frontText
                            card.back = backText
                        }
                    } catch {
                        print(error.localizedDescription)
                    }
                } label: {
                    Text("Update")
                }
            }
            ToolbarItemGroup(placement: .keyboard) {
                if let fileName = card.audioName {
                    Button {
                        isAlerPresented.toggle()
                    } label: {
                        Image(systemName: "trash.fill")
                    }
                    .alert("Delete audio file", isPresented: $isAlerPresented, actions: {
                        Button("Delete", role: .destructive) {
                            LocalFileManager.shared.delete(fileName)
                            do {
                                try realmManager.realm?.write {
                                    guard let card = card.thaw() else { return }
                                    card.audioName = nil
                                }
                            } catch {
                                print(error.localizedDescription)
                            }
                        }
                    })
                    .tint(.red)

                    Button {
                        SoundManager.shared.play(sound: fileName)
                    } label: {
                        Image(systemName: "play.fill")
                    }
                }
                Spacer()
                Button {

                } label: {
                    Image(systemName: "mic.fill.badge.plus")
                        .symbolRenderingMode(.palette)
                        .foregroundStyle(.green, .blue)
                }

            }
        }
    }
}