diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,13 @@
 [The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-foreign/CHANGELOG.md)
 [Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
 
+0.16
+----
+
+- WithResource combinator for Servant-managed resources [#1630](https://github.com/haskell-servant/servant/pull/1630)
+
+  For servant-foreign, this meant the addition of `HasForeign` instances.
+
 0.15.4
 ------
 
diff --git a/servant-foreign.cabal b/servant-foreign.cabal
--- a/servant-foreign.cabal
+++ b/servant-foreign.cabal
@@ -1,6 +1,6 @@
-cabal-version:       >=1.10
+cabal-version:       2.2
 name:                servant-foreign
-version:             0.15.4
+version:             0.16
 
 synopsis:            Helpers for generating clients for servant APIs in any programming language
 category:            Servant, Web
@@ -15,13 +15,13 @@
 
 homepage:            http://docs.servant.dev/
 bug-reports:         http://github.com/haskell-servant/servant/issues
-license:             BSD3
+license:             BSD-3-Clause
 license-file:        LICENSE
 author:              Servant Contributors
 maintainer:          haskell-servant-maintainers@googlegroups.com
 copyright:           2015-2019 Servant Contributors
 build-type:          Simple
-tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.2 || ==9.0.1
+tested-with:         GHC==8.6.5, GHC==8.8.4, GHC ==8.10.7, GHC ==9.0.2, GHC ==9.2.7, GHC ==9.4.4
 
 extra-source-files:
   CHANGELOG.md
@@ -41,18 +41,18 @@
   --
   -- note: mtl lower bound is so low because of GHC-7.8
   build-depends:
-      base        >= 4.9     && < 4.16
-    , text        >= 1.2.3.0 && < 1.3
+      base        >= 4.9     && < 4.19
+    , text        >= 1.2.3.0 && < 2.1
 
   -- Servant dependencies
   build-depends:
-      servant            >=0.18 && <0.19
+      servant            >=0.20 && <0.21
 
   -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
   -- Here can be exceptions if we really need features from the newer versions.
   build-depends:
-      base-compat >= 0.10.5  && < 0.12
-    , lens        >= 4.17    && < 5.1
+      base-compat >= 0.10.5  && < 0.14
+    , lens        >= 4.17    && < 5.3
     , http-types  >= 0.12.2  && < 0.13
 
   hs-source-dirs:      src
@@ -74,7 +74,7 @@
 
   -- Additional dependencies
   build-depends:
-    hspec >= 2.6.0 && <2.9
+    hspec >= 2.6.0 && <2.11
   build-tool-depends:
-    hspec-discover:hspec-discover >=2.6.0 && <2.9
+    hspec-discover:hspec-discover >=2.6.0 && <2.11
   default-language:  Haskell2010
diff --git a/src/Servant/Foreign/Inflections.hs b/src/Servant/Foreign/Inflections.hs
--- a/src/Servant/Foreign/Inflections.hs
+++ b/src/Servant/Foreign/Inflections.hs
@@ -13,7 +13,6 @@
 import           Control.Lens             hiding
                  (cons)
 import qualified Data.Char                as C
-import           Data.Monoid
 import           Data.Text                hiding
                  (map)
 import           Prelude                  hiding
diff --git a/src/Servant/Foreign/Internal.hs b/src/Servant/Foreign/Internal.hs
--- a/src/Servant/Foreign/Internal.hs
+++ b/src/Servant/Foreign/Internal.hs
@@ -23,8 +23,6 @@
 import           Data.Data
                  (Data)
 import           Data.Proxy
-import           Data.Semigroup
-                 (Semigroup)
 import           Data.String
 import           Data.Text
 import           Data.Text.Encoding
@@ -246,7 +244,7 @@
 -- >
 -- > -- Or for example in case of lists
 -- > instance HasForeignType LangX Text a => HasForeignType LangX Text [a] where
--- >    typeFor lang type _ = "listX of " <> typeFor lang ftype (Proxy :: Proxy a)
+-- >    typeFor lang ftype _ = "listX of " <> typeFor lang ftype (Proxy :: Proxy a)
 --
 -- Finally to generate list of information about all the endpoints for
 -- an API you create a function of a form:
@@ -489,6 +487,13 @@
 
   foreignFor lang ftype Proxy = foreignFor lang ftype (Proxy :: Proxy api)
 
+instance HasForeign lang ftype api =>
+  HasForeign lang ftype (WithResource res :> api) where
+
+  type Foreign ftype (WithResource res :> api) = Foreign ftype api
+
+  foreignFor lang ftype Proxy = foreignFor lang ftype (Proxy :: Proxy api)
+
 instance HasForeign lang ftype api
   => HasForeign lang ftype (HttpVersion :> api) where
   type Foreign ftype (HttpVersion :> api) = Foreign ftype api
@@ -509,6 +514,13 @@
 
   foreignFor lang ftype Proxy req =
     foreignFor lang ftype (Proxy :: Proxy api) req
+
+instance HasForeign lang ftype (ToServantApi r) => HasForeign lang ftype (NamedRoutes r) where
+  type Foreign ftype (NamedRoutes r) = Foreign ftype (ToServantApi r)
+
+  foreignFor lang ftype Proxy req =
+    foreignFor lang ftype (Proxy :: Proxy (ToServantApi r)) req
+
 
 -- | Utility class used by 'listFromAPI' which computes
 --   the data needed to generate a function for each endpoint
diff --git a/test/Servant/ForeignSpec.hs b/test/Servant/ForeignSpec.hs
--- a/test/Servant/ForeignSpec.hs
+++ b/test/Servant/ForeignSpec.hs
@@ -11,8 +11,6 @@
 
 module Servant.ForeignSpec where
 
-import           Data.Monoid
-                 ((<>))
 import           Data.Proxy
 import           Servant.Foreign
 import           Servant.Test.ComprehensiveAPI
