diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+5.6.2 [2024.03.19]
+------------------
+* Support building with `template-haskell-2.22.*` (GHC 9.10).
+
 5.6.1 [2023.03.13]
 ------------------
 * Provide instances for the `Swap` and `Assoc` type classes from the `assoc`
@@ -134,7 +138,7 @@
 * Add `Eq{1,2}`, `Ord{1,2}`, `Read{1,2}`, and `Show{1,2}` instances for data
   types in the `Data.Bifunctor.*` module namespace where possible. The
   operative phrase is "where possible" since many of these instances require
-  the use of `Eq2`/`Ord2`/`Read2`/`Show2`, which are not avaiable when
+  the use of `Eq2`/`Ord2`/`Read2`/`Show2`, which are not available when
   built against `transformers-0.4.*`.
 
 5.5.4 [2019.04.26]
diff --git a/bifunctors.cabal b/bifunctors.cabal
--- a/bifunctors.cabal
+++ b/bifunctors.cabal
@@ -1,7 +1,7 @@
 cabal-version: 1.24
 name:          bifunctors
 category:      Data, Functors
-version:       5.6.1
+version:       5.6.2
 license:       BSD3
 license-file:  LICENSE
 author:        Edward A. Kmett
@@ -20,9 +20,11 @@
              , GHC == 8.8.4
              , GHC == 8.10.7
              , GHC == 9.0.2
-             , GHC == 9.2.6
-             , GHC == 9.4.4
-             , GHC == 9.6.1
+             , GHC == 9.2.8
+             , GHC == 9.4.8
+             , GHC == 9.6.4
+             , GHC == 9.8.2
+             , GHC == 9.10.1
 extra-source-files:
   CHANGELOG.markdown
   README.markdown
@@ -45,9 +47,9 @@
     base                     >= 4.9     && < 5,
     assoc                    >= 1.1     && < 1.2,
     comonad                  >= 5.0.7   && < 6,
-    containers               >= 0.5.7.1 && < 0.7,
-    template-haskell         >= 2.11    && < 2.21,
-    th-abstraction           >= 0.4.2.0 && < 0.6,
+    containers               >= 0.5.7.1 && < 0.8,
+    template-haskell         >= 2.11    && < 2.23,
+    th-abstraction           >= 0.4.2.0 && < 0.8,
     transformers             >= 0.5     && < 0.7
 
   if !impl(ghc >= 8.2)
diff --git a/src/Data/Biapplicative.hs b/src/Data/Biapplicative.hs
--- a/src/Data/Biapplicative.hs
+++ b/src/Data/Biapplicative.hs
@@ -128,7 +128,7 @@
 -- versions for a few important types.
 {-# INLINABLE [1] traverseBia #-}
 
--- | Perform all the 'Biappicative' actions in a 'Traversable' container
+-- | Perform all the 'Biapplicative' actions in a 'Traversable' container
 -- and produce a container with all the results.
 --
 -- @
diff --git a/src/Data/Bifunctor/TH.hs b/src/Data/Bifunctor/TH.hs
--- a/src/Data/Bifunctor/TH.hs
+++ b/src/Data/Bifunctor/TH.hs
@@ -877,7 +877,7 @@
     className :: String
     className = nameBase $ biClassName biClass
 
--- | One of the last two type variables appeard in a contravariant position
+-- | One of the last two type variables appeared in a contravariant position
 -- when deriving Bifoldable or Bitraversable.
 contravarianceError :: Name -> Q a
 contravarianceError conName = fail
@@ -1200,8 +1200,7 @@
   --
   -- Without the underscore, that code would trigger -Wunused-matches warnings.
   n <- newName "_n"
-  body <- lam (VarE n)
-  return $ LamE [VarP n] body
+  lamE [varP n] $ lam (VarE n)
 
 -- Make a 'LamE' using two fresh variables.
 mkSimpleLam2 :: (Exp -> Exp -> Q Exp) -> Q Exp
@@ -1216,8 +1215,7 @@
   -- Without the underscore, that code would trigger -Wunused-matches warnings.
   n1 <- newName "_n1"
   n2 <- newName "n2"
-  body <- lam (VarE n1) (VarE n2)
-  return $ LamE [VarP n1, VarP n2] body
+  lamE [varP n1, varP n2] $ lam (VarE n1) (VarE n2)
 
 -- "Con a1 a2 a3 -> fold [x1 a1, x2 a2, x3 a3]"
 --
@@ -1258,7 +1256,7 @@
   varsNeeded <- newNameList "_arg" lengthInsides
   let pat = conPCompat conName (map VarP varsNeeded)
       -- Make sure to zip BEFORE invoking catMaybes. We want the variable
-      -- indicies in each expression to match up with the argument indices
+      -- indices in each expression to match up with the argument indices
       -- in conExpr (defined below).
       exps = catMaybes $ zipWith (\(m, i) v -> if m then Just (i `AppE` VarE v)
                                                     else Nothing)
