diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.4.3.14
+
+* [#170](https://github.com/stevenfontanella/microlens/issues/170), [#171](https://github.com/stevenfontanella/microlens/pull/171) Support GHC 9.8.
+
 # 0.4.3.13
 
 * [#167](https://github.com/stevenfontanella/microlens/issues/167) Support th-abstraction 0.5.
diff --git a/microlens-th.cabal b/microlens-th.cabal
--- a/microlens-th.cabal
+++ b/microlens-th.cabal
@@ -1,5 +1,5 @@
 name:                microlens-th
-version:             0.4.3.13
+version:             0.4.3.14
 synopsis:            Automatic generation of record lenses for microlens
 description:
   This package lets you automatically generate lenses for data types; code was extracted from the lens package, and therefore generated lenses are fully compatible with ones generated by lens (and can be used both from lens and microlens).
@@ -26,9 +26,10 @@
                      GHC==8.8.4
                      GHC==8.10.7
                      GHC==9.0.2
-                     GHC==9.2.5
-                     GHC==9.4.3
-                     GHC==9.6.1
+                     GHC==9.2.8
+                     GHC==9.4.6
+                     GHC==9.6.2
+                     GHC==9.8.0
 
 source-repository head
   type:                git
@@ -43,8 +44,8 @@
                      , microlens >=0.4.0 && <0.5
                      , containers >=0.5 && <0.7
                      , transformers
-                     , template-haskell >=2.8 && <2.21
-                     , th-abstraction >=0.4.1 && <0.6
+                     , template-haskell >=2.8 && <2.22
+                     , th-abstraction >=0.4.1 && <0.7
 
   ghc-options:
     -Wall -fwarn-tabs
diff --git a/src/Lens/Micro/TH.hs b/src/Lens/Micro/TH.hs
--- a/src/Lens/Micro/TH.hs
+++ b/src/Lens/Micro/TH.hs
@@ -801,8 +801,11 @@
       fd   | null vars = []
            | otherwise = [FunDep [c] varNames]
 
-
+#if MIN_VERSION_template_haskell(2,21,0)
+  classD (cxt[]) className (D.plainTV c : D.changeTVFlags D.defaultBndrFlag vars) fd
+#else
   classD (cxt[]) className (D.plainTV c:vars) fd
+#endif
     $ sigD methodName (return (''Lens' `conAppsT` [VarT c, s']))
     : concat
       [ [sigD defName (return ty)
