diff --git a/hs-opentelemetry-instrumentation-yesod.cabal b/hs-opentelemetry-instrumentation-yesod.cabal
--- a/hs-opentelemetry-instrumentation-yesod.cabal
+++ b/hs-opentelemetry-instrumentation-yesod.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           hs-opentelemetry-instrumentation-yesod
-version:        0.0.1.2
+version:        0.0.1.3
 synopsis:       Yesod middleware for providing OpenTelemetry instrumentation
 description:    Please see the README on GitHub at <https://github.com/iand675/hs-opentelemetry/tree/main/instrumentation/yesod#readme>
 category:       OpenTelemetry, Web
diff --git a/src/OpenTelemetry/Instrumentation/Yesod.hs b/src/OpenTelemetry/Instrumentation/Yesod.hs
--- a/src/OpenTelemetry/Instrumentation/Yesod.hs
+++ b/src/OpenTelemetry/Instrumentation/Yesod.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE RecordWildCards #-}
@@ -70,7 +71,11 @@
     toIgnore = length $ filter isDynamic pieces
     isDynamic Dynamic {} = True
     isDynamic Static {} = False
+#if MIN_VERSION_template_haskell(2, 18, 0)
+    front' = front . ConP (mkName name) [] . ignored
+#else
     front' = front . ConP (mkName name) . ignored
+#endif
     newNames = names <> [name]
 
 goRes :: (Pat -> Pat) -> [String] -> Resource a -> Q Clause
@@ -99,7 +104,11 @@
     toText s = VarE 'T.pack `AppE` LitE (StringL s)
     isDynamic Dynamic {} = True
     isDynamic Static {} = False
+#if MIN_VERSION_template_haskell(2, 18, 0)
+    parentPieceWrapper (parentName, pieces) nestedPat = ConP (mkName parentName) [] $ mconcat
+#else
     parentPieceWrapper (parentName, pieces) nestedPat = ConP (mkName parentName) $ mconcat
+#endif
       [ replicate (length $ filter isDynamic pieces) WildP
       , [nestedPat]
       ]
