diff --git a/htmx-lucid.cabal b/htmx-lucid.cabal
--- a/htmx-lucid.cabal
+++ b/htmx-lucid.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.6
 name:               htmx-lucid
-version:            0.2.0.0
+version:            0.2.0.1
 synopsis:           Use htmx with lucid
 description:
   Please see the README on GitHub at <https://github.com/JonathanLorimer/htmx#readme>
@@ -28,13 +28,14 @@
   exposed-modules:
     Htmx.Lucid.Core
     Htmx.Lucid.Extension.IncludeVals
+    Htmx.Lucid.Extension.ServerSentEvents
     Htmx.Lucid.Extra
     Htmx.Lucid.Head
 
   hs-source-dirs:   src
   build-depends:
     , base   >=4.7      && <5
-    , htmx
+    , htmx   == 0.1.0.2
     , lucid2 >=0.0.20221012
     , text   >=2        && <3
 
diff --git a/src/Htmx/Lucid/Core.hs b/src/Htmx/Lucid/Core.hs
--- a/src/Htmx/Lucid/Core.hs
+++ b/src/Htmx/Lucid/Core.hs
@@ -45,7 +45,7 @@
 hxSwap_ :: Text -> Attributes
 hxSwap_ = makeAttributes "hx-swap"
 
--- | Like 'hxSwap' but takes a strongly typed swap style.
+-- | Like 'hxSwap_' but takes a strongly typed swap style.
 -- This doesn't allow [modifiers](https://htmx.org/attributes/hx-swap/#modifiers) to be applied.
 hxSwapS_ :: Swap -> Attributes
 hxSwapS_ = makeAttributes "hx-swap" . render
@@ -70,6 +70,8 @@
 hxVals_ :: Text -> Attributes
 hxVals_ = makeAttributes "hx-vals"
 
+-- | Indicates whether you are handling an arbitrary DOM event
+-- or on of the bespoke 'HtmxEvent' (defined by the htmx js bundle)
 data OnEvent = DomOnEvent Text | HtmxOnEvent HtmxEvent
 
 -- | <https://htmx.org/attributes/hx-on/>
diff --git a/src/Htmx/Lucid/Extension/ServerSentEvents.hs b/src/Htmx/Lucid/Extension/ServerSentEvents.hs
new file mode 100644
--- /dev/null
+++ b/src/Htmx/Lucid/Extension/ServerSentEvents.hs
@@ -0,0 +1,40 @@
+{- |
+Module      : Htmx.Lucid.Extension.ServerSentEvents
+Description : Attribute for connecting to an sse stream
+
+The Server Sent Events extension connects to an EventSource directly from HTML.
+It manages the connections to your web server, listens for server events, and
+then swaps their contents into your htmx webpage in real-time.
+<https://github.com/bigskysoftware/htmx-extensions/blob/main/src/sse/README.md>
+-}
+module Htmx.Lucid.Extension.ServerSentEvents where
+
+import Data.Text (Text)
+import Lucid.Base (makeAttributes, Attributes)
+
+-- | <https://github.com/bigskysoftware/htmx-extensions/tree/main/src/sse#connecting-to-an-sse-server>
+-- Provide the url to connect to, in order to establish an SSE channel.
+sseConnect_ :: Text -> Attributes
+sseConnect_ = makeAttributes "sse-connect"
+
+-- | A stronger type for the different kinds of events permitted by 'sseSwap_'
+data SseEventKind = Named Text | UnNamed
+
+-- | <https://github.com/bigskysoftware/htmx-extensions/tree/main/src/sse#receiving-named-events>
+-- event name to listen for in an SSE message, the contents of the message will
+-- be swapped into the tag this attribute is on. For named events the message structure is as follows:
+-- 
+-- @
+-- event: EventName
+-- data: <div>Content to swap into your HTML page.</div>sseSwap_ :: Text -> Attributes
+-- @
+--
+-- For unnamed events the message structure should look like this:
+--
+-- @
+-- data: <div>Content to swap into your HTML page.</div>sseSwap_ :: Text -> Attributes
+-- @
+sseSwap_ :: SseEventKind -> Attributes
+sseSwap_ = \case  
+  Named eventName -> makeAttributes "sse-swap" eventName
+  UnNamed -> makeAttributes "sse-swap" "message"
diff --git a/src/Htmx/Lucid/Extra.hs b/src/Htmx/Lucid/Extra.hs
--- a/src/Htmx/Lucid/Extra.hs
+++ b/src/Htmx/Lucid/Extra.hs
@@ -90,6 +90,8 @@
 hxIndicator_ :: Text -> Attributes
 hxIndicator_ = makeAttributes "hx-indicator"
 
+-- | An enumeration of the filter types based on the documentation here:
+-- <https://htmx.org/attributes/hx-params/>
 data ParamsFilter
     = -- | Include all parameters (default)
       All
@@ -149,6 +151,8 @@
 hxSse_ :: Text -> Attributes
 hxSse_ = makeAttributes "hx-sse"
 
+-- | An enumeration of the sync strategies based on the documentation here:
+-- <https://htmx.org/attributes/hx-sync/>
 data SyncStrategy
     = -- | drop (ignore) this request if an existing request is in flight (the default)
       SyncDrop
diff --git a/src/Htmx/Lucid/Head.hs b/src/Htmx/Lucid/Head.hs
--- a/src/Htmx/Lucid/Head.hs
+++ b/src/Htmx/Lucid/Head.hs
@@ -32,18 +32,17 @@
 useHtmxExtension :: (Monad m) => HtmxExtension -> HtmlT m ()
 useHtmxExtension = useHtmxExtensionV recommendedVersion
 
--- | Same as 'useHtmxExt' but lets you choose the version url
+-- | Same as 'useHtmxExtension' but lets you choose the version url
 useHtmxExtensionV ::
     (Monad m) => (Natural, Natural, Natural) -> HtmxExtension -> HtmlT m ()
 useHtmxExtensionV v ext = script_ [src_ $ htmxExtSrc v (render ext)] ("" :: Html ())
 
--- | A typesafe version of 'useHtmxExtension' based on the "included" extensions
--- that the htmx codebase is tested against
+-- | A version of 'useHtmxExtension' that works on a list of extensions
 -- NOTE: This uses 'recommendedVersion' as the version section of the URL
 useHtmxExtensions :: (Monad m) => [HtmxExtension] -> HtmlT m ()
 useHtmxExtensions exts = forM_ exts useHtmxExtension
 
--- | Same as 'useHtmxExts' but with a versioned url
+-- | Same as 'useHtmxExtensions' but with a versioned url
 useHtmxExtensionsV ::
     (Monad m) => (Natural, Natural, Natural) -> [HtmxExtension] -> HtmlT m ()
 useHtmxExtensionsV v exts = forM_ exts (useHtmxExtensionV v)
@@ -62,6 +61,7 @@
 recommendedVersion :: (Natural, Natural, Natural)
 recommendedVersion = (2, 0, 0)
 
+-- | constant for the htmx cdn
 htmxSrc :: Text
 htmxSrc = "https://unpkg.com/htmx.org"
 
@@ -77,10 +77,12 @@
         <> "."
         <> showT patch
 
+-- | Creates a string with the htmx CDN specified to version
 htmxSrcWithSemVer :: (Natural, Natural, Natural) -> Text
 htmxSrcWithSemVer ver =
     htmxSrc <> showSemVer ver
 
+-- | Creates a string with the htmx extension CDN specified to version
 htmxExtSrc :: (Natural, Natural, Natural) -> Text -> Text
 htmxExtSrc ver ext =
     "https://unpkg.com/htmx-ext-"
