diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,9 @@
 # Changelog for [`os-string` package](http://hackage.haskell.org/package/os-string)
 
+## 2.0.2.1 *Apr 2024*
+
+* Fix compabitiliby with GHC 9.10
+
 ## 2.0.2 *Dec 2023*
 
 * Implement coercionToPlatformTypes, fixes #4
diff --git a/os-string.cabal b/os-string.cabal
--- a/os-string.cabal
+++ b/os-string.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               os-string
-version:            2.0.2
+version:            2.0.2.1
 
 -- NOTE: Don't forget to update ./changelog.md
 license:            BSD-3-Clause
@@ -63,7 +63,7 @@
 
   default-language: Haskell2010
   build-depends:
-    , base              >=4.12.0.0      && <4.20
+    , base              >=4.12.0.0      && <4.21
     , bytestring        >=0.11.3.0
     , deepseq
     , exceptions
@@ -89,7 +89,7 @@
     , base
     , bytestring  >=0.11.3.0
     , os-string
-    , QuickCheck  >=2.7      && <2.15
+    , QuickCheck  >=2.7      && <2.16
 
 test-suite encoding-tests
   default-language: Haskell2010
@@ -107,7 +107,7 @@
     , bytestring  >=0.11.3.0
     , deepseq
     , os-string
-    , QuickCheck  >=2.7      && <2.15
+    , QuickCheck  >=2.7      && <2.16
     , quickcheck-classes-base ^>=0.6.2
 
 benchmark bench
diff --git a/tests/encoding/EncodingSpec.hs b/tests/encoding/EncodingSpec.hs
--- a/tests/encoding/EncodingSpec.hs
+++ b/tests/encoding/EncodingSpec.hs
@@ -39,7 +39,9 @@
       let str = [toEnum 55296, toEnum 55297]
           encoded = encodeWithTE utf16le str
           decoded = decodeWithTE utf16le =<< encoded
-#if __GLASGOW_HASKELL__ >= 904
+#if __GLASGOW_HASKELL__ >= 910
+      in decoded === Left (EncodingError ("recoverEncode: invalid argument (cannot encode character " <> show (head str) <> ")\n") Nothing))
+#elif __GLASGOW_HASKELL__ >= 904
       in decoded === Left (EncodingError ("recoverEncode: invalid argument (cannot encode character " <> show (head str) <> ")") Nothing))
 #else
       in decoded === Left (EncodingError "recoverEncode: invalid argument (invalid character)" Nothing))
@@ -69,7 +71,9 @@
       let str = [toEnum 0xDFF0, toEnum 0xDFF2]
           encoded = encodeWithTE (mkUTF8 RoundtripFailure) str
           decoded = decodeWithTE (mkUTF8 RoundtripFailure) =<< encoded
-#if __GLASGOW_HASKELL__ >= 904
+#if __GLASGOW_HASKELL__ >= 910
+      in decoded === Left (EncodingError ("recoverEncode: invalid argument (cannot encode character " <> show (head str) <> ")\n") Nothing))
+#elif __GLASGOW_HASKELL__ >= 904
       in decoded === Left (EncodingError ("recoverEncode: invalid argument (cannot encode character " <> show (head str) <> ")") Nothing))
 #else
       in decoded === Left (EncodingError "recoverEncode: invalid argument (invalid character)" Nothing))
