diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,11 @@
 
 ## [Unreleased]
 
+## [1.5.1] - 2206-08-09
+
+### Changed
+- Support swagger2-2.9 (#63)
+
 ## [1.5.0] - 2025-07-23
 
 ### Changed
@@ -44,7 +49,8 @@
 - Support file uploads (#32)
 - First version of webgear-swagger
 
-[Unreleased]: https://github.com/haskell-webgear/webgear/compare/v1.5.0...HEAD
+[Unreleased]: https://github.com/haskell-webgear/webgear/compare/v1.5.1...HEAD
+[1.5.1]: https://github.com/haskell-webgear/webgear/releases/tag/v1.5.1
 [1.5.0]: https://github.com/haskell-webgear/webgear/releases/tag/v1.5.0
 [1.4.0]: https://github.com/haskell-webgear/webgear/releases/tag/v1.4.0
 [1.3.1]: https://github.com/haskell-webgear/webgear/releases/tag/v1.3.1
diff --git a/src/WebGear/Swagger/Handler.hs b/src/WebGear/Swagger/Handler.hs
--- a/src/WebGear/Swagger/Handler.hs
+++ b/src/WebGear/Swagger/Handler.hs
@@ -21,7 +21,6 @@
 import Control.Monad ((<=<))
 import Control.Monad.State.Strict (MonadState, State, evalState, state)
 import Data.Coerce (coerce)
-import qualified Data.HashMap.Strict.InsOrd as Map
 import Data.Swagger (
   Operation,
   PathItem,
@@ -49,6 +48,12 @@
   RoutePath (..),
   Summary (..),
  )
+
+#if MIN_VERSION_swagger2(2,9,0)
+import qualified Data.HashMap.Strict.InsOrd.Compat as Map
+#else
+import qualified Data.HashMap.Strict.InsOrd as Map
+#endif
 
 -- | A handler that captures `Swagger` documentation of API specifications.
 newtype SwaggerHandler m a b = SwaggerHandler (Swagger -> State Documentation Swagger)
diff --git a/src/WebGear/Swagger/Trait/Body.hs b/src/WebGear/Swagger/Trait/Body.hs
--- a/src/WebGear/Swagger/Trait/Body.hs
+++ b/src/WebGear/Swagger/Trait/Body.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 
 -- | Swagger implementation of 'Body' trait.
@@ -5,7 +6,6 @@
 
 import Control.Lens ((%~), (&), (.~), (?~), (^.))
 import Control.Monad.State.Strict (MonadState)
-import qualified Data.HashMap.Strict.InsOrd as Map
 import Data.Proxy (Proxy (..))
 import Data.Swagger (
   Definitions,
@@ -46,6 +46,12 @@
   consumeDescription,
  )
 
+#if MIN_VERSION_swagger2(2,9,0)
+import qualified Data.HashMap.Strict.InsOrd.Compat as Map
+#else
+import qualified Data.HashMap.Strict.InsOrd as Map
+#endif
+
 instance (ToSchema val, MIMEType mt) => Get (SwaggerHandler m) (Body mt val) where
   {-# INLINE getTrait #-}
   getTrait :: Body mt val -> SwaggerHandler m (Request `With` ts) (Either Text val)
@@ -64,9 +70,9 @@
         doc
           & allOperations
             %~ ( \op ->
-                  op
-                    & parameters %~ (Inline body :)
-                    & consumes %~ Just . maybe mimeList (<> mimeList)
+                   op
+                     & parameters %~ (Inline body :)
+                     & consumes %~ Just . maybe mimeList (<> mimeList)
                )
           & definitions %~ (<> defs)
 
@@ -113,8 +119,8 @@
     doc'
       & allOperations
         %~ ( \op ->
-              op
-                & responses . responses %~ Map.map (addDescription . (`swaggerMappend` Inline resp))
-                & produces %~ Just . maybe mimeList (`swaggerMappend` mimeList)
+               op
+                 & responses . responses %~ Map.map (addDescription . (`swaggerMappend` Inline resp))
+                 & produces %~ Just . maybe mimeList (`swaggerMappend` mimeList)
            )
       & definitions %~ (<> defs)
diff --git a/src/WebGear/Swagger/Trait/Header.hs b/src/WebGear/Swagger/Trait/Header.hs
--- a/src/WebGear/Swagger/Trait/Header.hs
+++ b/src/WebGear/Swagger/Trait/Header.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 
 -- | Swagger implementation of 'Header' trait.
@@ -5,7 +6,6 @@
 
 import Control.Lens ((%~), (&), (.~), (<>~), (?~))
 import Control.Monad.State.Strict (MonadState)
-import qualified Data.HashMap.Strict.InsOrd as Map
 import Data.Proxy (Proxy (Proxy))
 import Data.String (fromString)
 import Data.Swagger (
@@ -36,6 +36,12 @@
 import WebGear.Core.Trait (Get (..), Set (..))
 import qualified WebGear.Core.Trait.Header as WG
 import WebGear.Swagger.Handler (Documentation, SwaggerHandler (..), consumeDescription)
+
+#if MIN_VERSION_swagger2(2,9,0)
+import qualified Data.HashMap.Strict.InsOrd.Compat as Map
+#else
+import qualified Data.HashMap.Strict.InsOrd as Map
+#endif
 
 instance
   ( KnownSymbol name
diff --git a/src/WebGear/Swagger/Trait/Method.hs b/src/WebGear/Swagger/Trait/Method.hs
--- a/src/WebGear/Swagger/Trait/Method.hs
+++ b/src/WebGear/Swagger/Trait/Method.hs
@@ -1,15 +1,21 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 
 -- | Swagger implementation of 'Method' trait.
 module WebGear.Swagger.Trait.Method where
 
 import Control.Lens ((%~), (&))
-import qualified Data.HashMap.Strict.InsOrd as Map
 import Data.Swagger (PathItem (..), paths)
 import Network.HTTP.Types (StdMethod (..))
 import WebGear.Core.Trait (Get (..))
 import WebGear.Core.Trait.Method (Method (..))
 import WebGear.Swagger.Handler (SwaggerHandler (..), addRouteDocumentation)
+
+#if MIN_VERSION_swagger2(2,9,0)
+import qualified Data.HashMap.Strict.InsOrd.Compat as Map
+#else
+import qualified Data.HashMap.Strict.InsOrd as Map
+#endif
 
 instance Get (SwaggerHandler m) Method where
   {-# INLINE getTrait #-}
diff --git a/src/WebGear/Swagger/Trait/Status.hs b/src/WebGear/Swagger/Trait/Status.hs
--- a/src/WebGear/Swagger/Trait/Status.hs
+++ b/src/WebGear/Swagger/Trait/Status.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 
 -- | Swagger implementation of 'Status' trait.
@@ -5,7 +6,6 @@
 
 import Control.Applicative ((<|>))
 import Control.Lens (at, mapped, (%~), (&), (.~), (?~), (^.))
-import qualified Data.HashMap.Strict.InsOrd as Map
 import Data.Maybe (fromMaybe)
 import Data.Swagger (
   Operation,
@@ -29,6 +29,12 @@
 import WebGear.Core.Trait (Set, With, setTrait)
 import WebGear.Core.Trait.Status (Status (..))
 import WebGear.Swagger.Handler (SwaggerHandler (..), addRootPath, consumeDescription)
+
+#if MIN_VERSION_swagger2(2,9,0)
+import qualified Data.HashMap.Strict.InsOrd.Compat as Map
+#else
+import qualified Data.HashMap.Strict.InsOrd as Map
+#endif
 
 instance Set (SwaggerHandler m) Status where
   {-# INLINE setTrait #-}
diff --git a/webgear-swagger.cabal b/webgear-swagger.cabal
--- a/webgear-swagger.cabal
+++ b/webgear-swagger.cabal
@@ -1,7 +1,7 @@
 cabal-version:       2.4
 
 name:                webgear-swagger
-version:             1.5.0
+version:             1.5.1
 synopsis:            Composable, type-safe library to build HTTP API servers
 description:
     WebGear is a library to for building composable, type-safe HTTP API servers.
@@ -11,7 +11,7 @@
 bug-reports:         https://github.com/haskell-webgear/webgear/issues
 author:              Raghu Kaippully
 maintainer:          rkaippully@gmail.com
-copyright:           2023-2025 Raghu Kaippully
+copyright:           2023-2026 Raghu Kaippully
 license:             MPL-2.0
 license-file:        LICENSE
 category:            Web
@@ -71,12 +71,12 @@
   build-depends:      arrows ==0.4.*
                     , base >=4.17.0.0 && <4.22
                     , http-types ==0.12.*
-                    , insert-ordered-containers ==0.2.*
+                    , insert-ordered-containers >=0.2.0 && <0.4
                     , lens >=5.2 && <5.4
                     , mtl >=2.2 && <2.4
-                    , swagger2 >=2.8 && <2.9
+                    , swagger2 >=2.8 && <2.10
                     , text >=2.0 && <2.2
-                    , webgear-core ^>=1.5.0
+                    , webgear-core ^>=1.5.1
   ghc-options:        -Wall
                       -Wcompat
                       -Widentities
