diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.8.2.0
+=======
+* Add `MonadFail` instances for `base` >= 4.9.0.0 [Koray Al](https://github.com/korayal)
+
 0.8.1.0
 =======
 * Export `logLoc`. Credit to [Brian McKenna](https://github.com/puffnfresh)
diff --git a/katip.cabal b/katip.cabal
--- a/katip.cabal
+++ b/katip.cabal
@@ -1,5 +1,5 @@
 name:                katip
-version:             0.8.1.0
+version:             0.8.2.0
 synopsis:            A structured logging framework.
 description:
   Katip is a structured logging framework. See README.md for more details.
diff --git a/src/Katip.hs b/src/Katip.hs
--- a/src/Katip.hs
+++ b/src/Katip.hs
@@ -44,7 +44,7 @@
 --
 -- newtype App m a = App {
 --   unApp :: ReaderT Config m a
--- } deriving (Functor, Applicative, Monad) -- more instances as needed
+-- } deriving (Functor, Applicative, Monad, MonadIO, MonadReader Config) -- these are necessary
 --
 --
 -- -- These instances get even easier with lenses!
diff --git a/src/Katip/Core.hs b/src/Katip/Core.hs
--- a/src/Katip/Core.hs
+++ b/src/Katip/Core.hs
@@ -31,6 +31,9 @@
 import           Control.Exception.Safe
 import           Control.Monad                     (unless, void, when)
 import           Control.Monad.Base
+#if MIN_VERSION_base(4, 9, 0)
+import qualified Control.Monad.Fail                as MF
+#endif
 import           Control.Monad.IO.Class
 import           Control.Monad.IO.Unlift
 import           Control.Monad.Trans.Class
@@ -901,6 +904,12 @@
   askUnliftIO = KatipT $
                 withUnliftIO $ \u ->
                 pure (UnliftIO (unliftIO u . unKatipT))
+
+#if MIN_VERSION_base(4, 9, 0)
+instance MF.MonadFail m => MF.MonadFail (KatipT m) where
+    fail msg = lift (MF.fail msg)
+    {-# INLINE fail #-}
+#endif
 
 -------------------------------------------------------------------------------
 -- | Execute 'KatipT' on a log env.
diff --git a/src/Katip/Monadic.hs b/src/Katip/Monadic.hs
--- a/src/Katip/Monadic.hs
+++ b/src/Katip/Monadic.hs
@@ -44,6 +44,9 @@
 import           Control.Exception.Safe
 import           Control.Monad.Base
 import           Control.Monad.Error.Class
+#if MIN_VERSION_base(4, 9, 0)
+import qualified Control.Monad.Fail                as MF
+#endif
 import           Control.Monad.IO.Class
 import           Control.Monad.IO.Unlift
 import           Control.Monad.Reader
@@ -396,6 +399,11 @@
                 withUnliftIO $ \u ->
                 pure (UnliftIO (unliftIO u . unKatipContextT))
 
+#if MIN_VERSION_base(4, 9, 0)
+instance MF.MonadFail m => MF.MonadFail (KatipContextT m) where
+    fail msg = lift (MF.fail msg)
+    {-# INLINE fail #-}
+#endif
 
 -------------------------------------------------------------------------------
 runKatipContextT :: (LogItem c) => LogEnv -> c -> Namespace -> KatipContextT m a -> m a
