diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,18 @@
 [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.15.3
+------
+
+### Significant changes
+
+- Support `Fragment` combinator.
+
+0.15.2
+------
+
+* Support `servant-0.18`.
+
 0.15.1
 ------
 
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
 name:                servant-foreign
-version:             0.15.2
+version:             0.15.3
 
 synopsis:            Helpers for generating clients for servant APIs in any programming language
 category:            Servant, Web
@@ -21,13 +21,7 @@
 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.3
-   || ==8.10.1
+tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.2
 
 extra-source-files:
   CHANGELOG.md
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
@@ -84,6 +84,11 @@
 
 type Path f = [Segment f]
 
+newtype Frag f = Frag { unFragment :: Arg f }
+  deriving (Data, Eq, Show, Typeable)
+
+makePrisms ''Frag
+
 data ArgType
   = Normal
   | Flag
@@ -115,11 +120,12 @@
 data Url f = Url
   { _path     :: Path f
   , _queryStr :: [QueryArg f]
+  , _frag     :: Maybe f
   }
   deriving (Data, Eq, Show, Typeable)
 
 defUrl :: Url f
-defUrl = Url [] []
+defUrl = Url [] [] Nothing
 
 makeLenses ''Url
 
@@ -323,6 +329,16 @@
       arg = Arg
         { _argName = PathSegment str
         , _argType = typeFor lang ftype (Proxy :: Proxy Bool) }
+
+instance
+  (HasForeignType lang ftype (Maybe a), HasForeign lang ftype api)
+  => HasForeign lang ftype (Fragment a :> api) where
+  type Foreign ftype (Fragment a :> api) = Foreign ftype api
+  foreignFor lang Proxy Proxy req =
+    foreignFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy api) $
+      req & reqUrl . frag .~ Just argT
+    where
+      argT = typeFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy (Maybe a))
 
 instance HasForeign lang ftype Raw where
   type Foreign ftype Raw = HTTP.Method -> Req ftype
diff --git a/test/Servant/ForeignSpec.hs b/test/Servant/ForeignSpec.hs
--- a/test/Servant/ForeignSpec.hs
+++ b/test/Servant/ForeignSpec.hs
@@ -14,8 +14,8 @@
 import           Data.Monoid
                  ((<>))
 import           Data.Proxy
-import           Servant.Test.ComprehensiveAPI
 import           Servant.Foreign
+import           Servant.Test.ComprehensiveAPI
 import           Servant.Types.SourceT
                  (SourceT)
 
@@ -91,6 +91,7 @@
       { _reqUrl        = Url
           [ Segment $ Static "test" ]
           [ QueryArg (Arg "flag" "boolX") Flag ]
+          Nothing
       , _reqMethod     = "GET"
       , _reqHeaders    = [HeaderArg $ Arg "header" "maybe listX of stringX"]
       , _reqBody       = Nothing
@@ -103,6 +104,7 @@
       { _reqUrl        = Url
           [ Segment $ Static "test" ]
           [ QueryArg (Arg "param" "maybe intX") Normal ]
+          Nothing
       , _reqMethod     = "POST"
       , _reqHeaders    = []
       , _reqBody       = Just "listX of stringX"
@@ -116,6 +118,7 @@
           [ Segment $ Static "test" ]
           -- Should this be |intX| or |listX of intX| ?
           [ QueryArg (Arg "params" "listX of intX") List ]
+          Nothing
       , _reqMethod     = "PUT"
       , _reqHeaders    = []
       , _reqBody       = Just "stringX"
@@ -129,6 +132,7 @@
           [ Segment $ Static "test"
           , Segment $ Cap (Arg "id" "intX") ]
           []
+          Nothing
       , _reqMethod     = "DELETE"
       , _reqHeaders    = []
       , _reqBody       = Nothing
@@ -142,6 +146,7 @@
           [ Segment $ Static "test"
           , Segment $ Cap (Arg "ids" "listX of intX") ]
           []
+          Nothing
       , _reqMethod     = "GET"
       , _reqHeaders    = []
       , _reqBody       = Nothing
