diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+# 1.14.3 [2023.02.27]
+* Support `th-abstraction-0.5.*`.
+
 # 1.14.2 [2022.07.23]
 * Fix a bug in which `deriveAll1` could generate ill kinded code when using
   `kindSigOptions=False`, or when using GHC 8.0 or earlier.
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.14.2
+version:                1.14.3
 synopsis:               Generic programming library for generalised deriving.
 description:
 
@@ -129,8 +129,8 @@
 
   build-depends:        containers       >= 0.1   && < 0.7
                       , ghc-prim                     < 1
-                      , template-haskell >= 2.4   && < 2.20
-                      , th-abstraction   >= 0.4   && < 0.5
+                      , template-haskell >= 2.4   && < 2.21
+                      , th-abstraction   >= 0.4   && < 0.6
 
   default-language:     Haskell2010
   ghc-options:          -Wall
@@ -148,7 +148,7 @@
   build-depends:        base             >= 4.3  && < 5
                       , generic-deriving
                       , hspec            >= 2    && < 3
-                      , template-haskell >= 2.4  && < 2.20
+                      , template-haskell >= 2.4  && < 2.21
   build-tool-depends:   hspec-discover:hspec-discover
   hs-source-dirs:       tests
   default-language:     Haskell2010
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
@@ -26,7 +26,7 @@
 import qualified Data.Set as Set
 import           Data.Set (Set)
 
-import           Language.Haskell.TH.Datatype
+import           Language.Haskell.TH.Datatype as Datatype
 import           Language.Haskell.TH.Datatype.TyVarBndr
 import           Language.Haskell.TH.Lib
 import           Language.Haskell.TH.Ppr (pprint)
@@ -510,6 +510,15 @@
   . showString " to an unsaturated type family"
   $ ""
 
+-- | We cannot define implementations for @from(1)@ or @to(1)@ at the term level
+-- for @type data@ declarations, which only exist at the type level.
+typeDataError :: Name -> Q a
+typeDataError dataName = fail
+  . showString "Cannot derive instance for ‘"
+  . showString (nameBase dataName)
+  . showString "‘, which is a ‘type data‘ declaration"
+  $ ""
+
 -- | Cannot have a constructor argument of form (forall a1 ... an. <type>)
 -- when deriving Generic(1)
 rankNError :: Q a
@@ -534,14 +543,17 @@
                   , datatypeVariant   = variant
                   , datatypeCons      = cons
                   } <- reifyDatatype name
-     let variant_ = case variant of
-                      Datatype        -> Datatype_
-                      Newtype         -> Newtype_
-                      -- This isn't total, but the API requires that the data
-                      -- family instance have at least one constructor anyways,
-                      -- so this will always succeed.
-                      DataInstance    -> DataInstance_    $ head cons
-                      NewtypeInstance -> NewtypeInstance_ $ head cons
+     variant_ <- case variant of
+                   Datatype        -> return Datatype_
+                   Newtype         -> return Newtype_
+                   -- This isn't total, but the API requires that the data
+                   -- family instance have at least one constructor anyways,
+                   -- so this will always succeed.
+                   DataInstance    -> return $ DataInstance_    $ head cons
+                   NewtypeInstance -> return $ NewtypeInstance_ $ head cons
+#if MIN_VERSION_th_abstraction(0,5,0)
+                   Datatype.TypeData -> typeDataError parentName
+#endif
      checkDataContext parentName ctxt $ Right (parentName, tys, cons, variant_)
   where
     ns :: String
diff --git a/tests/T82Spec.hs b/tests/T82Spec.hs
--- a/tests/T82Spec.hs
+++ b/tests/T82Spec.hs
@@ -3,7 +3,11 @@
 {-# LANGUAGE TypeFamilies #-}
 
 #if __GLASGOW_HASKELL__ >= 800
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE PolyKinds #-}
+# if __GLASGOW_HASKELL__ < 806
 {-# LANGUAGE TypeInType #-}
+# endif
 #endif
 
 module T82Spec (main, spec) where
diff --git a/tests/TypeInTypeSpec.hs b/tests/TypeInTypeSpec.hs
--- a/tests/TypeInTypeSpec.hs
+++ b/tests/TypeInTypeSpec.hs
@@ -4,7 +4,11 @@
 {-# LANGUAGE TypeFamilies #-}
 
 #if __GLASGOW_HASKELL__ >= 800
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE PolyKinds #-}
+# if __GLASGOW_HASKELL__ < 806
 {-# LANGUAGE TypeInType #-}
+# endif
 #endif
 
 module TypeInTypeSpec (main, spec) where
