diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,8 +1,15 @@
+## 5.2.2.5 [2023-10-14]
+
+* Support GHC-9.6 and GHC-9.8
+* Support `th-abstraction-0.6.0.0` or later.
+
 ## 5.2.2.4 [2023-02-27]
-* Support `th-abstraction-0.3.0.0` or later.
 
+* Support `th-abstraction-0.5.0.0` or later.
+
 ## 5.2.2.3
 
+* Support GHC-9.4
 * Workaround for https://gitlab.haskell.org/ghc/ghc/-/issues/18320, which was
   preventing code calling makeBaseFunctor from being profiled.
 
diff --git a/recursion-schemes.cabal b/recursion-schemes.cabal
--- a/recursion-schemes.cabal
+++ b/recursion-schemes.cabal
@@ -1,6 +1,6 @@
 name:          recursion-schemes
 category:      Control, Recursion
-version:       5.2.2.4
+version:       5.2.2.5
 license:       BSD2
 cabal-version: 1.18
 license-file:  LICENSE
@@ -15,7 +15,7 @@
 synopsis:      Representing common recursion patterns as higher-order functions
 description:   Many recursive functions share the same structure, e.g. pattern-match on the input and, depending on the data constructor, either recur on a smaller input or terminate the recursion with the base case. Another one: start with a seed value, use it to produce the first element of an infinite list, and recur on a modified seed in order to produce the rest of the list. Such a structure is called a recursion scheme. Using higher-order functions to implement those recursion schemes makes your code clearer, faster, and safer. See README for details.
 
-tested-with:   GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, 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.1, GHC==9.2.1, GHC==9.4.1
+tested-with:   GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, 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.1, GHC==9.2.1, GHC==9.4.1, GHC==9.6.2, GHC==9.8.1
 
 build-type:    Simple
 extra-doc-files: docs/github-compression.png docs/flowchart.svg
@@ -83,9 +83,8 @@
 
   if flag(template-haskell)
     build-depends:
-      template-haskell >= 2.5.0.0 && < 2.20,
-      base-orphans     >= 0.5.4   && < 0.9,
-      th-abstraction   >= 0.4     && < 0.6
+      template-haskell >= 2.5.0.0 && < 2.22,
+      th-abstraction   >= 0.4     && < 0.7
     exposed-modules:
       Data.Functor.Foldable.TH
 
diff --git a/src/Data/Functor/Foldable/TH.hs b/src/Data/Functor/Foldable/TH.hs
--- a/src/Data/Functor/Foldable/TH.hs
+++ b/src/Data/Functor/Foldable/TH.hs
@@ -26,7 +26,6 @@
 import Language.Haskell.TH.Datatype.TyVarBndr
 import Language.Haskell.TH.Syntax (mkNameG_tc, mkNameG_v)
 import Data.Char (GeneralCategory (..), generalCategory)
-import Data.Orphans ()
 #ifndef CURRENT_PACKAGE_KEY
 import Data.Version (showVersion)
 import Paths_recursion_schemes (version)
@@ -36,6 +35,10 @@
 import Data.Functor.Foldable
 #endif
 
+#if !MIN_VERSION_template_haskell(2,21,0) && !MIN_VERSION_th_abstraction(0,6,0)
+type TyVarBndrVis = TyVarBndrUnit
+#endif
+
 -- $setup
 -- >>> :set -XTemplateHaskell -XTypeFamilies -XDeriveTraversable -XScopedTypeVariables
 -- >>> import Data.Functor.Foldable
@@ -246,14 +249,15 @@
 
     dataFamilyError = fail "makeBaseFunctor: Data families are currently not supported."
 
-    toTyVarBndr :: Type -> TyVarBndrUnit
+    toTyVarBndr :: Type -> TyVarBndrVis
     toTyVarBndr (VarT n)          = plainTV n
     toTyVarBndr (SigT (VarT n) k) = kindedTV n k
     toTyVarBndr _                 = error "toTyVarBndr"
 
 makePrimForDI' :: BaseRules
                -> Maybe (Name -> [Dec] -> Dec) -- ^ make instance
-               -> Bool -> Name -> [TyVarBndrUnit]
+               -> Bool -> Name
+               -> [TyVarBndrVis]
                -> [ConstructorInfo] -> DecsQ
 makePrimForDI' rules mkInstance' isNewtype tyName vars cons = do
     -- variable parameters
