diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+# 1.12.4 [2019.04.26]
+* Support `th-abstraction-0.3.0.0` or later.
+
 # 1.12.3 [2019.02.09]
 * Support `template-haskell-2.15`.
 * Add a `gshowList` method to `GShow`, which lets us avoid the need for
diff --git a/generic-deriving.cabal b/generic-deriving.cabal
--- a/generic-deriving.cabal
+++ b/generic-deriving.cabal
@@ -1,5 +1,5 @@
 name:                   generic-deriving
-version:                1.12.3
+version:                1.12.4
 synopsis:               Generic programming library for generalised deriving.
 description:
 
@@ -34,7 +34,7 @@
                       , GHC == 8.0.2
                       , GHC == 8.2.2
                       , GHC == 8.4.4
-                      , GHC == 8.6.3
+                      , GHC == 8.6.4
 extra-source-files:     CHANGELOG.md
                       , README.md
 
@@ -80,7 +80,7 @@
   build-depends:        containers       >= 0.1   && < 0.7
                       , ghc-prim                     < 1
                       , template-haskell >= 2.4   && < 2.15
-                      , th-abstraction   >= 0.2.9 && < 0.3
+                      , th-abstraction   >= 0.2.9 && < 0.4
 
   default-language:     Haskell2010
   ghc-options:          -Wall
diff --git a/src/Generics/Deriving/TH.hs b/src/Generics/Deriving/TH.hs
--- a/src/Generics/Deriving/TH.hs
+++ b/src/Generics/Deriving/TH.hs
@@ -345,7 +345,11 @@
   let origSigTy = if useKindSigs
                      then SigT origTy origKind
                      else origTy
-  tyIns <- tySynInstDCompat repName [return origSigTy] (return tyInsRHS)
+  tyIns <- tySynInstDCompat repName
+#if MIN_VERSION_th_abstraction(0,3,0)
+                            Nothing
+#endif
+                            [return origSigTy] (return tyInsRHS)
   let ecOptions = emptyCaseOptions opts
       mkBody maker = [clause [] (normalB $
         mkCaseExp gClass ecOptions name instTys cons maker) []]
diff --git a/src/Generics/Deriving/TH/Internal.hs b/src/Generics/Deriving/TH/Internal.hs
--- a/src/Generics/Deriving/TH/Internal.hs
+++ b/src/Generics/Deriving/TH/Internal.hs
@@ -459,11 +459,15 @@
 reifyDataInfo name = do
   return $ Left $ ns ++ " Could not reify " ++ nameBase name
  `recover`
-  do DatatypeInfo { datatypeContext = ctxt
-                  , datatypeName    = parentName
-                  , datatypeVars    = tys
-                  , datatypeVariant = variant
-                  , datatypeCons    = cons
+  do DatatypeInfo { datatypeContext   = ctxt
+                  , datatypeName      = parentName
+#if MIN_VERSION_th_abstraction(0,3,0)
+                  , datatypeInstTypes = tys
+#else
+                  , datatypeVars      = tys
+#endif
+                  , datatypeVariant   = variant
+                  , datatypeCons      = cons
                   } <- reifyDatatype name
      let variant_ = case variant of
                       Datatype        -> Datatype_
