Clientside JS error reporting services

I don't think enough developers use these currently... and are you sure your users never hit corner-case exceptions in your app?
It's certainly possible to roll your own with TraceKit and Google Analytics, these services dramatically improve the reporting side for you.

The List
bugsense.com
jslogger.com
qbaka.com
muscula.com
errorception.com
exceptionhub.com
bugsnag.com
exceptional.io 
airbrake.io 
getsentry.com  

Other:
github.com/Offbeatmammal/jsErrLog - open source
github.com/occ/TraceKit - most comprehensive stacktrace library

Update: Edited this list maybe 7 times since first published. Last updated March 2014
238
116
Jesse Heady's profile photoTomas Echeverri Valencia's profile photoOleg Khasimkhanov's profile photoPonraj Paul's profile photo
43 comments
 
This summary could certainly use more detail. I wish I could see a comparison of the dashboard and issue views from all the top 6.
 
Interesting. In my current view I see your message that ends up with "TraceKit and Google " and I couldn't understand the post =)
 
I'm using Sentry for most of my (important) personal projects. The UI and developer UX is fantastic and it's completely Open Source.
 
For what it's worth, we may not be "only" targeting JS on getsentry.com, but we've worked very hard to have top-notch support (and I'd argue, the best support). A lot of effort was put into standardizing stack traces, fully supporting source maps, etc.

Our client is also built on TraceKit (though TraceKit still isnt as good as it could be, and +Matt Robenolt did a lot of work to try and push it further).
 
Last time I tried this we got a huge amount of "false" exceptions reported due to junky third party extensions raising errors. Anyone else run into that?

 
+Jonathan del Strother It's very common, and very hard to deal with (especially when you want to install things into window.onerror)

This is one reason why we push patching things like jQuery's event handlers, or your require.js loaders, etc, so that you can actually wrap your own code, rather than worry about whats happening out of your control.
 
Our problem is, that our costumer doesn't allow
3rd party services. Any recommendation for services that can be installed on our own servers?
 
These services are really helpful. I really really wish, though, that we could find our way to a standard way to install a global exception handler in browsers that was capable of getting a reportable stack trace. This is one of the reasons I have remained with compiled-to-javascript languages (like JSX and TypeScript) because they at least allow automatic transformation of event handlers to catch and report errors.
 
It's true. Within 24 hours I had spotted (and fixed) perhaps 4 little bugs that were adversely affecting a handful of users. (I'm using rollbar at the moment and I like it a lot. )

Yes you do get false positives from junk extensions. Hopefully your reporting tool of choice lets you ignore these. 
 
+Paul Irish, do any of these work with scripts served from a CDN with a different domain than the website's? I ask because collecting error messages and line numbers has been particularly difficult in Chrome (https://code.google.com/p/chromium/issues/detail?id=159566) and inserting try-catch statements into the code has been the most effective solution I know of.
 
I used qbaka and it wasn't too good. I reported few issues and had couple of questions but never got a response from developers.

Switched to errorception and it's so much better support-wise. Qbaka answered few months after I switched.

+Kelly Norton The error stack in `window.onerror` is in the works, but moving at snail pace :/

Webkit: https://bugs.webkit.org/show_bug.cgi?id=55092 Chromium: https://code.google.com/p/chromium/issues/detail?id=147127 Mozilla: https://bugzilla.mozilla.org/show_bug.cgi?id=355430
 
Thanks for the mention of muscula.com Paul, I'm the creator. :-)

 +Jonathan del Strother. Yes the noise is a big problem. I'm continually improving the filters. My goal has been to make it sensible to get an email on every new error - That's now possible at least on a website with 200.000 uniques a month.

+Kelly Norton Muscula actually does do automatic try-catch insertion. It's not tied to any one JS-library, but done in a vanilla way. It does not work 100% of the time, as it has to be done very lazy. But some errors actually know what event on what DOM element caused the error, and you get a "picture" of the DOM element in your log.

+James Ide I've combatted the problem with getting errors for scripts served from CDN. And Muscula does work with scripts served from CDN (all my own scripts are served from CDN). The problem with "Script error." is still there in some cases, but I filter those out so you don't get the useless noise.

Development on Muscula has been a bit slow lately - but speed will be picking up, as I have sold my other projects I was working on. So now I'm focusing 100% on Muscula.
 
I've been really disappointed with errorception on our app it really give you no insight into the error when your code is minified. Right now it's where errors got to die.
 
