diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # ChangeLog
 
+## 0.2.3.1
+
+* Compatibility with GHC-8.8
+
 ## 0.2.3.0
 
 * Improved fix to the type variable behavior with GHC <= 7.10.  Uses
diff --git a/src/TH/ReifySimple.hs b/src/TH/ReifySimple.hs
--- a/src/TH/ReifySimple.hs
+++ b/src/TH/ReifySimple.hs
@@ -233,18 +233,24 @@
         Just $ DataFamily name (map tyVarBndrName tvs) (map go insts)
     _ -> Nothing
   where
-#if MIN_VERSION_template_haskell(2,11,0)
-    go (NewtypeInstD preds name params _kind con _deriving) =
+#if MIN_VERSION_template_haskell(2,15,0)
+    go (NewtypeInstD preds _ lhs _kind con _deriving)
+      | ConT name:params <- unAppsT lhs
+#elif MIN_VERSION_template_haskell(2,11,0)
+    go (NewtypeInstD preds name params _kind con _deriving)
 #else
-    go (NewtypeInstD preds name params       con _deriving) =
+    go (NewtypeInstD preds name params       con _deriving)
 #endif
-        DataInst name preds params (conToDataCons con)
-#if MIN_VERSION_template_haskell(2,11,0)
-    go (DataInstD preds name params _kind cons _deriving) =
+      = DataInst name preds params (conToDataCons con)
+#if MIN_VERSION_template_haskell(2,15,0)
+    go (DataInstD preds _ lhs _kind cons _deriving)
+      | ConT name:params <- unAppsT lhs
+#elif MIN_VERSION_template_haskell(2,11,0)
+    go (DataInstD preds name params _kind cons _deriving)
 #else
-    go (DataInstD preds name params       cons _deriving) =
+    go (DataInstD preds name params       cons _deriving)
 #endif
-        DataInst name preds params (concatMap conToDataCons cons)
+      = DataInst name preds params (concatMap conToDataCons cons)
     go info' = error $
         "Unexpected instance in FamilyI in infoToDataInsts:\n" ++ pprint info'
 
@@ -263,8 +269,23 @@
 #endif
     _ -> Nothing
   where
+#if MIN_VERSION_template_haskell(2,15,0)
+    goEqn _ (TySynEqn _ lhs ty)
+      | ConT name:params <- unAppsT lhs
+      = TypeInst name params ty
+      | otherwise
+      = error $ "Unexpected type family instance head: " ++ pprint lhs
+#else
     goEqn name (TySynEqn params ty) = TypeInst name params ty
+#endif
+
+#if MIN_VERSION_template_haskell(2,15,0)
+    go (TySynInstD (TySynEqn _ lhs ty))
+      | ConT name:params <- unAppsT lhs
+      = TypeInst name params ty
+#else
     go (TySynInstD name (TySynEqn params ty)) = TypeInst name params ty
+#endif
     go info' = error $
         "Unexpected instance in FamilyI in infoToTypeInsts:\n" ++ pprint info'
 
diff --git a/th-utilities.cabal b/th-utilities.cabal
--- a/th-utilities.cabal
+++ b/th-utilities.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 7886213bf6588ab61ba8582e6dc179a0d841c4c383fc63021383e7abd1a5dde0
+-- hash: bda1ef012fe2084207b76af87373ec5568167d027ce8878be222946dc4a82d5b
 
 name:           th-utilities
-version:        0.2.3.0
+version:        0.2.3.1
 synopsis:       Collection of useful functions for use with Template Haskell
 category:       Template Haskell
 homepage:       https://github.com/fpco/th-utilities#readme
