diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,13 @@
 # Revision history for nothunks
 
-## 0.1.2
+## 0.1.3 -- 2021-06-28
+
+* Fix tests on ghc-9.0.1
+  Joe Hermaszewski <git@monoid.al>
+* Make bytestring, text and vector optional dependencies
+  Bodigrim <andrew.lelechenko@gmail.com>
+
+## 0.1.2 -- 2020-12-03
 
 * Add IORef, MVar and TVar instances.
   Oleg Grenrus <oleg.grenrus@iki.fi>
diff --git a/nothunks.cabal b/nothunks.cabal
--- a/nothunks.cabal
+++ b/nothunks.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               nothunks
-version:            0.1.2
+version:            0.1.3
 synopsis:           Examine values for unexpected thunks
 description:        Long lived application data typically should not contain
                     any thunks. This library can be used to examine values for
@@ -12,7 +12,7 @@
 bug-reports:        https://github.com/input-output-hk/nothunks
 author:             IOHK
 maintainer:         operations@iohk.io
-copyright:          2018-2020 IOHK
+copyright:          2018-2021 IOHK
 category:           Development
 extra-source-files: CHANGELOG.md
 
@@ -20,20 +20,36 @@
   type:     git
   location: https://github.com/input-output-hk/nothunks
 
+flag bytestring
+  description: Provide instances for bytestring
+  default: True
+
+flag text
+  description: Provide instances for text
+  default: True
+
+flag vector
+  description: Provide instances for vector
+  default: True
+
 library
     exposed-modules:  NoThunks.Class
 
     build-depends:    base       >= 4.12 && < 5
-                    , bytestring >= 0.10 && < 0.11
                     , containers >= 0.5  && < 0.7
                     , stm        >= 2.5  && < 2.6
-                    , text       >= 1.2  && < 1.3
-                    , time       >= 1.5  && < 1.11
-                    , vector     >= 0.12 && < 0.13
+                    , time       >= 1.5  && < 1.13
 
                       -- Whatever is bundled with ghc
                     , ghc-heap
 
+    if flag(bytestring)
+      build-depends:  bytestring >= 0.10 && < 0.12
+    if flag(text)
+      build-depends:  text       >= 1.2  && < 1.3
+    if flag(vector)
+      build-depends:  vector     >= 0.12 && < 0.13
+
     hs-source-dirs:   src
     default-language: Haskell2010
     ghc-options:      -Wall
@@ -58,8 +74,8 @@
                       -- Additional dependencies
                     , hedgehog       >= 1.0 && < 1.1
                     , random         >= 1.1 && < 1.3
-                    , tasty          >= 1.3 && < 1.4
-                    , tasty-hedgehog >= 1.0 && < 1.1
+                    , tasty          >= 1.3 && < 1.5
+                    , tasty-hedgehog >= 1.0 && < 1.2
 
     hs-source-dirs:   test
     default-language: Haskell2010
diff --git a/src/NoThunks/Class.hs b/src/NoThunks/Class.hs
--- a/src/NoThunks/Class.hs
+++ b/src/NoThunks/Class.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE BangPatterns          #-}
+{-# LANGUAGE CPP                   #-}
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE DefaultSignatures     #-}
 {-# LANGUAGE DerivingVia           #-}
@@ -45,7 +46,6 @@
 
 -- For instances
 
-import Data.ByteString.Short (ShortByteString)
 import Data.Foldable (toList)
 import Data.Int
 import Data.IntMap (IntMap)
@@ -62,18 +62,28 @@
 
 import qualified Control.Concurrent.MVar       as MVar
 import qualified Control.Concurrent.STM.TVar   as TVar
-import qualified Data.ByteString               as BS.Strict
-import qualified Data.ByteString.Lazy          as BS.Lazy
-import qualified Data.ByteString.Lazy.Internal as BS.Lazy.Internal
 import qualified Data.IntMap                   as IntMap
 import qualified Data.IORef                    as IORef
 import qualified Data.Map                      as Map
 import qualified Data.Set                      as Set
+
+#ifdef MIN_VERSION_bytestring
+import Data.ByteString.Short (ShortByteString)
+import qualified Data.ByteString               as BS.Strict
+import qualified Data.ByteString.Lazy          as BS.Lazy
+import qualified Data.ByteString.Lazy.Internal as BS.Lazy.Internal
+#endif
+
+#ifdef MIN_VERSION_text
 import qualified Data.Text                     as Text.Strict
 import qualified Data.Text.Internal.Lazy       as Text.Lazy.Internal
 import qualified Data.Text.Lazy                as Text.Lazy
+#endif
+
+#ifdef MIN_VERSION_vector
 import qualified Data.Vector                   as Vector.Boxed
 import qualified Data.Vector.Unboxed           as Vector.Unboxed
+#endif
 
 {-------------------------------------------------------------------------------
   Check a value for unexpected thunks
@@ -509,6 +519,8 @@
   ByteString
 -------------------------------------------------------------------------------}
 
+#ifdef MIN_VERSION_bytestring
+
 -- | Instance for string bytestrings
 --
 -- Strict bytestrings /shouldn't/ contain any thunks, but could, due to
@@ -541,12 +553,16 @@
             , noThunks ctxt bs'
             ]
 
+#endif
+
 {-------------------------------------------------------------------------------
   Instances for text types
 
   For consistency, we follow the same pattern as for @ByteString@.
 -------------------------------------------------------------------------------}
 
+#ifdef MIN_VERSION_text
+
 deriving via OnlyCheckWhnfNamed "Strict.Text" Text.Strict.Text
          instance NoThunks Text.Strict.Text
 
@@ -560,6 +576,8 @@
             , noThunks ctxt bs'
             ]
 
+#endif
+
 {-------------------------------------------------------------------------------
   Tuples
 -------------------------------------------------------------------------------}
@@ -642,6 +660,8 @@
   Vector
 -------------------------------------------------------------------------------}
 
+#ifdef MIN_VERSION_vector
+
 instance NoThunks a => NoThunks (Vector.Boxed.Vector a) where
   showTypeOf _   = "Boxed.Vector"
   wNoThunks ctxt = noThunksInValues ctxt . Vector.Boxed.toList
@@ -654,6 +674,8 @@
 instance NoThunks (Vector.Unboxed.Vector a) where
   showTypeOf _  = "Unboxed.Vector"
   wNoThunks _ _ = return Nothing
+
+#endif
 
 {-------------------------------------------------------------------------------
   Function types
diff --git a/test/Test/NoThunks/Class.hs b/test/Test/NoThunks/Class.hs
--- a/test/Test/NoThunks/Class.hs
+++ b/test/Test/NoThunks/Class.hs
@@ -577,7 +577,7 @@
 
     checkRefNF :: Property
     checkRefNF = checkNFClass True $ \k -> do
-        ! ref <- liftIO (newRef x :: IO (ref Int))
+        !ref <- liftIO (newRef x :: IO (ref Int))
         k ref
       where
         x :: Int
@@ -593,7 +593,7 @@
 
     checkRefNFPure :: Property
     checkRefNFPure = unsafeCheckNF True $ \k -> do
-        ! ref <- liftIO (newRef x :: IO (ref Int))
+        !ref <- liftIO (newRef x :: IO (ref Int))
         k ref
       where
         x :: Int
@@ -609,7 +609,7 @@
 
     checkRefNFAtomically :: Property
     checkRefNFAtomically = unsafeCheckNFAtomically True $ \k -> do
-        ! ref <- liftIO (newRef x :: IO (ref Int))
+        !ref <- liftIO (newRef x :: IO (ref Int))
         k ref
       where
         x :: Int
