diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,11 @@
 
 # Releases
 
+## Hakyll 4.12.3.0 (2018-05-29)
+
+- Bump tasty to 1.1
+- Bump fsnotify to 0.3
+
 ## Hakyll 4.12.2.0
 
 - Bump pandoc to 2.2
diff --git a/hakyll.cabal b/hakyll.cabal
--- a/hakyll.cabal
+++ b/hakyll.cabal
@@ -1,5 +1,5 @@
 Name:    hakyll
-Version: 4.12.2.0
+Version: 4.12.3.0
 
 Synopsis: A static website compiler library
 Description:
@@ -197,7 +197,7 @@
       warp            >= 3.2   && < 3.3,
       wai-app-static  >= 3.1   && < 3.2,
       http-types      >= 0.9   && < 0.13,
-      fsnotify        >= 0.2   && < 0.3
+      fsnotify        >= 0.2   && < 0.4
     Cpp-options:
       -DPREVIEW_SERVER
     Other-modules:
@@ -206,7 +206,7 @@
 
   If flag(watchServer)
     Build-depends:
-      fsnotify        >= 0.2   && < 0.3
+      fsnotify        >= 0.2   && < 0.4
     Cpp-options:
       -DWATCH_SERVER
     Other-modules:
@@ -260,7 +260,7 @@
   Build-Depends:
     hakyll,
     QuickCheck                 >= 2.8  && < 2.12,
-    tasty                      >= 0.11 && < 1.1,
+    tasty                      >= 0.11 && < 1.2,
     tasty-hunit                >= 0.9  && < 0.11,
     tasty-quickcheck           >= 0.8  && < 0.11,
     -- Copy pasted from hakyll dependencies:
diff --git a/lib/Hakyll/Preview/Poll.hs b/lib/Hakyll/Preview/Poll.hs
--- a/lib/Hakyll/Preview/Poll.hs
+++ b/lib/Hakyll/Preview/Poll.hs
@@ -14,8 +14,7 @@
 import           Control.Monad                  (forever, void, when)
 import           System.Directory               (canonicalizePath)
 import           System.FilePath                (pathSeparators)
-import           System.FSNotify                (Event (..), startManager,
-                                                 watchTree)
+import qualified System.FSNotify                as FSNotify
 
 #ifdef mingw32_HOST_OS
 import           Control.Concurrent             (threadDelay)
@@ -44,12 +43,12 @@
     shouldBuild     <- newEmptyMVar
     pattern         <- update
     fullProviderDir <- canonicalizePath $ providerDirectory conf
-    manager         <- startManager
+    manager         <- FSNotify.startManager
 
     let allowed event = do
             -- Absolute path of the changed file. This must be inside provider
             -- dir, since that's the only dir we're watching.
-            let path       = eventPath event
+            let path       = FSNotify.eventPath event
                 relative   = dropWhile (`elem` pathSeparators) $
                     drop (length fullProviderDir) path
                 identifier = fromFilePath relative
@@ -69,7 +68,7 @@
 
     -- Send an event whenever something occurs so that the thread described
     -- above will do a build.
-    void $ watchTree manager providerDir (not . isRemove) $ \event -> do
+    void $ FSNotify.watchTree manager providerDir (not . isRemove) $ \event -> do
         allowed' <- allowed event
         when allowed' $ void $ tryPutMVar shouldBuild event
   where
@@ -77,7 +76,7 @@
     update' _     _        = void update
 #else
     update' event provider = do
-        let path = provider </> eventPath event
+        let path = provider </> FSNotify.eventPath event
         -- on windows, a 'Modified' event is also sent on file deletion
         fileExists <- doesFileExist path
 
@@ -105,15 +104,6 @@
 
 
 --------------------------------------------------------------------------------
-eventPath :: Event -> FilePath
-eventPath evt = evtPath evt
-  where
-    evtPath (Added p _)    = p
-    evtPath (Modified p _) = p
-    evtPath (Removed p _)  = p
-
-
---------------------------------------------------------------------------------
-isRemove :: Event -> Bool
-isRemove (Removed _ _) = True
-isRemove _             = False
+isRemove :: FSNotify.Event -> Bool
+isRemove (FSNotify.Removed {}) = True
+isRemove _                     = False
