diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+0.8.15
+- Support for GHC 9.12 (by alexfmpe)
+
 0.8.14
 - Support for GHC 9.10 (by Troels Henriksen)
 
diff --git a/examples/HsHere.hs b/examples/HsHere.hs
--- a/examples/HsHere.hs
+++ b/examples/HsHere.hs
@@ -20,7 +20,6 @@
 
 import qualified Control.Monad.Fail           as Fail
 import           Data.Generics                (Data)
-import           Data.Typeable                (Typeable)
 import           Language.Haskell.Meta        (parseExp, parsePat)
 import           Language.Haskell.Meta.Utils  (cleanNames)
 import           Language.Haskell.TH.Lib      hiding (parensP)
@@ -42,7 +41,7 @@
   = CodeH Exp
   | TextH String
   | ManyH [Here]
-  deriving (Eq,Show,Data,Typeable)
+  deriving (Eq,Show,Data)
 
 -- | Example:
 --
diff --git a/examples/SKI.hs b/examples/SKI.hs
--- a/examples/SKI.hs
+++ b/examples/SKI.hs
@@ -20,7 +20,6 @@
 
 import qualified Control.Monad.Fail           as Fail
 import           Data.Generics                (Data)
-import           Data.Typeable                (Typeable)
 import           Language.Haskell.Meta        (parseExp, parsePat)
 import           Language.Haskell.Meta.Utils  (cleanNames, ppDoc, unsafeRunQ)
 import           Language.Haskell.TH.Lib      hiding (parensP)
@@ -40,7 +39,7 @@
 
 
 data SKI = S | K | I | E Exp | SKI :$ SKI
-  deriving (Eq,Data,Typeable)
+  deriving (Eq,Data)
 
 run :: String -> [SKI]
 run = fmap eval . fst . parse
diff --git a/haskell-src-meta.cabal b/haskell-src-meta.cabal
--- a/haskell-src-meta.cabal
+++ b/haskell-src-meta.cabal
@@ -1,5 +1,5 @@
 name:               haskell-src-meta
-version:            0.8.14
+version:            0.8.15
 cabal-version:      >= 1.10
 build-type:         Simple
 license:            BSD3
@@ -9,7 +9,7 @@
 copyright:          (c) Matt Morrow
 maintainer:         danburton.email@gmail.com
 bug-reports:        https://github.com/haskell-party/haskell-src-meta/issues
-tested-with:        GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.2, GHC == 9.4.1, GHC == 9.6.1, GHC == 9.8.1, GHC == 9.10.1
+tested-with:        GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.2, GHC == 9.4.1, GHC == 9.6.1, GHC == 9.8.1, GHC == 9.10.1, GHC == 9.12.1
 synopsis:           Parse source to template-haskell abstract syntax.
 description:        The translation from haskell-src-exts abstract syntax
                     to template-haskell abstract syntax isn't 100% complete yet.
@@ -22,7 +22,7 @@
                    haskell-src-exts >= 1.21 && < 1.24,
                    pretty >= 1.0 && < 1.2,
                    syb >= 0.1 && < 0.8,
-                   template-haskell >= 2.12 && < 2.23,
+                   template-haskell >= 2.12 && < 2.24,
                    th-orphans >= 0.12 && < 0.14
 
   hs-source-dirs:  src
diff --git a/src/Language/Haskell/Meta/Extensions.hs b/src/Language/Haskell/Meta/Extensions.hs
--- a/src/Language/Haskell/Meta/Extensions.hs
+++ b/src/Language/Haskell/Meta/Extensions.hs
@@ -374,6 +374,14 @@
   TH.ListTuplePuns                     -> Nothing
 #endif
 
+-- 2.23.0 ---------------------------------------
+
+#if MIN_VERSION_template_haskell(2,23,0)
+  TH.MultilineStrings                  -> Nothing
+  TH.NamedDefaults                     -> Nothing
+  TH.OrPatterns                        -> Nothing
+#endif
+
   -- NB: when adding a case here, you may also need to update `toExtension`
 
 
