diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,12 +1,16 @@
 # Revision history for servant-event-stream
 
+## 0.3.1.0 -- 2025-08-21
+
+* Qualify `servant` imports so that `ServerSentEvents` added in `servant-0.20.3.0` does not conflict with ours. (Issue #12)
+
 ## 0.3.0.0 -- 2024-09-05
 
 * Breaking changes to the API.
 
     Event streams are implemented using servant's 'Stream' endpoint. You should
-    provide a handler that returns a stream of events that implements 'ToSourceIO'
-    where events have a 'ToServerEvent' instance.
+    provide a handler that returns a stream of events that implements
+    'ToSourceIO' where events have a 'ToServerEvent' instance.
 
     Example:
 
diff --git a/servant-event-stream.cabal b/servant-event-stream.cabal
--- a/servant-event-stream.cabal
+++ b/servant-event-stream.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name: servant-event-stream
-version: 0.3.0.1
+version: 0.3.1.0
 stability: alpha
 synopsis: Servant support for Server-Sent events
 category: Servant, Web
@@ -14,7 +14,7 @@
 license-file: LICENSE
 author: Shaun Sharples
 maintainer: shaun.sharples@gmail.com
-copyright: (c) 2024 Shaun Sharples
+copyright: (c) 2025 Shaun Sharples
 build-type: Simple
 extra-source-files:
   CHANGELOG.md
@@ -31,7 +31,7 @@
     OverloadedStrings
 
   build-depends:
-    base >=4.10 && <4.20,
+    base >=4.10 && <4.22,
     bytestring >=0.11.1.0 && <0.13,
     http-media >=0.7.1.3 && <0.9,
     lens >=4.17 && <5.4,
@@ -48,4 +48,4 @@
   main-is: Spec.hs
   hs-source-dirs: tests
   default-language: Haskell2010
-  build-depends: base
+  build-depends: base >=4.10 && <4.22
diff --git a/src/Servant/API/EventStream.hs b/src/Servant/API/EventStream.hs
--- a/src/Servant/API/EventStream.hs
+++ b/src/Servant/API/EventStream.hs
@@ -68,9 +68,9 @@
 import Data.Typeable (Typeable)
 import GHC.Generics (Generic)
 import Network.HTTP.Media ((//), (/:))
-import Servant
-import Servant.Foreign
-import Servant.Foreign.Internal (_FunctionName)
+import qualified Servant as S
+import qualified Servant.Foreign as S
+import qualified Servant.Foreign.Internal as SFI
 
 {- | A ServerSentEvents endpoint emits an event stream using the format described at
   <https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#event_stream_format>
@@ -78,7 +78,7 @@
 data ServerSentEvents (a :: Type)
   deriving (Typeable, Generic)
 
-instance HasLink (ServerSentEvents a) where
+instance S.HasLink (ServerSentEvents a) where
   type MkLink (ServerSentEvents a) r = r
   toLink toA _ = toA
 
@@ -100,7 +100,7 @@
 class ToServerEvent a where
   toServerEvent :: a -> ServerEvent
 
-instance (ToServerEvent a) => MimeRender EventStream a where
+instance (ToServerEvent a) => S.MimeRender EventStream a where
   mimeRender _ = encodeServerEvent . toServerEvent
 
 {- 1. Field names must not contain LF, CR or COLON characters.
@@ -124,39 +124,39 @@
 instance ToServerEvent ServerEvent where
   toServerEvent = id
 
-instance {-# OVERLAPPABLE #-} (ToServerEvent chunk, ToSourceIO chunk a) => HasServer (ServerSentEvents a) context where
-  type ServerT (ServerSentEvents a) m = ServerT (StreamGet ServerEventFraming EventStream a) m
-  route Proxy =
-    route
-      (Proxy :: Proxy (StreamGet ServerEventFraming EventStream a))
-  hoistServerWithContext Proxy =
-    hoistServerWithContext
-      (Proxy :: Proxy (StreamGet ServerEventFraming EventStream a))
+instance {-# OVERLAPPABLE #-} (ToServerEvent chunk, S.ToSourceIO chunk a) => S.HasServer (ServerSentEvents a) context where
+  type ServerT (ServerSentEvents a) m = S.ServerT (S.StreamGet ServerEventFraming EventStream a) m
+  route S.Proxy =
+    S.route
+      (S.Proxy :: S.Proxy (S.StreamGet ServerEventFraming EventStream a))
+  hoistServerWithContext S.Proxy =
+    S.hoistServerWithContext
+      (S.Proxy :: S.Proxy (S.StreamGet ServerEventFraming EventStream a))
 
-instance {-# OVERLAPPING #-} (ToServerEvent chunk, ToSourceIO chunk a, GetHeaders (Headers h a)) => HasServer (ServerSentEvents (Headers h a)) context where
-  type ServerT (ServerSentEvents (Headers h a)) m = ServerT (StreamGet ServerEventFraming EventStream (Headers h a)) m
-  route Proxy =
-    route
-      (Proxy :: Proxy (StreamGet ServerEventFraming EventStream (Headers h a)))
-  hoistServerWithContext Proxy =
-    hoistServerWithContext
-      (Proxy :: Proxy (StreamGet ServerEventFraming EventStream (Headers h a)))
+instance {-# OVERLAPPING #-} (ToServerEvent chunk, S.ToSourceIO chunk a, S.GetHeaders (S.Headers h a)) => S.HasServer (ServerSentEvents (S.Headers h a)) context where
+  type ServerT (ServerSentEvents (S.Headers h a)) m = S.ServerT (S.StreamGet ServerEventFraming EventStream (S.Headers h a)) m
+  route S.Proxy =
+    S.route
+      (S.Proxy :: S.Proxy (S.StreamGet ServerEventFraming EventStream (S.Headers h a)))
+  hoistServerWithContext S.Proxy =
+    S.hoistServerWithContext
+      (S.Proxy :: S.Proxy (S.StreamGet ServerEventFraming EventStream (S.Headers h a)))
 
 -- | a helper instance for <https://hackage.haskell.org/package/servant-foreign-0.15.3/docs/Servant-Foreign.html servant-foreign>
 instance
-  (HasForeignType lang ftype a) =>
-  HasForeign lang ftype (ServerSentEvents a)
+  (S.HasForeignType lang ftype a) =>
+  S.HasForeign lang ftype (ServerSentEvents a)
   where
-  type Foreign ftype (ServerSentEvents a) = Req ftype
+  type Foreign ftype (ServerSentEvents a) = SFI.Req ftype
 
-  foreignFor lang Proxy Proxy req =
+  foreignFor lang S.Proxy S.Proxy req =
     req
-      & reqFuncName . _FunctionName %~ ("stream" :)
-      & reqMethod .~ method
-      & reqReturnType ?~ retType
+      & SFI.reqFuncName . SFI._FunctionName %~ ("stream" :)
+      & SFI.reqMethod .~ method
+      & SFI.reqReturnType ?~ retType
    where
-    retType = typeFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy a)
-    method = reflectMethod (Proxy :: Proxy 'GET)
+    retType = SFI.typeFor lang (S.Proxy :: S.Proxy ftype) (S.Proxy :: S.Proxy a)
+    method = S.reflectMethod (S.Proxy :: S.Proxy S.GET)
 
 {- | A type representation of an event stream. It's responsible for setting proper content-type
   and buffering headers, as well as for providing parser implementations for the streams.
@@ -164,19 +164,19 @@
 -}
 data EventStream
 
-instance Accept EventStream where
+instance S.Accept EventStream where
   contentType _ = "text" // "event-stream" /: ("charset", "utf-8")
 
 -- | Recommended headers for Server-Sent Events.
-type RecommendedEventSourceHeaders (a :: Type) = Headers '[Header "X-Accel-Buffering" Text, Header "Cache-Control" Text] a
+type RecommendedEventSourceHeaders (a :: Type) = S.Headers '[S.Header "X-Accel-Buffering" Text, S.Header "Cache-Control" Text] a
 
 -- | Add the recommended headers for Server-Sent Events to the response.
 recommendedEventSourceHeaders :: a -> RecommendedEventSourceHeaders a
-recommendedEventSourceHeaders = addHeader @"X-Accel-Buffering" "no" . addHeader @"Cache-Control" "no-store"
+recommendedEventSourceHeaders = S.addHeader @"X-Accel-Buffering" "no" . S.addHeader @"Cache-Control" "no-store"
 
 -- | A framing strategy for Server-Sent Events.
 data ServerEventFraming
 
 -- | Frames the server events by joining chunks with a newline.
-instance FramingRender ServerEventFraming where
+instance S.FramingRender ServerEventFraming where
   framingRender _ f = fmap (\x -> f x <> "\n")
