diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for reflex-vty
 
+## 0.3.1.1
+
+* Loosen version bounds and support GHC 9.4
+
 ## 0.3.1.0
 
 * Replace `mempty` with `defAttr` for Attr from Graphics.Vty to make it compatible with vty-5.34
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -27,6 +27,17 @@
 * Run ghcid for immediate compiler feedback when you save a .hs file: `ghcid -c "cabal repl reflex-vty --ghc-options=-Wall"`
 * etc.
 
+##### Selecting a compiler
+
+When entering the nix-shell, you can select from the following compilers: ghc-8.10.7 and ghc-9.4.3. By default, ghc-8.10.7 is selected. To enter a shell with ghc-9.4.3, run:
+
+```bash
+nix-shell --argstr compiler ghc943
+```
+
+You may need to run `cabal clean` and `cabal configure -w ghc-9.4.3` if you were previously working on the project with a different compiler.
+
+
 #### With cabal
 
 Please see the `tested-with` field of the cabal file for known-compatible versions of GHC.
diff --git a/reflex-vty.cabal b/reflex-vty.cabal
--- a/reflex-vty.cabal
+++ b/reflex-vty.cabal
@@ -1,5 +1,5 @@
 name: reflex-vty
-version: 0.3.1.0
+version: 0.3.1.1
 synopsis: Reflex FRP host and widgets for VTY applications
 description:
   Build terminal applications using functional reactive programming (FRP) with Reflex FRP (<https://reflex-frp.org>).
@@ -18,7 +18,7 @@
   ChangeLog.md
 extra-doc-files: doc/tasks.png
 tested-with:
-  GHC ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7
+  GHC ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.4.3
 
 source-repository head
   type: git
@@ -39,7 +39,7 @@
                  , Reflex.Spider.Orphans
                  , Control.Monad.NodeId
   build-depends:
-    base >= 4.10.0 && < 4.16,
+    base >= 4.10.0 && < 4.18,
     bimap >= 0.3.3 && < 0.5,
     containers >= 0.5.0 && < 0.7,
     mtl >= 2.2.2 && < 2.3,
@@ -47,15 +47,15 @@
     stm >= 2.4 && < 2.6,
     data-default >= 0.7.1 && < 0.8,
     dependent-map >= 0.4 && < 0.5,
-    text >= 1.2.3 && < 1.3,
+    text >= 1.2.3 && < 2.1,
     dependent-sum >= 0.7 && < 0.8,
     exception-transformers >= 0.4.0 && < 0.5,
     mmorph >= 1.1 && < 1.2,
     ordered-containers >= 0.2.2 && < 0.3,
     primitive >= 0.6.3 && < 0.8,
     ref-tf >= 0.4.0 && < 0.6,
-    reflex >= 0.8 && < 0.9,
-    time >= 1.8.0 && < 1.10,
+    reflex >= 0.8 && < 1,
+    time >= 1.8.0 && < 1.13,
     vty >= 5.28 && < 5.38
   hs-source-dirs: src
   default-language: Haskell2010
@@ -88,6 +88,7 @@
     TemplateHaskell
     TupleSections
     TypeApplications
+    TypeOperators
     TypeFamilies
 
 executable example
@@ -150,5 +151,5 @@
     reflex-vty,
     text,
     extra,
-    hspec >= 2.7 && < 2.9
+    hspec >= 2.7 && < 2.11
   default-language: Haskell2010
diff --git a/src/Reflex/Vty/Widget.hs b/src/Reflex/Vty/Widget.hs
--- a/src/Reflex/Vty/Widget.hs
+++ b/src/Reflex/Vty/Widget.hs
@@ -9,7 +9,7 @@
 import Control.Applicative (liftA2)
 import Control.Monad.Fix (MonadFix)
 import Control.Monad.IO.Class (MonadIO)
-import Control.Monad.Morph
+import Control.Monad.Morph (MFunctor(..))
 import Control.Monad.NodeId
 import Control.Monad.Reader (ReaderT, ask, local, runReaderT)
 import Control.Monad.Ref
