bugsnag: Bugsnag error reporter for Haskell

[ library, mit, web ] [ Propose Tags ]

Please see README.md

[Skip to Readme]


Automatic Flags

Build the examples


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS],,
Change log CHANGELOG.md
Dependencies aeson (>=, annotated-exception (>=, base (>=4.11.0 && <5), bugsnag, bugsnag-hs (>=, bytestring (>=, containers (>=, Glob (>=0.9.0), http-client (>=0.5.14), http-client-tls (>=, parsec (>=, template-haskell (>=, text (>=, th-lift-instances (>=0.1.11), ua-parser (>=, unliftio (>=, unordered-containers (>= [details]
License MIT
Author Patrick Brisbin
Maintainer pbrisbin@gmail.com
Category Web
Home page https://github.com/pbrisbin/bugsnag-haskell#readme
Uploaded by PatrickBrisbin at 2023-12-11T19:44:08Z
Distributions LTSHaskell:, NixOS:, Stackage:
Reverse Dependencies 3 direct, 0 indirect [details]
Executables example-simple, example-cli
Downloads 410 total (18 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2023-12-11 [all 1 reports]

Readme for bugsnag-

[back to package description]

Bugsnag error reporter for Haskell

Hackage Stackage Nightly Stackage LTS

Catch exceptions in your Haskell code and report then to Bugsnag.


let settings = defaultSettings "A_BUGSNAG_API_KEY"

Manual Reporting

Data.Bugsnag.Exception is the type of actual exceptions included in the event reported to Bugsnag. Constructing it directly can be useful to attach the current source location as a stack frame.

  ex = defaultException
    { exception_errorClass = "Error"
    , exception_message = Just "message"
    , exception_stacktrace = [$(currentStackFrame) "myFunction"]

In order to treat it like an actual Haskell Exception (including to report it), wrap it in AsException:

notifyBugsnag settings $ AsException ex

Catching & Throwing

Catch any exceptions, notify, and re-throw:

myFunction `withException` notifyBugsnag @SomeException settings

Throw a manually-built exception:

throwIO $ AsException ex


Examples can be built locally with:

stack build --flag bugsnag:examples


We depend on bugsnag-hs to define the types for the full reporting API payload. Unfortunately, it exposes them from its own Network.Bugsnag module, which conflicts with ourselves.

To get around this, we re-export that whole module as Data.Bugsnag. If you are currently depending on bugsnag-hs and wish to use our package too, we recommend you only depend on us and use its types through the Data.Bugsnag re-export.