diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+0.8.13
+- Support for GHC 9.8 (by Vladislav Zavialov)
+
 0.8.12
 - Support for GHC 9.6 (by Troels Henriksen)
 
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.12
+version:            0.8.13
 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
+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
 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.21,
+                   template-haskell >= 2.12 && < 2.22,
                    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
@@ -360,6 +360,13 @@
   TH.TypeData                          -> Nothing
 #endif
 
+-- 2.21.0 ---------------------------------------
+
+#if MIN_VERSION_template_haskell(2,21,0)
+  TH.TypeAbstractions                  -> Nothing
+  TH.ExtendedLiterals                  -> Nothing
+#endif
+
   -- NB: when adding a case here, you may also need to update `toExtension`
 
 
diff --git a/src/Language/Haskell/Meta/Syntax/Translate.hs b/src/Language/Haskell/Meta/Syntax/Translate.hs
--- a/src/Language/Haskell/Meta/Syntax/Translate.hs
+++ b/src/Language/Haskell/Meta/Syntax/Translate.hs
@@ -395,6 +395,18 @@
 toTyVarSpec = id
 #endif
 
+-- TODO (int-index): Use MIN_VERSION_template_haskell(2,21,0)
+#if __GLASGOW_HASKELL__ >= 907
+toTyVarsVis :: ToTyVars a => a -> [TH.TyVarBndrVis]
+toTyVarsVis = map toTyVarVis . toTyVars
+  where
+    toTyVarVis (TH.KindedTV n () k) = TH.KindedTV n TH.BndrReq k
+    toTyVarVis (TH.PlainTV n ())    = TH.PlainTV n TH.BndrReq
+#else
+toTyVarsVis :: ToTyVars a => a -> [TyVarBndr_ ()]
+toTyVarsVis = toTyVars
+#endif
+
 instance ToType (Exts.Type l) where
   toType (Exts.TyForall _ tvbM cxt t) = TH.ForallT (maybe [] (fmap (toTyVarSpec . toTyVar)) tvbM) (toCxt cxt) (toType t)
   toType (Exts.TyFun _ a b) = toType a .->. toType b
@@ -530,13 +542,13 @@
 
 instance ToDec (Exts.Decl l) where
   toDec (Exts.TypeDecl _ h t)
-    = TH.TySynD (toName h) (toTyVars h) (toType t)
+    = TH.TySynD (toName h) (toTyVarsVis h) (toType t)
 
   toDec a@(Exts.DataDecl  _ dOrN cxt h qcds qns)
     = case dOrN of
         Exts.DataType _ -> TH.DataD (toCxt cxt)
                              (toName h)
-                             (toTyVars h)
+                             (toTyVarsVis h)
                              Nothing
                              (fmap qualConDeclToCon qcds)
                              (toDerivClauses qns)
@@ -546,7 +558,7 @@
                                                               "wrong number of constructors") a
                         in TH.NewtypeD (toCxt cxt)
                                     (toName h)
-                                    (toTyVars h)
+                                    (toTyVarsVis h)
                                     Nothing
                                     (qualConDeclToCon qcd)
                                     (toDerivClauses qns)
@@ -567,11 +579,11 @@
 
   toDec (Exts.TypeFamDecl _ h sig inj)
     = TH.OpenTypeFamilyD $ TH.TypeFamilyHead (toName h)
-                                       (toTyVars h)
+                                       (toTyVarsVis h)
                                        (maybe TH.NoSig TH.KindSig . toMaybeKind $ sig)
                                        (fmap toInjectivityAnn inj)
   toDec (Exts.DataFamDecl _ _ h sig)
-    = TH.DataFamilyD (toName h) (toTyVars h) (toMaybeKind sig)
+    = TH.DataFamilyD (toName h) (toTyVarsVis h) (toMaybeKind sig)
 
   toDec _a@(Exts.FunBind _ mtchs)                           = hsMatchesToFunD mtchs
   toDec (Exts.PatBind _ p rhs bnds)                      = TH.ValD (toPat p)
@@ -593,7 +605,7 @@
   toDec (Exts.ClassDecl _ cxt h fds decls) = TH.ClassD
     (toCxt cxt)
     (toName h)
-    (toTyVars h)
+    (toTyVarsVis h)
     (fmap toFunDep fds)
     (toDecs decls)
    where
diff --git a/src/Language/Haskell/Meta/Utils.hs b/src/Language/Haskell/Meta/Utils.hs
--- a/src/Language/Haskell/Meta/Utils.hs
+++ b/src/Language/Haskell/Meta/Utils.hs
@@ -40,8 +40,15 @@
 decCons (NewtypeD _ _ _ _ con _) = [con]
 decCons _                        = []
 
+#if !MIN_VERSION_template_haskell(2,21,0)
+#if __GLASGOW_HASKELL__ < 900
+type TyVarBndrVis = TyVarBndr_ ()
+#else
+type TyVarBndrVis = TyVarBndrUnit
+#endif
+#endif
 
-decTyVars :: Dec -> [TyVarBndr_ ()]
+decTyVars :: Dec -> [TyVarBndrVis]
 decTyVars (DataD _ _ ns _ _ _)    = ns
 decTyVars (NewtypeD _ _ ns _ _ _) = ns
 decTyVars (TySynD _ ns _)         = ns
