diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.2.2
+
+- Add instances for base and primitive's `ByteArray`s.
+
 ## 0.2.1.1
 
 - Support `base-4.16` (GHC-9.2)
diff --git a/src/Data/TreeDiff/Class.hs b/src/Data/TreeDiff/Class.hs
--- a/src/Data/TreeDiff/Class.hs
+++ b/src/Data/TreeDiff/Class.hs
@@ -106,8 +106,12 @@
 import Data.These (These (..))
 
 -- primitive
--- import qualified Data.Primitive as Prim
+import qualified Data.Primitive as Prim
 
+#if MIN_VERSION_base(4,17,0)
+import Data.Array.Byte (ByteArray (..))
+#endif
+
 -- $setup
 -- >>> :set -XDeriveGeneric
 -- >>> import Data.Foldable (traverse_)
@@ -593,4 +597,14 @@
 -- primitive
 -------------------------------------------------------------------------------
 
--- TODO: add instances
+-- | @since 0.2.2
+instance ToExpr Prim.ByteArray where
+    toExpr ba = App "Prim.byteArrayFromList" [toExpr (Prim.foldrByteArray (:) [] ba :: [Word8])]
+
+#if MIN_VERSION_base(4,17,0)
+-- | @since 0.2.2
+instance ToExpr ByteArray where
+    toExpr (ByteArray ba) = App "byteArrayFromList" [toExpr (Prim.foldrByteArray (:) [] (Prim.ByteArray ba) :: [Word8])]
+#endif
+
+-- TODO: add more instances
diff --git a/tree-diff.cabal b/tree-diff.cabal
--- a/tree-diff.cabal
+++ b/tree-diff.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               tree-diff
-version:            0.2.1.1
+version:            0.2.2
 synopsis:           Diffing of (expression) trees.
 category:           Data, Testing
 description:
@@ -54,8 +54,9 @@
      || ==8.6.5
      || ==8.8.4
      || ==8.10.4
-     || ==9.0.1
-     || ==9.2.1
+     || ==9.0.2
+     || ==9.2.4
+     || ==9.4.1
   , GHCJS ==8.4
 
 extra-source-files:
@@ -84,39 +85,39 @@
 
   -- GHC boot libraries
   build-depends:
-    , base        >=4.5      && <4.17
+    , base        >=4.5      && <4.18
     , bytestring  ^>=0.9.2.1 || ^>=0.10.0.2 || ^>=0.11.0.0
     , containers  ^>=0.4.2.1 || ^>=0.5.0.0 || ^>=0.6.0.1
     , deepseq     ^>=1.3.0.0 || ^>=1.4.0.0
     , parsec      ^>=3.1.13.0
     , pretty      ^>=1.1.1.0
     , text        ^>=1.2.3.0 || ^>=2.0
-    , time        ^>=1.4 || ^>=1.5.0.1 || ^>=1.6.0.1 || ^>=1.8.0.2 || ^>=1.9.3 || ^>=1.10 || ^>=1.11 || ^>=1.12
+    , time        >=1.4      && <1.5 || >=1.5.0.1 && <1.6 || >=1.6.0.1 && <1.7 || >=1.8.0.2 && <1.9 || >=1.9.3 && <1.13
 
   build-depends:
-    , aeson                 ^>=1.4.6.0 || ^>=1.5.6.0 || ^>=2.0.0.0
+    , aeson                 ^>=1.4.6.0 || ^>=1.5.6.0 || ^>=2.0.0.0 || ^>=2.1.0.0
     , ansi-terminal         >=0.10       && <0.12
     , ansi-wl-pprint        ^>=0.6.8.2
-    , base-compat           ^>=0.10.5 || ^>=0.11.0 || ^>=0.12
+    , base-compat           >=0.10.5     && <0.11 || >=0.11.0 && <0.13
     , bytestring-builder    ^>=0.10.8.2.0
     , hashable              ^>=1.2.7.0 || ^>=1.3.0.0 || ^>=1.4.0.1
     , parsers               ^>=0.12.10
     , primitive             ^>=0.7.1.0
     , QuickCheck            ^>=2.14.2
     , scientific            ^>=0.3.6.2
-    , semialign             >=1.1        && <1.3
+    , semialign             ^>=1.2.0.1
     , strict                ^>=0.4.0.1
     , tagged                ^>=0.8.6
     , these                 ^>=1.1.1.1
     , unordered-containers  ^>=0.2.8.0
     , uuid-types            ^>=1.0.3
-    , vector                ^>=0.12
+    , vector                ^>=0.12.0.0 || ^>=0.13.0.0
 
   if impl(ghc <7.5)
     build-depends: ghc-prim
 
   if !impl(ghc >=8.0)
-    build-depends: semigroups ^>=0.19.1 || ^>=0.20
+    build-depends: semigroups >=0.19.1 && <0.21
 
   if !impl(ghc >=7.8)
     build-depends: generic-deriving >=1.13.1 && <1.15
@@ -185,5 +186,5 @@
 
   -- extra dependencies
   build-depends:
-    , criterion  ^>=1.5.9.0
+    , criterion  ^>=1.6.0.0
     , Diff       ^>=0.4.0
