diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# 0.5.1.4 (2023-10-18)
+
+* Compatibility with GHC-9.8 / th-abstraction-0.6
+  (thanks to Ganesh Sittampalam).
+
 # 0.5.1.3 (2023-04-23)
 
 * Compatibility with GHC-9.6 / th-abstraction-0.5
diff --git a/generics-sop.cabal b/generics-sop.cabal
--- a/generics-sop.cabal
+++ b/generics-sop.cabal
@@ -1,5 +1,5 @@
 name:                generics-sop
-version:             0.5.1.3
+version:             0.5.1.4
 synopsis:            Generic Programming using True Sums of Products
 description:
   A library to support the definition of generic functions.
@@ -42,7 +42,7 @@
 build-type:          Simple
 cabal-version:       >=1.10
 extra-source-files:  CHANGELOG.md doctest.sh
-tested-with:         GHC == 8.0.2, 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.7, GHC == 9.4.4, GHC == 9.6.1
+tested-with:         GHC == 8.0.2, 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.7, GHC == 9.4.4, GHC == 9.6.1, GHC == 9.8.1
 
 source-repository head
   type:                git
@@ -65,11 +65,11 @@
                        Generics.SOP.NP
                        Generics.SOP.NS
                        Generics.SOP.Sing
-  build-depends:       base                 >= 4.9  && < 4.19,
+  build-depends:       base                 >= 4.9  && < 4.20,
                        sop-core             == 0.5.0.*,
-                       template-haskell     >= 2.8  && < 2.21,
-                       th-abstraction       >= 0.4  && < 0.6,
-                       ghc-prim             >= 0.3  && < 0.11
+                       template-haskell     >= 2.8  && < 2.22,
+                       th-abstraction       >= 0.6  && < 0.7,
+                       ghc-prim             >= 0.3  && < 0.12
   hs-source-dirs:      src
   default-language:    Haskell2010
   ghc-options:         -Wall
diff --git a/src/Generics/SOP/Instances.hs b/src/Generics/SOP/Instances.hs
--- a/src/Generics/SOP/Instances.hs
+++ b/src/Generics/SOP/Instances.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE EmptyCase #-}
 {-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE UnboxedTuples #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 {-# OPTIONS_GHC -freduction-depth=100 #-}
 {-# OPTIONS_GHC -fno-warn-deprecations #-}
diff --git a/src/Generics/SOP/TH.hs b/src/Generics/SOP/TH.hs
--- a/src/Generics/SOP/TH.hs
+++ b/src/Generics/SOP/TH.hs
@@ -20,6 +20,7 @@
 import Language.Haskell.TH.Datatype.TyVarBndr
 import Language.Haskell.TH
 import Language.Haskell.TH.Datatype as TH
+import Language.Haskell.TH.Datatype.TyVarBndr
 
 import Generics.SOP.BasicFunctors
 import qualified Generics.SOP.Metadata as SOP
@@ -190,7 +191,7 @@
       [ tySynD datatypeInfoName' [] (metadataType' variant name cons) ]
 
 deriveGenericForDataDec ::
-  (Name -> Q Type) -> DatatypeVariant -> Cxt -> Name -> [TyVarBndrUnit] -> [Type] -> [TH.ConstructorInfo] -> Q [Dec]
+  (Name -> Q Type) -> DatatypeVariant -> Cxt -> Name -> [TyVarBndrVis] -> [Type] -> [TH.ConstructorInfo] -> Q [Dec]
 deriveGenericForDataDec f _variant _cxt name _bndrs instTys cons = do
   let typ = appTysSubst f name instTys
   deriveGenericForDataType f typ cons
@@ -205,7 +206,7 @@
   return [inst]
 
 deriveMetadataForDataDec ::
-  (Name -> Q Type) -> DatatypeVariant -> Cxt -> Name -> [TyVarBndrUnit] -> [Type] -> [TH.ConstructorInfo] -> Q [Dec]
+  (Name -> Q Type) -> DatatypeVariant -> Cxt -> Name -> [TyVarBndrVis] -> [Type] -> [TH.ConstructorInfo] -> Q [Dec]
 deriveMetadataForDataDec f variant _cxt name _bndrs instTys cons = do
   let typ = appTysSubst f name instTys
   deriveMetadataForDataType variant name typ cons
@@ -512,7 +513,7 @@
 appsT :: Name -> [Q Type] -> Q Type
 appsT n = foldl' appT (conT n)
 
-appTyVars :: (Name -> Q Type) -> Name -> [TyVarBndrUnit] -> Q Type
+appTyVars :: (Name -> Q Type) -> Name -> [TyVarBndrVis] -> Q Type
 appTyVars f n bndrs =
   appsT n (map (f . tvName) bndrs)
 
@@ -549,7 +550,7 @@
                    -- The datatype context
                 -> Name
                    -- The data type's name
-                -> [TyVarBndrUnit]
+                -> [TyVarBndrVis]
                    -- The datatype's type variable binders, both implicit and explicit.
                    -- Examples:
                    --
@@ -582,7 +583,7 @@
                              , datatypeVariant   = variant
                              , datatypeCons      = cons }) f =
   checkForTypeData variant $
-  f variant ctxt name bndrs instTypes cons
+  f variant ctxt name (changeTVFlags bndrReq bndrs) instTypes cons
 
 checkForTypeData :: DatatypeVariant -> Q a -> Q a
 checkForTypeData variant q = do
