diff --git a/lib/Shower/Trace.hs b/lib/Shower/Trace.hs
new file mode 100644
--- /dev/null
+++ b/lib/Shower/Trace.hs
@@ -0,0 +1,23 @@
+-- | Wrappers for Debug.Trace functions with a nicer layout.
+
+module Shower.Trace
+  ( traceShower,
+    traceShowerId,
+    traceShowerWith,
+    traceShowerM
+  ) where
+
+import Debug.Trace
+import Shower (shower)
+
+traceShower :: Show a => a -> b -> b
+traceShower = trace . shower
+
+traceShowerId :: Show a => a -> a
+traceShowerId x = trace (shower x) x
+
+traceShowerWith :: Show b => (a -> b) -> a -> a
+traceShowerWith f x = trace (shower $ f x) x
+
+traceShowerM :: (Show a, Monad m) => a -> m ()
+traceShowerM = traceM . shower
diff --git a/shower.cabal b/shower.cabal
--- a/shower.cabal
+++ b/shower.cabal
@@ -1,5 +1,5 @@
 name: shower
-version: 0.2.0.3
+version: 0.2.0.4
 synopsis: Clean up the formatting of 'show' output
 -- description:
 license: BSD3
@@ -24,11 +24,12 @@
 library
   exposed-modules:
     Shower
+    Shower.Trace
     Shower.Printer
     Shower.Parser
     Shower.Class
   build-depends:
-    base >=4.10 && <4.18,
+    base >=4.10 && <4.22,
     megaparsec,
     pretty
   hs-source-dirs: lib
@@ -38,7 +39,7 @@
 executable shower
   main-is: Main.hs
   build-depends:
-    base >=4.10 && <4.18,
+    base,
     shower
   hs-source-dirs: exe
   default-language: Haskell2010
@@ -50,7 +51,7 @@
     Property
   type: exitcode-stdio-1.0
   build-depends:
-    base >=4.10 && <4.18,
+    base,
     aeson,
     tasty,
     tasty-golden,
