Cloud logging for JavaScript

Getting on top of those JavaScript errors

Web Application Monitoring

Client-side logging brings the great error management platform from the server, directly into the user's browser. All uncaught errors are automatically picked up and enriched with detailed information about the environment. Everything is shipped to elmah.io, where notifications, searching, and managing errors just work.

Errors can be stored in your existing or a dedicated client-side error log. In both scenarios both email notifications as well as our integrations to Slack and Microsoft Teams works out of the box. You already set up your organization and team members, why configuring who needs notifications on client-side errors, requires a few mouse clicks only.

Having both the client and the server's perspective will reduce the time you need to spend on bug fixing. Time that you will be able to spend on adding new features to your now zero-known-bugs product.

Log events from the browser

Chances are that you are already using some kind of logging framework like log4net, NLog, or Serilog on your server. Ever missed having the same possibilities on the client? With elmah.io's client-side logging, logging everything from verbose to fatal messages, is possible using our native JavaScript client.

Log with the Elmahio logger using verbose, debug, information, warning, error and fatal, with or without a JavaScript Error object. Set captureConsoleMinimumLevel and the calls you already make to console.error and console.warn end up in elmah.io too.

Errors grouped, every instance kept

Getting an overview of client-side errors, can be quite the pain. Take a look in the developer console when visiting your favorite websites and observe errors start to show. Browsers are experts in generating the same JavaScript errors over and over again.

With elmah.io's Smart Grouping feature, errors are bundled in groups, showing you the unique errors happening and the severity of each error. Unlike similar products out there, elmah.io logs every single error. This makes debugging a lot easier since you can browse through each error instance within a group, rather than looking at a simple counter.

See which device and browser failed

With elmah.io's Device Insights, you will receive detailed information about the environment generating the error. Being able to see if an error is generated from a desktop or mobile browser and even the orientation of the screen, will make it a lot easier to re-create an error.

Every message carries the URL of the page, the user agent, the language and the color depth of the screen, together with the cookies and query string of the request. That is often enough to see why an error only happens for some users.

Device Insights

Stack traces you can read Octopus Deploy GitHub Azure DevOps

You are already following good practices by bundling and minifying your scripts. While browsers will love you for doing that, the errors generated by your application won't. Bundled and minified stack traces, make it impossible to find the actual line of code causing an error.

With elmah.io for JavaScript, we automatically de-minify and de-bundle your stack traces, giving you a fair chance of spotting exactly where an error happened. By supporting de-minification through JavaScript Source Maps, we allow you to use whatever bundling and minification tool you like. No need to add additional tools to your build chain.

JavaScript Source Maps can either be deployed with your web application or uploaded to elmah.io to avoid revealing information about your original JavaScript and/or to reduce the size of the deployed package.

Let your AI agent read your JavaScript errors

Connect Claude Code, Cursor, VS Code or Visual Studio to the elmah.io MCP server. Your agent can list new errors, read the stack trace and message details, check what changed after a deployment, and mark an error as fixed when you ask.

Example conversation:

You: Which JavaScript errors started after my latest deployment?

Agent: One new error group since 3.2.0 was deployed 25 minutes ago: a TypeError in checkout.js, 64 occurrences, all in Safari. The stack trace points to line 112.

In Claude Code, add the server with one command:

claude mcp add --transport http --client-id claudecode elmahio https://mcp.elmah.io/mcp

The MCP server is included on every plan and is currently in beta. Set up the MCP server.

Frequently asked questions

Does it work with React, Angular, Vue and SvelteKit?

Yes. elmah.io.javascript works with any framework. There are step-by-step guides for React, Angular, Vue and SvelteKit.

The key is visible in the browser, so use one with the messages_write permission only. It can then only send messages to your log, and you can revoke it if someone starts misusing it.

Publish a source map next to your minified file, or upload it to elmah.io. elmah.io.javascript then translates the stack trace back to your own code. Read about source maps.

Yes. Initialize the Elmahio logger in code and call methods like logger.error(...) or logger.information(...). You can also capture console output with the captureConsoleMinimumLevel option.

Yes. Connect the elmah.io MCP server to Claude Code, Cursor, VS Code or Visual Studio. It is included on every plan and is currently in beta.

Get started with elmah.io
elmah.io is the easy error logging and uptime monitoring service for .NET. Take back control of your errors with support for all .NET web and logging frameworks.
Start logging now
Free 21-day trial No credit card required