diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,8 +1,13 @@
 # Changelog for yesod-cursor
 
-## [Unreleased](https://github.com/freckle/yesod-page-cursor/compare/v2.0.0.9...main)
+## [Unreleased](https://github.com/freckle/yesod-page-cursor/compare/v2.0.0.10...main)
 
 - None
+
+## [v2.0.0.10](https://github.com/freckle/yesod-page-cursor/compare/v2.0.0.9...v2.0.0.10)
+
+- Support aeson-2.0
+- Compile with more GHCs on CI
 
 ## [v2.0.0.9](https://github.com/freckle/yesod-page-cursor/compare/v2.0.0.8...v2.0.0.9)
 
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -16,6 +16,7 @@
 import Data.List (find)
 import Data.Maybe (fromMaybe)
 import Data.Scientific (Scientific)
+import Data.String (IsString(..))
 import Data.Text (Text, pack, unpack)
 import Data.Text.Encoding (decodeUtf8)
 import Data.Time (getCurrentTime)
@@ -245,14 +246,17 @@
   body <- getBody
   body ^.. _Array . traverse . key "key" . _Number `shouldBe` expectedKeys
 
-getLink :: HasCallStack => Text -> YesodExample site Text
+getLink :: HasCallStack => String -> YesodExample site Text
 getLink rel =
-  fromMaybe (error $ "no " <> unpack rel <> " in JSON response") <$> mayLink rel
+  fromMaybe (error $ "no " <> rel <> " in JSON response") <$> mayLink rel
 
-mayLink :: Text -> YesodExample site (Maybe Text)
+mayLink :: String -> YesodExample site (Maybe Text)
 mayLink rel = do
   body <- getBody
-  pure $ body ^? key rel . _String
+
+  -- Using fromString so we can deal with aeson-2.0 without CPP. fromString will
+  -- give us a Text (aeson-1.x) or  a Key (aeson-2.0) as appropriate.
+  pure $ body ^? key (fromString rel) . _String
 
 getLinkViaHeader :: HasCallStack => Text -> YesodExample site Text
 getLinkViaHeader rel =
diff --git a/yesod-page-cursor.cabal b/yesod-page-cursor.cabal
--- a/yesod-page-cursor.cabal
+++ b/yesod-page-cursor.cabal
@@ -1,16 +1,16 @@
-cabal-version:      1.12
-name:               yesod-page-cursor
-version:            2.0.0.9
-license:            MIT
-license-file:       LICENSE
-copyright:          2020 Renaissance Learning Inc
-maintainer:         engineering@freckle.com
-author:             Freckle Engineering
-homepage:           https://github.com/freckle/yesod-page-cursor#readme
-bug-reports:        https://github.com/freckle/yesod-page-cursor/issues
-description:        Cursor based pagination for Yesod
-build-type:         Simple
-extra-source-files:
+cabal-version:   1.18
+name:            yesod-page-cursor
+version:         2.0.0.10
+license:         MIT
+license-file:    LICENSE
+copyright:       2020 Renaissance Learning Inc
+maintainer:      engineering@freckle.com
+author:          Freckle Engineering
+homepage:        https://github.com/freckle/yesod-page-cursor#readme
+bug-reports:     https://github.com/freckle/yesod-page-cursor/issues
+description:     Cursor based pagination for Yesod
+build-type:      Simple
+extra-doc-files:
     README.md
     ChangeLog.md
 
@@ -28,15 +28,15 @@
     other-modules:    Paths_yesod_page_cursor
     default-language: Haskell2010
     build-depends:
-        aeson >=1.5.6.0,
+        aeson >=1.3.1.1,
         base >=4.7 && <5,
-        bytestring >=0.10.12.0,
-        containers >=0.6.2.1,
-        http-link-header >=1.2.0,
-        network-uri >=2.6.4.1,
-        text >=1.2.3.2,
-        unliftio >=0.2.18,
-        yesod-core >=1.6.20.2
+        bytestring >=0.10.8.2,
+        containers >=0.5.11.0,
+        http-link-header >=1.0.3.1,
+        network-uri >=2.6.1.0,
+        text >=1.2.3.1,
+        unliftio >=0.2.9.0,
+        yesod-core >=1.6.9
 
 test-suite yesod-page-cursor-test
     type:             exitcode-stdio-1.0
@@ -49,27 +49,27 @@
     default-language: Haskell2010
     ghc-options:      -threaded -rtsopts -with-rtsopts=-N
     build-depends:
-        aeson >=1.5.6.0,
+        aeson >=1.3.1.1,
         base >=4.7 && <5,
-        bytestring >=0.10.12.0,
-        hspec >=2.7.10,
+        bytestring >=0.10.8.2,
+        hspec >=2.5.5,
         hspec-expectations-lifted >=0.10.0,
-        http-link-header >=1.2.0,
-        http-types >=0.12.3,
-        lens >=4.19.2,
-        lens-aeson >=1.1.1,
-        monad-logger >=0.3.36,
+        http-link-header >=1.0.3.1,
+        http-types >=0.12.2,
+        lens >=4.16.1,
+        lens-aeson >=1.0.2,
+        monad-logger >=0.3.30,
         mtl >=2.2.2,
-        persistent >=2.13.1.1,
-        persistent-sqlite >=2.13.0.3,
-        persistent-template >=2.12.0.0,
-        scientific >=0.3.7.0,
-        text >=1.2.3.2,
-        time >=1.9.3,
-        unliftio >=0.2.18,
-        unliftio-core >=0.2.0.1,
-        wai-extra >=3.1.6,
-        yesod >=1.6.1.2,
-        yesod-core >=1.6.20.2,
+        persistent >=2.8.2,
+        persistent-sqlite >=2.8.2,
+        persistent-template >=2.5.4,
+        scientific >=0.3.6.2,
+        text >=1.2.3.1,
+        time >=1.8.0.2,
+        unliftio >=0.2.9.0,
+        unliftio-core >=0.1.2.0,
+        wai-extra >=3.0.24.3,
+        yesod >=1.6.0,
+        yesod-core >=1.6.9,
         yesod-page-cursor -any,
-        yesod-test >=1.6.12
+        yesod-test >=1.6.5.1
