diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 1.4.3.1
+
+*  Handle exceptions while writing a file in `addStaticContentExternal`
+
 ## 1.4.3
 
 * Switch to `Data.Yaml.Config`
diff --git a/Yesod/Default/Util.hs b/Yesod/Default/Util.hs
--- a/Yesod/Default/Util.hs
+++ b/Yesod/Default/Util.hs
@@ -18,6 +18,9 @@
 import Data.Text (Text, pack, unpack)
 import Yesod.Core -- purposely using complete import so that Haddock will see addStaticContent
 import Control.Monad (when, unless)
+import Control.Monad.Trans.Resource (runResourceT)
+import Data.Conduit (($$))
+import Data.Conduit.Binary (sourceLbs, sinkFileCautious)
 import System.Directory (doesFileExist, createDirectoryIfMissing)
 import Language.Haskell.TH.Syntax
 import Text.Lucius (luciusFile, luciusFileReload)
@@ -43,7 +46,8 @@
 addStaticContentExternal minify hash staticDir toRoute ext' _ content = do
     liftIO $ createDirectoryIfMissing True statictmp
     exists <- liftIO $ doesFileExist fn'
-    unless exists $ liftIO $ L.writeFile fn' content'
+    unless exists $
+        liftIO $ runResourceT $ sourceLbs content' $$ sinkFileCautious fn'
     return $ Just $ Right (toRoute ["tmp", pack fn], [])
   where
     fn, statictmp, fn' :: FilePath
diff --git a/yesod.cabal b/yesod.cabal
--- a/yesod.cabal
+++ b/yesod.cabal
@@ -1,5 +1,5 @@
 name:            yesod
-version:         1.4.3
+version:         1.4.3.1
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -40,7 +40,9 @@
                    , bytestring
                    , monad-logger
                    , fast-logger
-                   , conduit-extra
+                   , conduit
+                   , conduit-extra             >= 1.1.14
+                   , resourcet
                    , shakespeare
                    , streaming-commons
                    , wai-logger
