diff --git a/Sources/HUDFeature/HUDManager.swift b/Sources/HUDFeature/HUDManager.swift
index 418cd669b8215e55de03cd61023de24767a4339c..0ce430470bb443428c92b5f54a1f1c2970ae6ae4 100644
--- a/Sources/HUDFeature/HUDManager.swift
+++ b/Sources/HUDFeature/HUDManager.swift
@@ -19,18 +19,23 @@ public struct HUDManager {
 extension HUDManager {
   public static func live() -> HUDManager {
     let subject = PassthroughSubject<HUDModel?, Never>()
+    @Dependency(\.mainQueue) var mainQueue
     return HUDManager(
       show: .init { model in
-        let model = model ?? HUDModel(hasDotAnimation: true)
-        subject.send(model)
-        if model.isAutoDismissable {
-          DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
-            subject.send(nil)
+        mainQueue.schedule {
+          let model = model ?? HUDModel(hasDotAnimation: true)
+          subject.send(model)
+          if model.isAutoDismissable {
+            mainQueue.schedule(after: mainQueue.now.advanced(by: 2)) {
+              subject.send(nil)
+            }
           }
         }
       },
       hide: {
-        subject.send(nil)
+        mainQueue.schedule {
+          subject.send(nil)
+        }
       },
       observe: {
         subject.eraseToAnyPublisher()
diff --git a/Sources/HUDFeature/HUDPresenter.swift b/Sources/HUDFeature/HUDPresenter.swift
index 0bf202d30c1d960b65d2fe42e92be2eb3ad2513d..6f0e1ce178d9f36f35e8f587c8fe682c11d1e431 100644
--- a/Sources/HUDFeature/HUDPresenter.swift
+++ b/Sources/HUDFeature/HUDPresenter.swift
@@ -6,7 +6,6 @@ import SwiftUI
 public final class HUDPresenter {
   public init() {
     hudManager.observe()
-      .receive(on: DispatchQueue.main)
       .sink { [unowned self] model in
         if let model = model {
           show(model)