diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,9 @@
-0.3.3
+0.8.4
+-----
+
+- Support for servant-0.13
+
+0.8.3
 -----
 
 - Support for servant-0.12
diff --git a/servant-mock.cabal b/servant-mock.cabal
--- a/servant-mock.cabal
+++ b/servant-mock.cabal
@@ -1,5 +1,5 @@
 name:                servant-mock
-version:             0.8.3
+version:             0.8.4
 synopsis:            Derive a mock server for free from your servant API types
 description:
   Derive a mock server for free from your servant API types
@@ -17,7 +17,7 @@
 cabal-version:       >=1.10
 bug-reports:         http://github.com/haskell-servant/servant-mock/issues
 tested-with:
-  GHC==8.2.1,
+  GHC==8.2.2,
   GHC==8.0.2,
   GHC==7.10.3,
   GHC==7.8.4
@@ -36,12 +36,13 @@
     Servant.Mock
   build-depends:
     base            >=4.7    && <5,
+    base-compat     >=0.9.3  && <0.10,
     bytestring      >=0.10.4 && <0.11,
-    http-types      >=0.8    && <0.11,
-    servant         >=0.8    && <0.13,
-    servant-server  >=0.8    && <0.13,
+    http-types      >=0.8    && <0.13,
+    servant         >=0.13   && <0.14,
+    servant-server  >=0.13   && <0.14,
     transformers    >=0.3    && <0.6,
-    QuickCheck      >=2.7    && <2.11,
+    QuickCheck      >=2.7    && <2.12,
     wai             >=3.0    && <3.3
   hs-source-dirs:      src
   default-language:    Haskell2010
@@ -79,7 +80,7 @@
     bytestring-conversion,
     base,
     hspec,
-    hspec-wai >=0.8 && <0.9,
+    hspec-wai >=0.8 && <0.10,
     QuickCheck,
     servant,
     servant-server,
diff --git a/src/Servant/Mock.hs b/src/Servant/Mock.hs
--- a/src/Servant/Mock.hs
+++ b/src/Servant/Mock.hs
@@ -7,6 +7,7 @@
 {-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE TypeOperators         #-}
+{-# LANGUAGE UndecidableInstances  #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
 #include "overlapping-compat.h"
@@ -56,9 +57,9 @@
 -- @
 module Servant.Mock ( HasMock(..) ) where
 
-#if !MIN_VERSION_base(4,8,0)
-import           Control.Applicative
-#endif
+import Prelude ()
+import Prelude.Compat
+
 import           Control.Monad.IO.Class
 import           Data.ByteString.Lazy.Char8 (pack)
 import           Data.Proxy
@@ -67,6 +68,7 @@
 import           Network.Wai
 import           Servant
 import           Servant.API.ContentTypes
+import           Servant.API.Modifiers
 import           Test.QuickCheck.Arbitrary  (Arbitrary (..), vector)
 import           Test.QuickCheck.Gen        (Gen, generate)
 
@@ -112,15 +114,14 @@
 instance (KnownSymbol path, HasMock rest context) => HasMock (path :> rest) context where
   mock _ = mock (Proxy :: Proxy rest)
 
-instance (KnownSymbol s, FromHttpApiData a, HasMock rest context) => HasMock (Capture s a :> rest) context where
+instance (KnownSymbol s, FromHttpApiData a, HasMock rest context) => HasMock (Capture' mods s a :> rest) context where
   mock _ context = \_ -> mock (Proxy :: Proxy rest) context
 
-#if MIN_VERSION_servant(0,8,1)
 instance (KnownSymbol s, FromHttpApiData a, HasMock rest context) => HasMock (CaptureAll s a :> rest) context where
   mock _ context = \_ -> mock (Proxy :: Proxy rest) context
-#endif
 
-instance (AllCTUnrender ctypes a, HasMock rest context) => HasMock (ReqBody ctypes a :> rest) context where
+instance (AllCTUnrender ctypes a, HasMock rest context, SBoolI (FoldLenient mods))
+    => HasMock (ReqBody' mods ctypes a :> rest) context where
   mock _ context = \_ -> mock (Proxy :: Proxy rest) context
 
 instance HasMock rest context => HasMock (RemoteHost :> rest) context where
@@ -135,8 +136,8 @@
 instance HasMock rest context => HasMock (HttpVersion :> rest) context where
   mock _ context = \_ -> mock (Proxy :: Proxy rest) context
 
-instance (KnownSymbol s, FromHttpApiData a, HasMock rest context)
-      => HasMock (QueryParam s a :> rest) context where
+instance (KnownSymbol s, FromHttpApiData a, HasMock rest context, SBoolI (FoldRequired mods), SBoolI (FoldLenient mods))
+      => HasMock (QueryParam' mods s a :> rest) context where
   mock _ context = \_ -> mock (Proxy :: Proxy rest) context
 
 instance (KnownSymbol s, FromHttpApiData a, HasMock rest context)
@@ -146,7 +147,8 @@
 instance (KnownSymbol s, HasMock rest context) => HasMock (QueryFlag s :> rest) context where
   mock _ context = \_ -> mock (Proxy :: Proxy rest) context
 
-instance (KnownSymbol h, FromHttpApiData a, HasMock rest context) => HasMock (Header h a :> rest) context where
+instance (KnownSymbol h, FromHttpApiData a, HasMock rest context, SBoolI (FoldRequired mods), SBoolI (FoldLenient mods))
+    => HasMock (Header' mods h a :> rest) context where
   mock _ context = \_ -> mock (Proxy :: Proxy rest) context
 
 instance (Arbitrary a, KnownNat status, ReflectMethod method, AllCTRender ctypes a)
@@ -160,28 +162,20 @@
   mock _ _ = mockArbitrary
 
 instance HasMock Raw context where
-#if MIN_VERSION_servant(0,11,0)
   mock _ _ = Tagged $ \_req respond -> do
-#else
-  mock _ _ = \_req respond -> do
-#endif
     bdy <- genBody
     respond $ responseLBS status200 [] bdy
 
     where genBody = pack <$> generate (vector 100 :: Gen [Char])
 
-#if MIN_VERSION_servant(0,11,0)
 instance HasMock EmptyAPI context where
     mock _ _ = emptyServer
-#endif
 
-#if MIN_VERSION_servant(0,12,0)
 instance HasMock api context => HasMock (Summary d :> api) context where
     mock _ context = mock (Proxy :: Proxy api) context
 
 instance HasMock api context => HasMock (Description d :> api) context where
     mock _ context = mock (Proxy :: Proxy api) context
-#endif
 
 instance (HasContextEntry context (NamedContext name subContext), HasMock rest subContext) =>
   HasMock (WithNamedContext name subContext rest) context where
