diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for reflex
 
+## 0.9.0.1
+
+* Add support for ghc-9.6
+
 ## 0.9.0.0
 
 * Breaking Change: Filter updates to `listWithKey` child widgets so that changes to the input Map don't cause spurious updates to unaffected children. This imposes an `Eq` constraint on the child values.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # [Reflex](https://reflex-frp.org/)
 
-[![Haskell](https://img.shields.io/badge/language-Haskell-orange.svg)](https://haskell.org) [![Hackage](https://img.shields.io/hackage/v/reflex.svg)](https://hackage.haskell.org/package/reflex) [![Hackage CI](https://matrix.hackage.haskell.org/api/v2/packages/reflex/badge)](https://matrix.hackage.haskell.org/#/package/reflex) [![BSD3 License](https://img.shields.io/badge/license-BSD3-blue.svg)](https://github.com/reflex-frp/reflex/blob/master/LICENSE)
+[![Haskell](https://img.shields.io/badge/language-Haskell-orange.svg)](https://haskell.org) [![Hackage](https://img.shields.io/hackage/v/reflex.svg)](https://hackage.haskell.org/package/reflex) [![BSD3 License](https://img.shields.io/badge/license-BSD3-blue.svg)](https://github.com/reflex-frp/reflex/blob/master/LICENSE)
 
 Interactive programs without callbacks or side-effects. Functional Reactive Programming (FRP) uses composable events and time-varying values to describe interactive systems as pure functions. Just like other pure functional code, functional reactive code is easier to get right on the first try, maintain, and reuse.
 
diff --git a/bench/Main.hs b/bench/Main.hs
--- a/bench/Main.hs
+++ b/bench/Main.hs
@@ -12,6 +12,7 @@
 import Control.Concurrent.STM
 import Control.DeepSeq
 import Control.Exception (evaluate)
+import Control.Monad
 import Control.Monad.Identity
 import Control.Monad.IO.Class
 import Criterion.Main
diff --git a/reflex.cabal b/reflex.cabal
--- a/reflex.cabal
+++ b/reflex.cabal
@@ -1,5 +1,5 @@
 Name: reflex
-Version: 0.9.0.0
+Version: 0.9.0.1
 Synopsis: Higher-order Functional Reactive Programming
 Description:
   Interactive programs without callbacks or side-effects.
@@ -28,7 +28,7 @@
   ChangeLog.md
 
 tested-with:
-  GHC  ==8.4.4 || ==8.6.5 || ==8.8.1 || ==8.10.7 || ==9.0.1 || ==9.2.5 || ==9.4.3,
+  GHC  ==8.4.4 || ==8.6.5 || ==8.8.1 || ==8.10.7 || ==9.0.1 || ==9.2.5 || ==9.4.5 || ==9.6.1,
   GHCJS ==8.6 || ==8.10
 
 flag use-reflex-optimizer
@@ -71,8 +71,8 @@
   hs-source-dirs: src
   build-depends:
     MemoTrie == 0.6.*,
-    base >= 4.11 && < 4.18,
-    bifunctors >= 5.2 && < 5.6,
+    base >= 4.11 && < 4.19,
+    bifunctors >= 5.2 && < 5.7,
     comonad >= 5.0.4 && < 5.1,
     commutative-semigroups >= 0.1 && <0.2,
     constraints >= 0.10 && <0.14,
@@ -80,11 +80,11 @@
     containers >= 0.6 && < 0.7,
     data-default >= 0.5 && < 0.8,
     dependent-map >= 0.3 && < 0.5,
-    exception-transformers == 0.4.*,
+    exception-transformers >= 0.4 && < 0.5,
     lens >= 4.7 && < 5.3,
-    mmorph >= 1.0 && < 1.2,
+    mmorph >= 1.0 && < 1.3,
     monad-control >= 1.0.1 && < 1.1,
-    mtl >= 2.1 && < 2.3,
+    mtl >= 2.1 && < 2.4,
     patch >= 0.0.7 && < 0.1,
     prim-uniq >= 0.1.0.1 && < 0.3,
     primitive >= 0.5 && < 0.8,
@@ -92,17 +92,17 @@
     random >= 1.1 && < 1.3,
     ref-tf >= 0.4 && < 0.6,
     reflection == 2.1.*,
-    semigroupoids >= 4.0 && < 6,
+    semigroupoids >= 4.0 && < 7,
     stm >= 2.4 && < 2.6,
     syb >= 0.5 && < 0.8,
     time >= 1.4 && < 1.13,
-    transformers >= 0.5.6.0 && < 0.6,
+    transformers >= 0.5 && < 0.7,
     unbounded-delays >= 0.1.0.0 && < 0.2,
     witherable >= 0.4 && < 0.5
 
   if flag(split-these)
     build-depends:     these >= 1 && <1.3,
-                       semialign >=1 && <1.3,
+                       semialign >=1 && <1.4,
                        monoidal-containers >= 0.6.2.0 && < 0.7
   else
     build-depends:     these >= 0.4 && <0.9,
@@ -188,7 +188,7 @@
       dependent-sum >= 0.6 && < 0.8,
       haskell-src-exts >= 1.16 && < 1.24,
       haskell-src-meta >= 0.6 && < 0.9,
-      template-haskell >= 2.9 && < 2.20
+      template-haskell >= 2.9 && < 2.21
     exposed-modules:
       Reflex.Dynamic.TH
     other-extensions: TemplateHaskell
@@ -260,6 +260,8 @@
                , directory
                , filepath
                , filemanip
+  if impl(ghc >= 9.6)
+    buildable: False
   if impl(ghc < 9.2)
     build-depends: hlint (< 2.1 || >= 2.2.2) && < 3.5
   else
diff --git a/src/Reflex/BehaviorWriter/Base.hs b/src/Reflex/BehaviorWriter/Base.hs
--- a/src/Reflex/BehaviorWriter/Base.hs
+++ b/src/Reflex/BehaviorWriter/Base.hs
@@ -21,7 +21,9 @@
   , withBehaviorWriterT
   ) where
 
+import Control.Monad
 import Control.Monad.Exception
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Control.Monad.IO.Class
 import Control.Monad.Morph
diff --git a/src/Reflex/Class.hs b/src/Reflex/Class.hs
--- a/src/Reflex/Class.hs
+++ b/src/Reflex/Class.hs
@@ -185,6 +185,8 @@
 #endif
 
 import Control.Applicative
+import Control.Monad
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Control.Monad.Reader
 import Control.Monad.State.Strict
diff --git a/src/Reflex/Collection.hs b/src/Reflex/Collection.hs
--- a/src/Reflex/Collection.hs
+++ b/src/Reflex/Collection.hs
@@ -34,6 +34,8 @@
 #endif
 #endif
 
+import Control.Monad
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Data.Align
 import Data.Functor.Misc
diff --git a/src/Reflex/Dynamic.hs b/src/Reflex/Dynamic.hs
--- a/src/Reflex/Dynamic.hs
+++ b/src/Reflex/Dynamic.hs
@@ -99,7 +99,7 @@
 import Data.These
 import Data.Type.Equality ((:~:) (..))
 
-import Debug.Trace
+import Debug.Trace hiding (traceEventWith)
 
 -- | Map a sampling function over a 'Dynamic'.
 mapDynM :: forall t m a b. (Reflex t, MonadHold t m) => (forall m'. MonadSample t m' => a -> m' b) -> Dynamic t a -> m (Dynamic t b)
diff --git a/src/Reflex/DynamicWriter/Base.hs b/src/Reflex/DynamicWriter/Base.hs
--- a/src/Reflex/DynamicWriter/Base.hs
+++ b/src/Reflex/DynamicWriter/Base.hs
@@ -19,7 +19,9 @@
   , withDynamicWriterT
   ) where
 
+import Control.Monad
 import Control.Monad.Exception
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Control.Monad.IO.Class
 import Control.Monad.Morph
diff --git a/src/Reflex/EventWriter/Base.hs b/src/Reflex/EventWriter/Base.hs
--- a/src/Reflex/EventWriter/Base.hs
+++ b/src/Reflex/EventWriter/Base.hs
@@ -34,6 +34,7 @@
 import Reflex.TriggerEvent.Class
 
 import Control.Monad.Exception
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Control.Monad.Morph
 import Control.Monad.Primitive
diff --git a/src/Reflex/PerformEvent/Base.hs b/src/Reflex/PerformEvent/Base.hs
--- a/src/Reflex/PerformEvent/Base.hs
+++ b/src/Reflex/PerformEvent/Base.hs
@@ -33,6 +33,7 @@
 
 import Control.Lens
 import Control.Monad.Exception
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Control.Monad.Primitive
 import Control.Monad.Reader
diff --git a/src/Reflex/PerformEvent/Class.hs b/src/Reflex/PerformEvent/Class.hs
--- a/src/Reflex/PerformEvent/Class.hs
+++ b/src/Reflex/PerformEvent/Class.hs
@@ -17,6 +17,8 @@
   , performEventAsync
   ) where
 
+import Control.Monad
+import Control.Monad.Fix
 import Control.Monad.Reader
 import Control.Monad.Trans.Maybe (MaybeT (..))
 
diff --git a/src/Reflex/PostBuild/Base.hs b/src/Reflex/PostBuild/Base.hs
--- a/src/Reflex/PostBuild/Base.hs
+++ b/src/Reflex/PostBuild/Base.hs
@@ -30,6 +30,7 @@
 
 import Control.Applicative (liftA2)
 import Control.Monad.Exception
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Control.Monad.Primitive
 import Control.Monad.Reader
diff --git a/src/Reflex/Requester/Base/Internal.hs b/src/Reflex/Requester/Base/Internal.hs
--- a/src/Reflex/Requester/Base/Internal.hs
+++ b/src/Reflex/Requester/Base/Internal.hs
@@ -32,7 +32,9 @@
 import Reflex.TriggerEvent.Class
 
 import Control.Applicative (liftA2)
+import Control.Monad
 import Control.Monad.Exception
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Control.Monad.Morph
 import Control.Monad.Primitive
diff --git a/src/Reflex/Requester/Class.hs b/src/Reflex/Requester/Class.hs
--- a/src/Reflex/Requester/Class.hs
+++ b/src/Reflex/Requester/Class.hs
@@ -18,6 +18,7 @@
  , requestingIdentity
  ) where
 
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Control.Monad.Reader
 import qualified Control.Monad.State.Lazy as Lazy
diff --git a/src/Reflex/Spider/Internal.hs b/src/Reflex/Spider/Internal.hs
--- a/src/Reflex/Spider/Internal.hs
+++ b/src/Reflex/Spider/Internal.hs
@@ -36,6 +36,7 @@
 import Control.Exception
 import Control.Monad hiding (forM, forM_, mapM, mapM_)
 import Control.Monad.Exception
+import Control.Monad.Fix
 import Control.Monad.Identity hiding (forM, forM_, mapM, mapM_)
 import Control.Monad.Primitive
 import Control.Monad.Reader.Class
diff --git a/src/Reflex/TriggerEvent/Base.hs b/src/Reflex/TriggerEvent/Base.hs
--- a/src/Reflex/TriggerEvent/Base.hs
+++ b/src/Reflex/TriggerEvent/Base.hs
@@ -16,6 +16,7 @@
 import Control.Applicative (liftA2)
 import Control.Concurrent
 import Control.Monad.Exception
+import Control.Monad.Fix
 import Control.Monad.Primitive
 import Control.Monad.Reader
 import Control.Monad.Ref
diff --git a/test/Reflex/Plan/Reflex.hs b/test/Reflex/Plan/Reflex.hs
--- a/test/Reflex/Plan/Reflex.hs
+++ b/test/Reflex/Plan/Reflex.hs
@@ -34,6 +34,7 @@
 
 import Control.Applicative
 import Control.Monad
+import Control.Monad.Fix
 import Control.Monad.Identity
 import Control.Monad.State.Strict
 
diff --git a/test/Reflex/Test/CrossImpl.hs b/test/Reflex/Test/CrossImpl.hs
--- a/test/Reflex/Test/CrossImpl.hs
+++ b/test/Reflex/Test/CrossImpl.hs
@@ -24,6 +24,8 @@
 import qualified Reflex.Profiled as Prof
 
 import Control.Arrow (second, (&&&))
+import Control.Monad
+import Control.Monad.Fix
 import Control.Monad.Identity hiding (forM, forM_, mapM, mapM_, sequence, sequence_)
 import Control.Monad.State.Strict hiding (forM, forM_, mapM, mapM_, sequence, sequence_)
 import Data.Dependent.Sum (DSum (..))
