diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+# 1.0.8.1
+
+* Break on single elements and defer monoid concatenation until yield
+  [#111](https://github.com/snoyberg/mono-traversable/pull/111)
+
 # 1.0.8
 
 * Add lower bound on conduit 1.2.8 (make it easier to follow [the
diff --git a/Data/Conduit/Combinators.hs b/Data/Conduit/Combinators.hs
--- a/Data/Conduit/Combinators.hs
+++ b/Data/Conduit/Combinators.hs
@@ -2015,16 +2015,17 @@
 splitOnUnboundedEC f =
     start
   where
-    start = await >>= maybe (return ()) loop
+    start = await >>= maybe (return ()) (loop id)
 
-    loop t =
+    loop bldr t =
         if onull y
             then do
                 mt <- await
                 case mt of
-                    Nothing -> unless (onull t) $ yield t
-                    Just t' -> loop (t `mappend` t')
-            else yield x >> loop (Seq.drop 1 y)
+                    Nothing -> let finalChunk = mconcat $ bldr [t]
+                               in  unless (onull finalChunk) $ yield finalChunk
+                    Just t' -> loop (bldr . (t:)) t'
+            else yield (mconcat $ bldr [x]) >> loop id (Seq.drop 1 y)
       where
         (x, y) = Seq.break f t
 STREAMING(splitOnUnboundedE, splitOnUnboundedEC, splitOnUnboundedES, f)
diff --git a/conduit-combinators.cabal b/conduit-combinators.cabal
--- a/conduit-combinators.cabal
+++ b/conduit-combinators.cabal
@@ -1,5 +1,5 @@
 name:                conduit-combinators
-version:             1.0.8
+version:             1.0.8.1
 synopsis:            Commonly used conduit functions, for both chunked and unchunked data
 description:         Provides a replacement for Data.Conduit.List, as well as a convenient Conduit module.
 homepage:            https://github.com/snoyberg/mono-traversable
