diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.3
+
+- Add instance for `primitive`s `ByteArray`.
+
 ## 1.0.2
 
 - Support `aeson-2.0.0.0`
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.2
+version:            1.0.3
 synopsis:           Orphan instances for binary
 description:
   `binary-instances` defines orphan instances for types in some popular packages.
@@ -22,8 +22,10 @@
    || ==8.4.4
    || ==8.6.5
    || ==8.8.4
-   || ==8.10.4
-   || ==9.0.1
+   || ==8.10.7
+   || ==9.0.2
+   || ==9.2.4
+   || ==9.4.1
 
 extra-source-files: CHANGELOG.md
 
@@ -35,19 +37,20 @@
   default-language: Haskell2010
   hs-source-dirs:   src
   build-depends:
-      aeson                    >=0.7.0.6   && <1.6 || >=2.0.0.0 && <2.1
-    , base                     >=4.6.0.1   && <4.16
-    , binary                   >=0.5.1.1   && <0.8.9
-    , binary-orphans           >=1.0.1     && <1.1
+      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
     , case-insensitive         >=1.2.0.4   && <1.2.2
-    , hashable                 >=1.2.3.3   && <1.4
+    , hashable                 >=1.2.3.3   && <1.5
+    , primitive                >=0.7.2.0   && <0.8
     , scientific               >=0.3.3.8   && <0.4
     , tagged                   >=0.7.3     && <0.8.7
-    , text                     >=1.2.0.6   && <1.3
+    , 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
     , unordered-containers     >=0.2.5.1   && <0.3
-    , vector                   >=0.10.12.3 && <0.13
+    , vector                   >=0.10.12.3 && <0.14
     , vector-binary-instances  >=0.2.1.0   && <0.3
 
   exposed-modules:
@@ -55,6 +58,7 @@
     Data.Binary.Instances.Aeson
     Data.Binary.Instances.CaseInsensitive
     Data.Binary.Instances.Hashable
+    Data.Binary.Instances.Primitive
     Data.Binary.Instances.Scientific
     Data.Binary.Instances.Tagged
     Data.Binary.Instances.Text
@@ -76,8 +80,9 @@
     , bytestring
     , case-insensitive
     , hashable
+    , primitive
     , QuickCheck            >=2.13.1   && <2.15
-    , quickcheck-instances  >=0.3.25   && <0.4
+    , quickcheck-instances  >=0.3.28   && <0.4
     , scientific
     , tagged
     , tasty                 >=0.10.1.2 && <1.5
diff --git a/src/Data/Binary/Instances.hs b/src/Data/Binary/Instances.hs
--- a/src/Data/Binary/Instances.hs
+++ b/src/Data/Binary/Instances.hs
@@ -28,6 +28,7 @@
 import Data.Binary.Instances.Aeson ()
 import Data.Binary.Instances.CaseInsensitive ()
 import Data.Binary.Instances.Hashable ()
+import Data.Binary.Instances.Primitive ()
 import Data.Binary.Instances.Scientific ()
 import Data.Binary.Instances.Tagged ()
 import Data.Binary.Instances.Text ()
diff --git a/src/Data/Binary/Instances/Primitive.hs b/src/Data/Binary/Instances/Primitive.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Binary/Instances/Primitive.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE CPP #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+module Data.Binary.Instances.Primitive where
+
+import Data.Binary.Orphans ()
+
+import Control.Monad (replicateM)
+import Data.Binary   (Binary, Get, Put, get, put)
+import Data.Word     (Word8)
+
+import qualified Data.Primitive as Prim
+
+-- | @since 1.0.3
+instance Binary Prim.ByteArray where
+  put ba = put maxI >> go 0
+    where
+      maxI :: Int
+      maxI = Prim.sizeofByteArray ba
+
+      go :: Int -> Put
+      go i | i < maxI  = put (Prim.indexByteArray ba i :: Word8) >> go (i + 1)
+           | otherwise = return ()
+
+  get = do
+    len <- get
+    xs  <- replicateM len get
+    return (Prim.byteArrayFromListN len (xs :: [Word8]))
diff --git a/test/Tests.hs b/test/Tests.hs
--- a/test/Tests.hs
+++ b/test/Tests.hs
@@ -23,6 +23,7 @@
 
 import qualified Data.Vector.Unboxed as VU
 
+import qualified Data.Primitive                    as Prim
 import qualified Data.Time.Calendar.Compat         as Time
 import qualified Data.Time.Calendar.Month.Compat   as Time
 import qualified Data.Time.Calendar.Quarter.Compat as Time
@@ -70,6 +71,7 @@
     -- vector
     , roundtripProperty (undefined :: Vector Char)
     , roundtripProperty (undefined :: VU.Vector Char)
+    , roundtripProperty (undefined :: Prim.ByteArray)
     ]
 
 roundtrip :: (Eq a, Show a, Binary a) => a -> a -> Property
