diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for recover-rtti
 
+## 0.6.1 -- 2026-05-05
+
+* Relax bounds on `QuickCheck` (Brandon Chinn, #55)
+
 ## 0.6.0 -- 2026-03-05
 
 THIS IS AN IMPORTANT BUGFIX RELEASE; PLEASE UPGRADE.
@@ -22,7 +26,7 @@
 We do make two exceptions to this rule:
 
 - For lists and list-like structures, we do check if the elements are (_all_) of
-  type `Char`, so that the overlapping instance `Show` for `[String]` (versus
+  type `Char`, so that the overlapping instance `Show` for `String` (versus
   `[a]`) can be used. Not doing this would result in significantly less useful
   output from `anythingToString`.
 - To distinguish `HashMap` from `HashSet` we look at the first element only. At
diff --git a/recover-rtti.cabal b/recover-rtti.cabal
--- a/recover-rtti.cabal
+++ b/recover-rtti.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               recover-rtti
-version:            0.6.0
+version:            0.6.1
 synopsis:           Recover run-time type information from the GHC heap
 description:        The main function in this package is 'classify', which looks
                     at the GHC heap to recover type information about arbitrary
@@ -22,8 +22,8 @@
                     GHC==9.4.8
                     GHC==9.6.7
                     GHC==9.8.4
-                    GHC==9.10.2
-                    GHC==9.12.2
+                    GHC==9.10.3
+                    GHC==9.12.4
                     GHC==9.14.1
 
 source-repository head
@@ -138,7 +138,7 @@
 
   build-depends:
       -- new dependencies
-    , QuickCheck       >= 2.15 && < 2.17
+    , QuickCheck       >= 2.15 && < 2.19
     , tasty            >= 1.5  && < 1.6
     , tasty-hunit      >= 0.10 && < 0.11
     , tasty-quickcheck >= 0.11 && < 0.12
diff --git a/tests/Test/RecoverRTTI/Classify.hs b/tests/Test/RecoverRTTI/Classify.hs
--- a/tests/Test/RecoverRTTI/Classify.hs
+++ b/tests/Test/RecoverRTTI/Classify.hs
@@ -47,13 +47,20 @@
     , testProperty "arbitrary" prop_arbitrary
     ]
 
+withNumTests :: QC.Testable prop => Int -> prop -> Property
+#if MIN_VERSION_QuickCheck(2,18,0)
+withNumTests = QC.withNumTests
+#else
+withNumTests = QC.withMaxSuccess
+#endif
+
 -- | Test using manually specified examples
 --
 -- For " normal " code it doesn't matter if something is generated or not,
 -- but their on-heap representation may be different, and this may effect the
 -- RTTI recovery.
 prop_constants :: Property
-prop_constants = QC.withMaxSuccess 1 $ QC.conjoin [
+prop_constants = withNumTests 1 $ QC.conjoin [
       -- Primitive types
 
       compareClassifier $ Value (CC_Prim C_Bool)     True
