diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,8 @@
 # Revision history for reflex-dom-core
 
+## 0.8.1.2
+* Support GHC 9.12
+
 ## 0.8.1.1
 * Support GHC 9.10
 
@@ -31,7 +34,7 @@
 
 ## 0.7.0.0
 
-* Breaking change: Remove HasJSContext and MonadJS. This change also removes the `js` type parameter from `Prerender`. Change `Prerender js t m` to `Prerender t m`.
+* ([#429](https://github.com/reflex-frp/reflex-dom/pull/429)) **(Breaking change)** Remove HasJS, HasJSContext and MonadJS. This change also removes the `js` type parameter from `Prerender`. Change `Prerender js t m` to `Prerender t m`.
   * `Reflex.Dom.WebSocket.Foreign.newWebSocket` takes one fewer argument: the first argument used to be a js context
 
 ## 0.6.3.0
diff --git a/reflex-dom-core.cabal b/reflex-dom-core.cabal
--- a/reflex-dom-core.cabal
+++ b/reflex-dom-core.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.24
 Name: reflex-dom-core
-Version: 0.8.1.1
+Version: 0.8.1.2
 Synopsis: Functional Reactive Web Apps with Reflex
 Description:
   Web applications without callbacks or side-effects.
@@ -73,7 +73,7 @@
   hs-source-dirs: src
   build-depends:
     aeson >= 0.8 && < 2.3,
-    base >= 4.7 && < 4.21,
+    base >= 4.7 && < 4.22,
     bifunctors >= 4.2 && < 6,
     bimap >= 0.3 && < 0.6,
     blaze-builder >= 0.4.1 && < 0.5,
@@ -175,7 +175,7 @@
   if flag(use-template-haskell)
     build-depends:
       dependent-sum-template >= 0.1 && < 0.3,
-      template-haskell >= 2.12.0 && < 2.23
+      template-haskell >= 2.12.0 && < 2.24
     other-extensions: TemplateHaskell
     cpp-options: -DUSE_TEMPLATE_HASKELL
     other-modules:
diff --git a/src/Reflex/Dom/Xhr.hs b/src/Reflex/Dom/Xhr.hs
--- a/src/Reflex/Dom/Xhr.hs
+++ b/src/Reflex/Dom/Xhr.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE GADTs #-}
@@ -174,7 +173,6 @@
 import qualified Data.Text.Lazy as LT
 import qualified Data.Text.Lazy.Builder as B
 import Data.Traversable
-import Data.Typeable
 
 import Language.Javascript.JSaddle.Monad (JSM, askJSM, runJSM, MonadJSM, liftJSM)
 
@@ -183,7 +181,7 @@
                 , _xhrRequest_url :: Text
                 , _xhrRequest_config :: XhrRequestConfig a
                 }
-   deriving (Show, Read, Eq, Ord, Typeable, Functor)
+   deriving (Show, Read, Eq, Ord, Functor)
 
 data XhrRequestConfig a
    = XhrRequestConfig { _xhrRequestConfig_headers :: Map Text Text
@@ -194,7 +192,7 @@
                       , _xhrRequestConfig_withCredentials :: Bool
                       , _xhrRequestConfig_responseHeaders :: XhrResponseHeaders
                       }
-   deriving (Show, Read, Eq, Ord, Typeable, Functor)
+   deriving (Show, Read, Eq, Ord, Functor)
 
 data XhrResponse
    = XhrResponse { _xhrResponse_status :: Word
@@ -203,12 +201,11 @@
                  , _xhrResponse_responseText :: Maybe Text
                  , _xhrResponse_headers :: Map (CI Text) Text
                  }
-   deriving (Typeable)
 
 data XhrResponseHeaders =
     OnlyHeaders (Set.Set (CI Text)) -- ^ Parse a subset of headers from the XHR Response
   | AllHeaders -- ^ Parse all headers from the XHR Response
-  deriving (Show, Read, Eq, Ord, Typeable)
+  deriving (Show, Read, Eq, Ord)
 
 instance Default XhrResponseHeaders where
   def = OnlyHeaders mempty
diff --git a/src/Reflex/Dom/Xhr/Exception.hs b/src/Reflex/Dom/Xhr/Exception.hs
--- a/src/Reflex/Dom/Xhr/Exception.hs
+++ b/src/Reflex/Dom/Xhr/Exception.hs
@@ -1,12 +1,9 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-
 module Reflex.Dom.Xhr.Exception where
 
 import Control.Exception (Exception (..))
-import Data.Typeable
 
 data XhrException = XhrException_Error
                   | XhrException_Aborted
-     deriving (Show, Read, Eq, Ord, Typeable)
+     deriving (Show, Read, Eq, Ord)
 
 instance Exception XhrException
diff --git a/src/Reflex/Dom/Xhr/ResponseType.hs b/src/Reflex/Dom/Xhr/ResponseType.hs
--- a/src/Reflex/Dom/Xhr/ResponseType.hs
+++ b/src/Reflex/Dom/Xhr/ResponseType.hs
@@ -1,10 +1,7 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-
 module Reflex.Dom.Xhr.ResponseType where
 
 import Data.ByteString (ByteString)
 import Data.Text (Text)
-import Data.Typeable
 import GHCJS.DOM.Blob (Blob)
 
 data XhrResponseType
@@ -12,7 +9,7 @@
   | XhrResponseType_ArrayBuffer
   | XhrResponseType_Blob
   | XhrResponseType_Text
-  deriving (Show, Read, Eq, Ord, Typeable)
+  deriving (Show, Read, Eq, Ord)
 
 data XhrResponseBody
   = XhrResponseBody_Default Text
