diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,8 @@
-## [_Unreleased_](https://github.com/thoughtbot/yesod-auth-oauth2/compare/v0.7.1.1...main)
+## [_Unreleased_](https://github.com/thoughtbot/yesod-auth-oauth2/compare/v0.7.1.2...main)
+
+## [v0.7.1.2](https://github.com/thoughtbot/yesod-auth-oauth2/compare/v0.7.1.1...v0.7.1.2)
+
+- Support `hoauth2-2.9`.
 
 ## [v0.7.1.1](https://github.com/thoughtbot/yesod-auth-oauth2/compare/v0.7.1.0...v0.7.1.1)
 
diff --git a/src/Network/OAuth/OAuth2/Compat.hs b/src/Network/OAuth/OAuth2/Compat.hs
--- a/src/Network/OAuth/OAuth2/Compat.hs
+++ b/src/Network/OAuth/OAuth2/Compat.hs
@@ -16,21 +16,13 @@
 import Data.ByteString.Lazy (ByteString)
 import Data.Text (Text)
 import Network.HTTP.Conduit (Manager)
-import qualified Network.OAuth.OAuth2 as OAuth2
-#if MIN_VERSION_hoauth2(2,7,0)
 import Network.OAuth.OAuth2
-    (AccessToken(..), ExchangeToken(..), OAuth2Token(..), RefreshToken(..))
-import Network.OAuth.OAuth2.TokenRequest (TokenRequestError)
-#else
-import Network.OAuth.OAuth2
-    ( AccessToken(..)
-    , ExchangeToken(..)
-    , OAuth2Error
-    , OAuth2Token(..)
-    , RefreshToken(..)
-    )
-import qualified Network.OAuth.OAuth2.TokenRequest as LegacyTokenRequest
-#endif
+  ( AccessToken (..)
+  , ExchangeToken (..)
+  , OAuth2Token (..)
+  , RefreshToken (..)
+  )
+import qualified Network.OAuth.OAuth2 as OAuth2
 import URI.ByteString
 
 #if MIN_VERSION_hoauth2(2,2,0)
@@ -38,6 +30,20 @@
 import Data.Maybe (fromMaybe)
 #endif
 
+#if MIN_VERSION_hoauth2(2,9,0)
+import Network.OAuth.OAuth2.TokenRequest (TokenResponseError)
+type Errors = TokenResponseError
+#elif MIN_VERSION_hoauth2(2,7,0)
+import Network.OAuth.OAuth2.TokenRequest (TokenRequestError)
+type Errors = TokenRequestError
+#else
+import qualified Network.OAuth.OAuth2.TokenRequest as LegacyTokenRequest
+import Network.OAuth.OAuth2 (OAuth2Error)
+type Errors = OAuth2Error LegacyTokenRequest.Errors
+#endif
+
+{-# ANN module ("HLint: ignore Use fewer imports" :: String) #-}
+
 data OAuth2 = OAuth2
   { oauth2ClientId :: Text
   , oauth2ClientSecret :: Maybe Text
@@ -45,12 +51,6 @@
   , oauth2TokenEndpoint :: URIRef Absolute
   , oauth2RedirectUri :: Maybe (URIRef Absolute)
   }
-
-#if MIN_VERSION_hoauth2(2,7,0)
-type Errors = TokenRequestError
-#else
-type Errors = OAuth2Error LegacyTokenRequest.Errors
-#endif
 
 type OAuth2Result err a = Either err a
 
diff --git a/yesod-auth-oauth2.cabal b/yesod-auth-oauth2.cabal
--- a/yesod-auth-oauth2.cabal
+++ b/yesod-auth-oauth2.cabal
@@ -1,6 +1,6 @@
 cabal-version:   1.18
 name:            yesod-auth-oauth2
-version:         0.7.1.1
+version:         0.7.1.2
 license:         MIT
 license-file:    LICENSE
 maintainer:      engineering@freckle.com
@@ -68,19 +68,19 @@
         base >=4.9.0.0 && <5,
         bytestring >=0.9.1.4,
         cryptonite >=0.25,
-        errors,
+        errors >=2.3.0,
         hoauth2 >=1.11.0,
         http-client >=0.4.0,
         http-conduit >=2.0,
         http-types >=0.8,
-        memory,
-        microlens,
-        mtl,
-        safe-exceptions,
+        memory >=0.14.18,
+        microlens >=0.4.10,
+        mtl >=2.2.2,
+        safe-exceptions >=0.1.7.0,
         text >=0.7,
-        transformers,
-        unliftio,
-        uri-bytestring,
+        transformers >=0.5.6.2,
+        unliftio >=0.2.12,
+        uri-bytestring >=0.3.2.2,
         yesod-auth >=1.6.0,
         yesod-core >=1.6.0
 
@@ -92,15 +92,15 @@
     ghc-options:      -Wall -threaded -rtsopts -with-rtsopts=-N
     build-depends:
         aeson >=0.6,
-        aeson-pretty,
+        aeson-pretty >=0.8.8,
         base >=4.9.0.0 && <5,
         bytestring >=0.9.1.4,
         containers >=0.6.0.1,
         http-conduit >=2.0,
-        load-env,
+        load-env >=0.2.1.0,
         text >=0.7,
-        warp,
-        yesod,
+        warp >=3.3.5,
+        yesod >=1.6.0.1,
         yesod-auth >=1.6.0,
         yesod-auth-oauth2
 
@@ -119,6 +119,6 @@
     ghc-options:      -Wall
     build-depends:
         base >=4.9.0.0 && <5,
-        hspec,
-        uri-bytestring,
+        hspec >=2.7.1,
+        uri-bytestring >=0.3.2.2,
         yesod-auth-oauth2
