diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,8 @@
+## 0.4.0.1 (March 2022)
+
+* Support text-icu == 0.8.* in tests
+* Support unicode-data == 0.3.*
+
 ## 0.4.0 (November 2021)
 
 * Bump `unicode-data` to `0.2`
diff --git a/test/NormalizationTest.hs b/test/NormalizationTest.hs
--- a/test/NormalizationTest.hs
+++ b/test/NormalizationTest.hs
@@ -12,6 +12,7 @@
 --
 
 import Control.Monad (when)
+import qualified Data.ByteString as B
 import Data.Char (chr, isSpace, ord, toUpper)
 #if MIN_VERSION_base(4,8,0)
 import Data.Function ((&))
@@ -20,6 +21,7 @@
 import Data.List.Split (splitOn)
 import Data.Text (Text)
 import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
 import Data.Text.Normalize (NormalizationMode(NFD, NFKD, NFC, NFKC), normalize)
 import Text.Printf (printf)
 
@@ -109,7 +111,7 @@
 
 testNormalize :: FilePath -> IO ()
 testNormalize file = do
-    contents <- readFile file
+    contents <- T.unpack . T.decodeUtf8 <$> B.readFile file
     let ls = lines contents                        -- split into lines
          & map (dropWhile isSpace)                 -- trim leading spaces
          & zip [1..]                               -- add numbering
diff --git a/test/Properties.hs b/test/Properties.hs
--- a/test/Properties.hs
+++ b/test/Properties.hs
@@ -15,7 +15,12 @@
 
 #ifdef HAS_ICU
 import Data.Text (pack)
-import qualified Data.Text.ICU as ICU
+
+#if MIN_VERSION_text_icu(0,8,0)
+import qualified Data.Text.ICU.Normalize2 as ICU
+#else
+import qualified Data.Text.ICU.Normalize as ICU
+#endif
 
 toICUMode :: NormalizationMode -> ICU.NormalizationMode
 toICUMode mode =
diff --git a/unicode-transforms.cabal b/unicode-transforms.cabal
--- a/unicode-transforms.cabal
+++ b/unicode-transforms.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 
 name:           unicode-transforms
-version:        0.4.0
+version:        0.4.0.1
 synopsis:       Unicode normalization
 description:    Fast Unicode 14.0.0 normalization in Haskell (NFC, NFKC, NFD, NFKD).
 category:       Data,Text,Unicode
@@ -82,8 +82,8 @@
   hs-source-dirs: .
   ghc-options: -Wall -fwarn-identities -fwarn-incomplete-record-updates -fwarn-incomplete-uni-patterns -fwarn-tabs
   build-depends:
-      base         >= 4.8 && < 5
-    , unicode-data >= 0.2 && < 0.3
+      base         >= 4.8 && < 4.17
+    , unicode-data >= 0.2 && < 0.4
     , bytestring   >= 0.9 && < 0.12
     , ghc-prim     >= 0.2 && < 0.9
 
@@ -108,7 +108,7 @@
   ghc-options: -Wall -fwarn-identities -fwarn-incomplete-record-updates -fwarn-incomplete-uni-patterns -fwarn-tabs
   build-depends:
       QuickCheck >=2.1 && <2.15
-    , base >=4.7 && <5
+    , base
     , deepseq >=1.1 && <1.5
     , text
     , unicode-transforms
@@ -129,10 +129,10 @@
       test
   ghc-options: -Wall -fwarn-identities -fwarn-incomplete-record-updates -fwarn-incomplete-uni-patterns -fwarn-tabs
   build-depends:
-      QuickCheck   >= 2.1   && < 2.15
-    , unicode-data >= 0.2   && < 0.3
-    , base         >= 4.7   && < 5
-    , deepseq      >= 1.1   && < 1.5
+      QuickCheck
+    , unicode-data
+    , base
+    , deepseq
     , hspec        >= 2.0   && < 3
     , text
     , unicode-transforms
@@ -145,7 +145,7 @@
   if flag(has-icu)
     cpp-options: -DHAS_ICU
     build-depends:
-        text-icu >=0.6.2.1
+        text-icu >=0.6.2.1 && <0.9
   default-language: Haskell2010
 
 test-suite ucd
@@ -155,8 +155,9 @@
       test
   ghc-options: -Wall -fwarn-identities -fwarn-incomplete-record-updates -fwarn-incomplete-uni-patterns -fwarn-tabs
   build-depends:
-      base >=4.7 && <5
-    , split >=0.1 && <0.3
+      base
+    , bytestring
+    , split >=0.2 && <0.3
     , text
     , unicode-transforms
   if flag(dev)
@@ -174,8 +175,8 @@
       benchmark
   ghc-options: -Wall -fwarn-identities -fwarn-incomplete-record-updates -fwarn-incomplete-uni-patterns -fwarn-tabs
   build-depends:
-      base >=4.7 && <5
-    , deepseq >=1.1.0 && <1.5
+      base
+    , deepseq
     , filepath >=1.0 && <2
     , path >=0.0.0 && <0.9
     , path-io >=0.1.0 && <1.7
@@ -195,7 +196,7 @@
   if flag(has-icu)
     cpp-options: -DBENCH_ICU
     build-depends:
-        text-icu >=0.6.2.1 && <0.8
+        text-icu
   if impl(ghc < 7.10)
     build-depends:
         path (<0.5.12 || >0.5.12)
@@ -208,9 +209,9 @@
   if flag(bench-show)
     buildable: True
     build-Depends:
-        base >= 4.8 && < 5
+        base
       , bench-show >= 0.3 && < 0.4
-      , split >= 0.2 && < 0.3
+      , split
       , transformers >= 0.4   && < 0.6
   else
     buildable: False
