diff --git a/servant-swagger-ui-redoc.cabal b/servant-swagger-ui-redoc.cabal
--- a/servant-swagger-ui-redoc.cabal
+++ b/servant-swagger-ui-redoc.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               servant-swagger-ui-redoc
-version:            0.3.3.1.22.3
+version:            0.3.4.1.22.3
 synopsis:           Servant swagger ui: ReDoc theme
 category:           Web, Servant, Swagger
 description:
@@ -18,7 +18,7 @@
 license-file:       LICENSE
 build-type:         Simple
 tested-with:
-  GHC ==7.8.4 || ==7.10.3 || ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1
+  GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.4
 
 extra-source-files:
   redoc-dist-1.22.3/redoc.min.js
@@ -32,14 +32,14 @@
 library
   hs-source-dirs:   src
   ghc-options:      -Wall
-  build-depends:    servant-swagger-ui-core >=0.3.3 && <0.4
+  build-depends:    servant-swagger-ui-core >=0.3.5 && <0.4
   build-depends:
-      base             >=4.7      && <4.14
+      base             >=4.7      && <4.15
+    , aeson            >=0.8.0.2  && <1.6
     , bytestring       >=0.10.4.0 && <0.11
     , file-embed-lzma  >=0        && <0.1
-    , servant          >=0.14     && <0.17
-    , servant-server   >=0.14     && <0.17
-    , swagger2         >=2.3.0.1  && <2.5
+    , servant          >=0.14     && <0.19
+    , servant-server   >=0.14     && <0.19
     , text             >=1.2.3.0  && <1.3
 
   exposed-modules:  Servant.Swagger.UI.ReDoc
diff --git a/src/Servant/Swagger/UI/ReDoc.hs b/src/Servant/Swagger/UI/ReDoc.hs
--- a/src/Servant/Swagger/UI/ReDoc.hs
+++ b/src/Servant/Swagger/UI/ReDoc.hs
@@ -46,7 +46,9 @@
     SwaggerSchemaUI,
     SwaggerSchemaUI',
     redocSchemaUIServer,
+    redocSchemaUIServerT,
     redocSchemaUIServer',
+    redocSchemaUIServerT',
 
     -- ** ReDoc theme
     redocIndexTemplate,
@@ -55,8 +57,8 @@
 
 import Servant.Swagger.UI.Core
 
+import Data.Aeson      (ToJSON, Value)
 import Data.ByteString (ByteString)
-import Data.Swagger    (Swagger)
 import Data.Text       (Text)
 import FileEmbedLzma
 import Servant
@@ -65,17 +67,43 @@
 --
 -- See <https://github.com/Rebilly/ReDoc/tree/v1.x>
 redocSchemaUIServer
-    :: (Server api ~ Handler Swagger)
-    => Swagger -> Server (SwaggerSchemaUI' dir api)
+    :: (Server api ~ Handler Value, ToJSON a)
+    => a -> Server (SwaggerSchemaUI' dir api)
 redocSchemaUIServer =
     swaggerSchemaUIServerImpl redocIndexTemplate redocFiles
 
+-- | Serve Redoc Swagger UI on @/dir@ using @api@ as a Swagger spec source.
+--
+-- Generalized to 'ServerT'
+--
+-- @
+-- redocSchemaUIServerT :: Swagger -> ServerT (SwaggerSchemaUI schema dir) m
+-- @
+redocSchemaUIServerT
+    :: (Monad m, ServerT api m ~ m Value, ToJSON a)
+    => a -> ServerT (SwaggerSchemaUI' dir api) m
+redocSchemaUIServerT =
+    swaggerSchemaUIServerImpl redocIndexTemplate redocFiles
+
 -- | Use a custom server to serve the Swagger spec source.
 redocSchemaUIServer'
     :: Server api -> Server (SwaggerSchemaUI' dir api)
 redocSchemaUIServer' =
     swaggerSchemaUIServerImpl' redocIndexTemplate redocFiles
 
+-- | Use a custom server to serve the Redoc Swagger spec source.
+--
+-- This allows even more control over how the spec source is served.
+-- It allows, for instance, serving the spec source with authentication,
+-- customizing the response based on the client or serving a swagger.yaml
+-- instead.
+--
+-- Generalized to 'ServerT'
+--
+redocSchemaUIServerT'
+    :: Monad m => ServerT api m -> ServerT (SwaggerSchemaUI' dir api) m
+redocSchemaUIServerT' =
+    swaggerSchemaUIServerImpl' redocIndexTemplate redocFiles
 
 redocIndexTemplate :: Text
 redocIndexTemplate = $(embedText "redoc.index.html.tmpl")
