diff --git a/github-release.cabal b/github-release.cabal
--- a/github-release.cabal
+++ b/github-release.cabal
@@ -1,7 +1,7 @@
-cabal-version: >= 1.10
+cabal-version: 2.0
 
 name: github-release
-version: 1.3.7
+version: 1.3.8
 
 synopsis: Upload files to GitHub releases.
 description: GitHub Release uploads files to GitHub releases.
@@ -20,7 +20,7 @@
   autogen-modules: Paths_github_release
   build-depends:
     base >= 4.13.0 && < 4.16
-    , aeson >= 1.4.7 && < 1.6
+    , aeson >= 1.4.7 && < 1.6 || >= 2.0.0 && < 2.1
     , burrito >= 1.2.0 && < 1.3
     , bytestring >= 0.10.10 && < 0.12
     , http-client >= 0.6.4 && < 0.8
diff --git a/src/lib/GitHubRelease.hs b/src/lib/GitHubRelease.hs
--- a/src/lib/GitHubRelease.hs
+++ b/src/lib/GitHubRelease.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE DataKinds           #-}
 {-# LANGUAGE DeriveGeneric       #-}
 {-# LANGUAGE ExplicitNamespaces  #-}
+{-# LANGUAGE OverloadedStrings   #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeOperators       #-}
 
@@ -124,7 +125,7 @@
 release aToken anOwner aRepo aTag aTitle aDescription aPreRelease aDraft = do
   manager <- Client.newManager TLS.tlsManagerSettings
   (owner', repo') <- getOwnerRepo anOwner aRepo
-  let format = "https://api.github.com/repos/%s/%s/releases"
+  let format = "https://api.github.com/repos/%s/%s/releases" :: String
   let
     url :: String
     url = Printf.printf format owner' repo'
@@ -162,7 +163,7 @@
 
 instance Aeson.FromJSON GHRelease where
   parseJSON = Aeson.withObject "GHRelease" $ \ obj -> GHRelease
-    <$> obj Aeson..: Text.pack "assets"
+    <$> obj Aeson..: "assets"
 
 data GHAsset = GHAsset
   { ghAssetName :: String
@@ -171,8 +172,8 @@
 
 instance Aeson.FromJSON GHAsset where
   parseJSON = Aeson.withObject "GHAsset" $ \ obj -> GHAsset
-    <$> obj Aeson..: Text.pack "name"
-    <*> obj Aeson..: Text.pack "url"
+    <$> obj Aeson..: "name"
+    <*> obj Aeson..: "url"
 
 getUploadUrl
   :: Client.Manager
@@ -219,7 +220,7 @@
   -> String
   -> IO (Either String a)
 getTag manager aToken anOwner aRepo aTag = do
-  let format = "https://api.github.com/repos/%s/%s/releases/tags/%s"
+  let format = "https://api.github.com/repos/%s/%s/releases/tags/%s" :: String
   let
     url :: String
     url = Printf.printf format anOwner aRepo aTag
@@ -239,7 +240,7 @@
 userAgentHeader = (HTTP.hUserAgent, BS8.pack userAgent)
 
 userAgent :: String
-userAgent = Printf.printf "%s/%s-%s" "tfausak" "github-release" versionString
+userAgent = Printf.printf "%s/%s-%s" ("tfausak" :: String) ("github-release" :: String) versionString
 
 versionString :: String
 versionString = Version.showVersion This.version
@@ -295,11 +296,11 @@
 mkRelease manager url aToken aTag aTitle aDescription aPreRelease aDraft = do
   initialRequest <- Client.parseRequest url
   let requestObject = object
-            [ Text.pack "tag_name" .= aTag
-            , Text.pack "name"  .= aTitle
-            , Text.pack "body" .= maybe "" id aDescription
-            , Text.pack "prerelease" .= maybe False id aPreRelease
-            , Text.pack "draft" .= maybe False id aDraft
+            [ "tag_name" .= aTag
+            , "name"  .= aTitle
+            , "body" .= maybe "" id aDescription
+            , "prerelease" .= maybe False id aPreRelease
+            , "draft" .= maybe False id aDraft
             ]
   let request =
         initialRequest
