diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 1.0.4
+
+- Add instances for `ByteArray` from `data-array-byte` or `base`
+- Support `primitive-0.8`
+- Support `tagged-0.8.7`
+
 ## 1.0.3
 
 - Add instance for `primitive`s `ByteArray`.
diff --git a/binary-instances.cabal b/binary-instances.cabal
--- a/binary-instances.cabal
+++ b/binary-instances.cabal
@@ -1,5 +1,5 @@
 name:               binary-instances
-version:            1.0.3
+version:            1.0.4
 synopsis:           Orphan instances for binary
 description:
   `binary-instances` defines orphan instances for types in some popular packages.
@@ -24,8 +24,8 @@
    || ==8.8.4
    || ==8.10.7
    || ==9.0.2
-   || ==9.2.4
-   || ==9.4.1
+   || ==9.2.7
+   || ==9.4.4
 
 extra-source-files: CHANGELOG.md
 
@@ -40,12 +40,12 @@
       aeson                    >=0.7.0.6   && <1.6 || >=2.0.0.0 && <2.2
     , base                     >=4.6.0.1   && <4.18
     , binary                   >=0.5.1.1   && <0.8.10
-    , binary-orphans           >=1.0.3     && <1.1
+    , binary-orphans           >=1.0.4     && <1.1
     , case-insensitive         >=1.2.0.4   && <1.2.2
     , hashable                 >=1.2.3.3   && <1.5
-    , primitive                >=0.7.2.0   && <0.8
+    , primitive                >=0.7.2.0   && <0.9
     , scientific               >=0.3.3.8   && <0.4
-    , tagged                   >=0.7.3     && <0.8.7
+    , tagged                   >=0.7.3     && <0.8.8
     , text                     >=1.2.0.6   && <1.3 || >=2.0 && <2.1
     , text-binary              >=0.2.1.1   && <0.3
     , time-compat              >=1.9.4     && <1.10
@@ -82,7 +82,7 @@
     , hashable
     , primitive
     , QuickCheck            >=2.13.1   && <2.15
-    , quickcheck-instances  >=0.3.28   && <0.4
+    , quickcheck-instances  >=0.3.29   && <0.4
     , scientific
     , tagged
     , tasty                 >=0.10.1.2 && <1.5
@@ -91,3 +91,6 @@
     , time-compat
     , unordered-containers
     , vector
+
+  if impl(ghc >=8.0 && <9.4)
+    build-depends: data-array-byte
diff --git a/src/Data/Binary/Instances/Primitive.hs b/src/Data/Binary/Instances/Primitive.hs
--- a/src/Data/Binary/Instances/Primitive.hs
+++ b/src/Data/Binary/Instances/Primitive.hs
@@ -4,6 +4,7 @@
 
 import Data.Binary.Orphans ()
 
+#if !MIN_VERSION_primitive(0,8,0)
 import Control.Monad (replicateM)
 import Data.Binary   (Binary, Get, Put, get, put)
 import Data.Word     (Word8)
@@ -25,3 +26,4 @@
     len <- get
     xs  <- replicateM len get
     return (Prim.byteArrayFromListN len (xs :: [Word8]))
+#endif
diff --git a/test/Tests.hs b/test/Tests.hs
--- a/test/Tests.hs
+++ b/test/Tests.hs
@@ -32,6 +32,10 @@
 import qualified Data.Time.Clock.TAI.Compat        as Time
 import qualified Data.Time.LocalTime.Compat        as Time
 
+#if MIN_VERSION_base(4,9,0)
+import qualified Data.Array.Byte as AB
+#endif
+
 main :: IO ()
 main = defaultMain tests
 
@@ -72,6 +76,9 @@
     , roundtripProperty (undefined :: Vector Char)
     , roundtripProperty (undefined :: VU.Vector Char)
     , roundtripProperty (undefined :: Prim.ByteArray)
+#if MIN_VERSION_base(4,9,0)
+    , roundtripProperty (undefined :: AB.ByteArray)
+#endif
     ]
 
 roundtrip :: (Eq a, Show a, Binary a) => a -> a -> Property
