diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,16 @@
-## [_Unreleased_](https://github.com/pbrisbin/bugsnag-haskell/compare/bugsnag-yesod-v1.0.0.1...main)
+## [_Unreleased_](https://github.com/pbrisbin/bugsnag-haskell/compare/bugsnag-yesod-v1.0.1.0...main)
 
 - None
+
+## [v1.0.1.0](https://github.com/pbrisbin/bugsnag-haskell/compare/bugsnag-yesod-v1.0.0.1...v1.0.1.0)
+
+- Adds support for `annotated-exception`
+
+  The Bugsnag middleware avoids catching `HandlerContents`, because this particular
+  exception represents Yesod control flow, not an exception that needs to be reported.
+  With this change, it also avoids catching `AnnotatedException HandlerContents`.
+  This preserves the correct behavior even if the `HandlerContents` exception ended
+  up being rethrown by one of the utilities in the `annotated-exception` package.
 
 ## [v1.0.0.1](https://github.com/pbrisbin/bugsnag-haskell/compare/bugsnag-yesod-v1.0.0.0...bugsnag-yesod-v1.0.0.1)
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,5 +1,10 @@
 # Yesod integration for Bugsnag
 
+[![Hackage](https://img.shields.io/hackage/v/bugsnag-yesod.svg?style=flat)](https://hackage.haskell.org/package/bugsnag-yesod)
+[![Stackage Nightly](http://stackage.org/package/bugsnag-yesod/badge/nightly)](http://stackage.org/nightly/package/bugsnag-yesod)
+[![Stackage LTS](http://stackage.org/package/bugsnag-yesod/badge/lts)](http://stackage.org/lts/package/bugsnag-yesod)
+
+
 ## Examples
 
 - [Yesod/Warp](./example/Main.hs)
diff --git a/bugsnag-yesod.cabal b/bugsnag-yesod.cabal
--- a/bugsnag-yesod.cabal
+++ b/bugsnag-yesod.cabal
@@ -1,6 +1,6 @@
 cabal-version:   1.18
 name:            bugsnag-yesod
-version:         1.0.0.1
+version:         1.0.1.0
 license:         MIT
 license-file:    LICENSE
 maintainer:      pbrisbin@gmail.com
@@ -33,6 +33,7 @@
         TypeApplications TypeFamilies
 
     build-depends:
+        annotated-exception >=0.2.0.2,
         base >=4.11.0 && <5,
         bugsnag >=1.0.0.1,
         bugsnag-wai >=1.0.0.1,
@@ -57,7 +58,7 @@
     build-depends:
         base >=4.11.0 && <5,
         bugsnag >=1.0.0.1,
-        bugsnag-yesod -any,
+        bugsnag-yesod,
         warp >=3.2.25,
         yesod-core >1.6
 
diff --git a/src/Network/Bugsnag/Yesod.hs b/src/Network/Bugsnag/Yesod.hs
--- a/src/Network/Bugsnag/Yesod.hs
+++ b/src/Network/Bugsnag/Yesod.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE AllowAmbiguousTypes #-}
+
 -- | A 'yesodMiddleware' that notifies Bugsnag of exceptions
 --
 -- 'yesodMiddleware' is the only way to handle things as actual exceptions. The
@@ -15,13 +17,16 @@
 
 import Prelude
 
+import Control.Exception.Annotated (AnnotatedException)
 import Control.Monad (unless)
 import Control.Monad.IO.Class (liftIO)
 import Data.Bugsnag.Settings
+import Data.Maybe (isJust)
 import Network.Bugsnag
 import Network.Bugsnag.Wai
 import qualified Network.Wai as Wai
-import UnliftIO.Exception (SomeException, fromException, withException)
+import UnliftIO.Exception
+    (Exception, SomeException, fromException, withException)
 import Yesod.Core (forkHandler, getsYesod, waiRequest)
 import Yesod.Core.Types (HandlerContents, HandlerFor)
 
@@ -45,6 +50,8 @@
             $ notifyBugsnagWith (mkBeforeNotify request) settings ex
 
 isHandlerContents :: SomeException -> Bool
-isHandlerContents ex = case (fromException ex :: Maybe HandlerContents) of
-    Just _ -> True
-    Nothing -> False
+isHandlerContents ex =
+    is @HandlerContents ex || is @(AnnotatedException HandlerContents) ex
+
+is :: forall e . Exception e => SomeException -> Bool
+is = isJust . fromException @e