+Sebastian Golasch I'm also interested in a self hosted option.  We have to be careful with personal health information, so 3rd party services aren't a good fit for us.
 
I've tried most of them and I can honestly say I don't think there is a single thing that any of them do better than Sentry. Sentry also supports almost every language and you know that if you want to you can host it yourself.
 
+David Cramer thanks again for jumping into this thread. Sentry does appear to be one of the best possible choices here. Great feature set!

Also a heads up that the call stack is about to be available in window.onerror handlers in Chrome: crbug.com/147127 .. but hold tight.. You'll be seeing a post about this in more detail tomorrow.  cc +Mike West 
 
How do I get Raven to do a stacktrace? I have yet to see even one come through.
 
+Paul Irish  We have just launched {Track:js} http://trackjs.com/ a new service for this list that targets JavaScript. We approach the problem a little differently than the others.

A JavaScript error is not very helpful in a minified production case. Especially if captured from the global handler. Instead, {Track:js} captures usage data about the visitor, network, console, and environment and recreates a timeline of what happened leading up to the error.

I'd love to get your feedback on it! Shoot me an email todd@trackjs.com and I'll send you an invite link.
 
+Todd H. Gardner that looks very interesting. Indeed an error without any info on what happened before is not always useful. I sent for an invitation on the site.
 
Hi all.
I am CEO and co-founder of Qbaka. My sincere appologies to +Juriy Zaytsev for bad support experience. We used to have this problem before this summer, now we reply to all support emails within 24 hours and most questions are answered within one hour.

I do not want to advertise Qbaka here, just try it out and see the difference yourself, when you actually experience js error and see how much we do to eliminate the "noise" in error list.

Will be happy to answer your questions and discuss error monitoring approaches and what can be done to make it more effective.
Good to see other solutions here, this makes web better and more clean of errors, at the end this is the only thing that matters.
David B
+
1
2
1
 
+1 on the support experience.
 
It seems that of 3-4 services that do support Sourcemaps only rollbar allows uploading of unminified sources. The other ones expect you to make sources publicly accessible
 
We are also working on a an open source library, it has some cool features such as adding custom properties to your error reports and storing them inside local storage and sending them back to the server. 

https://github.com/PersiaBME/errortracker
 
I developed a Chrome extension that allows using keyboard shortcuts  in Gmail:
https://chrome.google.com/webstore/detail/quicktext-for-chrome/lmcngpkjkplipamgflhioabnhnopeabf?hl=en

I wanted to catch errors that actually mean something to me (bugs from my extension, not gmail errors in general). I tested these services:

trackjs.com
bugsense.com
bugsnag.com
errorception.com
getsentry.com

The winner for me was Sentry. I'm guessing that it's because they use TraceKit which is awesome! Trackjs was good too, but my problem was with their UI - could be improved I guess.

The rest.. didn't really work for me. Bugsnag has some Cors issues I couldn't figure out. Bugsense didn't give me a stacktrace like Sentry and Trackjs does. Errorception couldn't even integrate it, not exactly easy to do for my case.  

One minus for Sentry is that I have to use that ugly, try/catch thing for each function I have. Raven.wrap doesn't work for some reason. I'll submit a report though, maybe I'm using it wrong. 
 
Hey I would love your feedback on the Gmail-related issues you had using Bugsense. Also, I agree it does seem that Sentry is the best all around tool for browsers. Our products are more ideal for mobile usage. If you have any interest on hybrid apps you can ping me anytime 
 
+Dimitris Tsironis I use Bugsense with a paid account for a few mobile apps (iOS + Android) for better part of a year and it's the best product I used so far for that.

The problem I encountered with the js reporting was the absence of a real traceback. I just got the classic "Script Error" where sentry and trackjs gave me the full traceback with the source and context included.
 
There is an active discussion in this thread https://github.com/bugsense/bugsense.js/issues/16 and you should share your experience.

In general, the philosophy around our SDKs is to interfere with your code as little as possible. window.onerror event handler can be pretty mystic and a pain but it's the only solution for now, if you don't want to wrap every function (correct if I'm wrong).

Finally, our SDK is open source so if you have any contribution available we would love PR on Github. And of course, feedback is always welcome!
 
hey +Alex Plugaru , I'm with TrackJS. Can you share your thoughts about our UI? What was lacking for you? Any suggestions on what we can do better?

Feel free to email me, todd at trackjs.com
Add a comment...