     }
 
     private func statusAppears(_ status: PersistedStatus) {
+        guard
+            !lockStatusAppearanceUpdate.value
+        else {
+            return
+        }
+
         update {
             visibleStatuses.value.insert(status)
         }
     }
 
     private func statusDisappears(_ status: PersistedStatus) {
+        guard
+            !lockStatusAppearanceUpdate.value
+        else {
+            return
+        }
+
         update {
             visibleStatuses.value.remove(status)
         }
     }
     
     private func refreshInTask(_ proxy: ScrollViewProxy? = nil) {
-        fixedStatus = firstVisibleStatus
+        lockStatusAppearanceUpdate.value = true
+        fixedStatus.value = firstVisibleStatus
 
         Task {
             await refresh()
         }
 
-        if let fixedStatus {
+        if let fixedStatus = fixedStatus.value {
             update {
-                proxy?.scrollTo(fixedStatus, anchor: .zero)
+                proxy?.scrollTo(fixedStatus.statusId, anchor: .top)
+
+                update {
+                    lockStatusAppearanceUpdate.value = false
+                }
             }
         }
     }

    private var sessionModel: SessionModel
    @State
    private var reloadCancellable: AnyCancellable!
    @State
    private var fixedStatus: PersistedStatus? = nil
    private var visibleStatuses = MutableField(value: Set<PersistedStatus>())
    private var firstVisibleStatus: PersistedStatus? {
        visibleStatuses.value.sorted { $0.timestamp > $1.timestamp }.first
    }
    
    

        self.title = title
        self.timeline = timeline
        self.model = model
        
        self._persistedStatuses =
            FetchRequest<PersistedStatus>(
                sortDescriptors: model.sortDescriptors,
                      predicate: model.readFilter(),
                      animation: .easeIn)
    }
    
    
