diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for streaming-conduit
 
+## 0.1.3.0 -- 2023-05-13
+
+* Support `streaming-bytestring-0.3`
+
 ## 0.1.2.2 -- 2018-02-11
 
 * Add support for conduit-1.3.0.
diff --git a/src/Streaming/Conduit.hs b/src/Streaming/Conduit.hs
--- a/src/Streaming/Conduit.hs
+++ b/src/Streaming/Conduit.hs
@@ -33,15 +33,17 @@
     -- * Converting from Conduits
   , toStream
   , asStream
+  , sinkStream
     -- ** ByteString support
   , toBStream
+  , sinkBStream
   ) where
 
 import           Control.Monad             (join, void)
 import           Control.Monad.Trans.Class (lift)
 import           Data.ByteString           (ByteString)
 import qualified Data.ByteString.Streaming as B
-import           Data.Conduit              (Conduit, ConduitM, Producer, Source,
+import           Data.Conduit              (Conduit, ConduitM, Producer, Source, Consumer,
                                             await, runConduit, transPipe, (.|))
 import qualified Data.Conduit.List         as CL
 import           Streaming                 (Of, Stream)
@@ -70,7 +72,7 @@
 
 -- | A more specialised variant of 'fromBStream'.
 fromBStreamProducer :: (Monad m) => B.ByteString m r -> Producer m ByteString
-fromBStreamProducer = CL.unfoldM B.unconsChunk . void
+fromBStreamProducer = CL.unfoldEitherM B.unconsChunk . void
 
 -- | Convert a 'Producer' to a 'Stream'.  Subject to fusion.
 --
@@ -89,6 +91,16 @@
 --   fusion.
 asStream :: (Monad m) => Conduit i m o -> Stream (Of i) m () -> Stream (Of o) m ()
 asStream cnd stream = toStream (fromStream stream .| cnd)
+
+-- | Treat a 'Consumer' as a function which consumes a 'Stream'.
+--   Subject to fusion.
+sinkStream :: (Monad m) => Consumer i m r -> Stream (Of i) m () -> m r
+sinkStream cns stream = runConduit (fromStream stream .| cns)
+
+-- | Treat a 'Consumer' as a function which consumes a 'B.ByteString'.
+--   Subject to fusion.
+sinkBStream :: (Monad m) => Consumer ByteString m r -> B.ByteString m () -> m r
+sinkBStream cns stream = runConduit (fromBStream stream .| cns)
 
 -- | Treat a function between 'Stream's as a 'Conduit'.  May be
 --   subject to fusion.
diff --git a/streaming-conduit.cabal b/streaming-conduit.cabal
--- a/streaming-conduit.cabal
+++ b/streaming-conduit.cabal
@@ -1,5 +1,5 @@
 name:                streaming-conduit
-version:             0.1.2.2
+version:             0.1.3.0
 synopsis:            Bidirectional support between the streaming and conduit libraries
 description:         Allow interoperability between the streaming and conduit data streaming ecosystems.
 license:             MIT
@@ -23,7 +23,7 @@
                      , bytestring
                      , conduit >= 1.2.11 && < 1.4
                      , streaming >= 0.1.3.0 && < 0.3
-                     , streaming-bytestring == 0.1.*
+                     , streaming-bytestring >= 0.3 && < 0.4
                      , transformers >= 0.2
   hs-source-dirs:      src
   default-language:    Haskell2010
diff --git a/test/conversions.hs b/test/conversions.hs
--- a/test/conversions.hs
+++ b/test/conversions.hs
@@ -40,6 +40,8 @@
       testPipeline (\xs f -> streamList . S.map f $ toStream (C.sourceList xs))
     prop "asStream" $
       testPipeline (\xs f -> streamList . asStream (C.map f) $ S.each xs)
+    prop "sinkStream" $
+      testPipeline (\xs f -> runIdentity $ sinkStream C.consume $ S.map f $ S.each xs)
 
 conduitList :: C.Source Identity a -> [a]
 conduitList = runIdentity . C.sourceToList
