The TrackJS Blog
Sharing our experience building maintainable software, product development, debugging, and other interesting ideas.
The TrackJS Blog
Recent Articles
-
Common Errors in Next.js Caching
Next.js caching is complex and more than a bit magical. This complexity is a source silent errors in the form of stale and incorrect data. Read more »
-
Debugging: "Failed to construct 'Request': Invalid Argument." in Edge
Nothing changed in your code. All of a sudden, a tidal wave of errors start happening for Microsoft Edge users. What the heck happened? On August 28th, 2019... Read more »
-
Error Monitoring on Client- and Server-Side in NextJS 14+
Error handling in all the places that NextJS applications can fail. Read more »
-
Catch JavaScript Errors from your Shopify Theme
Did JavaScript break my store? Monitor errors in your Shopify store with TrackJS and ensure the answer is "no"! Read more »
-
Why We Only Support JavaScript
We are unlikely to add additional language support to TrackJS. And it's not just because of our name! Read more »
-
The Dangers of Using VC Funded Companies
Learn from our mistakes: be careful when using VC funded companies as vendors or important parts of your stack. Read more »
-
5 Best Frontend Error Monitoring Tools
Compare the strengths and weaknesses for Frontend Error Monitoring tools. We'll look at the focus, features, and pricing of the top contenders so you can pic... Read more »
-
Profitability is Important
Unprofitable companies, like Flexport and Splunk, are a risk for their customers because they can radically change or close down entirely. What about TrackJS? Read more »
-
Saved Filter Notifications
Alerts and notifications have been part of TrackJS since the very beginning. Our standard notification options reflect our desire to keep things simple. Ov... Read more »
-
The State of Client-Side JavaScript Errors
As JavaScript has grown more prevalent on the web, so have JavaScript errors. Here are the top JavaScript errors from across the web, aggregated by browser, ... Read more »
-
Avoiding Ad Blockers with Forwarding Domains
Large tech companies are monetizing and exploiting customer data in increasingly unpalatable ways. It’s no surprise that users are fighting back. It’s estim... Read more »
-
Logging Errors in Web Workers
Release 3.8.0 of the TrackJS browser agent added support for Web Workers, which adds some awesome new observability to the background tasks of your web appli... Read more »
-
Hard-Won Lessons Building Maintainable Web Applications
I’ve built web applications for 15 years. Some have succeeded and flourished, others have crashed and burned. But I’ve learned some hard-won lessons along th... Read more »
-
TrackJS for Node
TrackJS works in NodeJS environments! Read more »
-
May 2020 Product Updates
The TrackJS team is hard at work polishing the product to make it even better at tracking JavaScript Errors. Here’s what we shipped this Spring. Read more »
-
Debugging Stories and Comfy Pants
There is one big advantage to us all working from home: comfy pants. No more dress code, no more business casual. You might not be wearing pants at all! Bugs... Read more »
-
Parsing Query Strings in .NET Core
We recently needed to parse and modify some query strings while building Request Metrics. Query string parsing has never been pleasant in .NET, has it im... Read more »
-
Quarantined for COVID-19
These are strange and interesting times. Our best wishes to all the developers and communities around the world affected by the COVID-19 epidemic. Read more »
-
Building Request Metrics
We’ve been working on something big. We’re building Request Metrics, a new service for web performance monitoring. Read more »
-
January 2020 Product Updates
The TrackJS team is hard at work polishing the product to make it even better at tracking JavaScript Errors. Here’s what we shipped in January. Read more »
-
A New Look for TrackJS
It’s a new year and TrackJS has a new look. It’s smaller, it’s simpler, and it feels friendly–just like TrackJS. These minor refinements to our brand do a b... Read more »
-
November-December 2019 Product Updates
Two months in one! We’re wrapping things up for the year, but wanted to give you all an update on all the great things we’ve shipped in the closing of 2019: Read more »
-
Powerful Ignore Rules for Noisy JavaScript Errors
Ignoring noisy and external errors is important to understanding the health of your client-side applications. Third-party scripts, user extensions, content c... Read more »
-
October 2019 Product Updates
We’ve got a big update about to launch for Ignore rules, but we still had some time to improve the little things last month. Here are all the things we launc... Read more »
-
A Dumpster-Fire Alert for Your JavaScript Errors
Do you work with an app that’s a dumpster-fire of errors? Wishing for an appropriate alert when you need to fight down the flames? Look no further friend. To... Read more »
-
The Ongoing State of JavaScript Errors
Today, we’re releasing TrackJS Global Error Statistics to the public. This aggregated production data is a useful measure of the state of client-side JavaScr... Read more »
-
What is Developer Time Worth?
It’s remarkable to me how many developers have no idea what their time is worth. I speak with a lot of developers, and when I mention my work on TrackJS, I f... Read more »
-
September 2019 Product Updates
The TrackJS team was hard at working pushing out new features and improving UI responsiveness. Here are all the things we launched: Read more »
-
Faster Elasticsearch Query Performance
We store all of our JavaScript error data in a large Elasticsearch cluster. This lets our customers slice and dice their error data in realtime, and perform... Read more »
-
TrackJS Weekly Site Quality Benchmark
TrackJS gives your team visibility into how websites behave in production and the tools to understand bugs quickly. You can track your error rate over time a... Read more »
-
August 2019 Product Updates
We’re a bit light on features this month because we’re working on a new site quality report. More on that next month. In the meantime, we have some helpful a... Read more »
-
Lessons Learned From A Buggy React Upgrade
React v16 is innovative. It comes with better error handling and new features like Error Boundaries, Fragment, Portals, Lazy, Memo, a new Context API, Hooks,... Read more »
-
Best Practices on JavaScript Page Weight
Web sites continue to bloat with oversized images, custom fonts, and too much JavaScript. The huge amount of poor performing JavaScript on many sites drags d... Read more »
-
How to Correctly Wrap a JavaScript Function
Wrapping JavaScript functions lets you add common logic to functions you do not control, like native and external functions. Many JavaScript libraries, like ... Read more »
-
Remote Debugging on the Script & Style Show
Todd and David discuss tools and techniques to debug remote devices, such as phones and kiosk computers. Read more »
-
July 2019 Product Updates
The TrackJS team is hard at work streamlining the system and giving you even better tools to capture, understand, and fix the errors on the web. Here’s what ... Read more »
-
How to Avoid Ad Blocker Errors
The web is full of ads, and many users install ad blocker extensions to deal with them. But ad blocker extensions can break websites in strange and unintende... Read more »
-
Separate Your Monitoring
Your monitoring, instrumentation, and observability systems should be separated from your primary system infrastructure for resiliency and visibility. You al... Read more »
-
Metered Logging is Anti-Developer
A fictional story about software development. Sarah pulled up her LogCorp dashboard to start debugging. Customers were having sporadic issues checking out f... Read more »
-
June 2019 Product Updates
The TrackJS team is hard at work streamlining the system and giving you even better tools to capture, understand, and fix the errors on the web. Here’s what ... Read more »
-
Debugging Remote Browsers with RemoteJS
The most frustrating bug I ever fought only showed up on a remote device. I was working on an AngularJS component, and for some irritatingly-unknown reason, ... Read more »
-
Debugging: Slow Network Requests and "Cannot read property 'id' of undefined"
We understand the value of JavaScript error monitoring here at TrackJS. Consequently, we run TrackJS on all of our own web properties to log our JS errors. W... Read more »
-
May 2019 Product Updates
The TrackJS team is hard at work streamlining the system and giving you even better tools to capture, understand, and fix the errors on the web. Here’s what ... Read more »
-
When to Fix JavaScript Errors
The web has a lot of background radiation: known errors, unsupported browsers, unstable networks, and misbehaving plugins all create noise. How do you sift t... Read more »
-
Building TrackJS Filters: React without the SPA
We recently released a significant update to the way users filter and explore their error data. I want to discuss how we built it, the tools we used, and how... Read more »
-
April 2019 Product Updates
The TrackJS team is hard at work streamlining the system and giving you even better tools to capture, understand, and fix the errors on the web. Here’s what ... Read more »
-
TrackJS Filters: Find Important Errors Before Your Users Do
Dealing with noise is the biggest problem in client-side error monitoring. Read more »
-
Site Search with JavaScript - Part 2
Last week, I wrote “Adding Search to Your Site With JavaScript” over on David Walsh’s blog. It covered the basics of how we added search to the TrackJS Docs ... Read more »
-
February 2019 Product Updates
The TrackJS team is hard at work streamlining the system and giving you even better tools to capture, understand, and fix the errors on the web. Here’s what ... Read more »
-
January 2019 Product Updates
We didn’t release much in January because we’re working on a couple of “big things” that I think you’ll really love. More on that next month. Still, we polis... Read more »
-
December 2018 Product Updates
We took things easy over the holidays, changing things less frequently than normal. We hope you all had a happy and relaxing end of year. Still, we finished ... Read more »
-
The Event Stream Debacle
Unless you were hiding under a rock, you probably heard about the “event-stream situation” on NPM this week. TLDR: the original maintainer of the event-strea... Read more »
-
November 2018 Product Updates
The TrackJS team is hard at work streamlining the system and giving you even better tools to capture, understand, and fix the errors on the web. Here’s what ... Read more »
-
Debugged: Debugging Empty String
Empty String. An infuriatingly vague error message that leaves few clues about what’s going wrong. A customer recently experienced a lot of these, and asked ... Read more »
-
Agent as a Module
We recently released a new version of the TrackJS agent as a JavaScript module. This change was often-requested and long-overdue. It will make it way easier ... Read more »
-
Application Versions
These days it’s common to release new versions of a web application daily, or even multiple times a day. At any given time there could be multiple versions ... Read more »
-
October 2018 Product Updates
The TrackJS team is hard at work streamlining the system and giving you even better tools to capture, understand, and fix the errors on the web. Here’s what ... Read more »
-
Goodbye {Track:js}. Hello TrackJS!
{Track:js} is gone. The name is anyway. We’ve removed the last vestiges of it, and we are now TrackJS. Hello! The name change has been part of a larger rebr... Read more »
-
Moving to Mailgun
At TrackJS we pride ourselves on our pragmatic approach to software development. We’re cautious of making changes - every change must be weighed not only by... Read more »
-
Thriving Small
TrackJS is a small software business, and a really successful one in my opinion. We get to help developers all over the world, at companies big and small, un... Read more »
-
Adding Value
I recently appeared on Dave Rael’s Developer on Fire podcast. The show focuses less on technical minutiae and more on the developer as a person, and their a... Read more »
-
The Siren Song of Component Libraries
Large web applications are almost always built by multiple teams. When the scope or scale of an application grows, there’s just no way a single team can be ... Read more »
-
Impermanent UIs: the Fleeting Frontend
“The only thing constant is change.” A silly platitude, but if you’re a frontend developer you can empathize. If it’s not JavaScript frameworks that are ch... Read more »
-
Backwards Compatibility
I built my first website in 1995. It was a simple affair consisting of markup I wrote with notepad.exe. Deployment involved FTPing the files to GeoCities. ... Read more »
-
Error Status
The ability to set the status of an error is our most commonly requested feature. Customers want to mark errors as fixed, or one team member wants to let th... Read more »
-
Search Improvements
One of our biggest challenges is helping customers make sense of their JavaScript errors. Web applications produce a staggering number of errors, but not al... Read more »
-
Even Better JavaScript Error Reports
Four years ago, we launched TrackJS as A Better Way to Track JavaScript Errors and introduced developers to the Telemetry Timeline. Many JavaScript errors ar... Read more »
-
Common Redux Bugs
Redux is an amazing JavaScript library that has become mainstream because of its simplicity, tiny 2kb size, and excellent documentation. Redux assists develo... Read more »
-
Learning from GitLab: Making Production Obvious
We recently took some time to take stock of our practices and procedures following the outage at GitLab. The GitLab outage started when a developer made the ... Read more »
-
Adventures in Elm
Error handling and debugging in Elm applications. Read more »
-
New Feature: Error Groupings
It’s common to have JavaScript error messages that are almost identical, but differ by a url segment or identifier. These can be noisy, creating dozens (or h... Read more »
-
Internet Explorer 11 Crash on JSON.stringify
Internet Explorer 11 crashes when JSON.stringify is called on an HTMLFormElement that contains duplicate named inputs. This is particularly concerning becaus... Read more »
-
Analyzing JavaScript Errors and Browser Updates
Our friends at ZingChart asked to do some data crunching on some of our data. They wanted to understand if evergreen browser releases impacted error rates ov... Read more »
-
Debugging JavaScript in Production
The web is a hostile place and our JavaScript apps will inevitably break. Browser changes, invasive plugins, unstable networks, or just plain bugs—something ... Read more »
-
What's new in TrackJS?
We’ve been busy building new features and wanted to take a few minutes to highlight some of them. Often we’ll soft launch a feature without much fanfare to ... Read more »
-
TrackJS × 3 Event
TrackJS turned three! It’s been amazing to help you build better JavaScript apps and pushing the boundaries of the web. We’ve learned so much from you all an... Read more »
-
[Video] Highly-Effective JavaScript Developers
A few weeks ago, I was at the NDC Oslo conference and I met some amazing folks. The videos are online from NDC Now and I wanted to share this one from Jonath... Read more »
-
Tracker TypeScript Definitions
We just released a TypeScript Definition file for our tracker! I know that many of you use and love Typescript. I must admit, I have been skeptical that it w... Read more »
-
Monitoring JavaScript Memory
I was chatting with Dominik Kundel from Twilio, who had built a cool application to manage the coffee lines at NDC Oslo. You could SMS your order in and they... Read more »
-
Tracking Unhandled Promise Rejections
Ever since jQuery introduced deferreds, developers have used promises to manage asynchronous control flow. (I know, I know, promises pre-date jQuery, but tha... Read more »
-
[Video] Fast and Resilient Web Apps
The videos from Google I/O 2016 are online and there is some great content there. My favorite so far is this one from Ilya Grigorik on resilient web applicat... Read more »
-
Sharing Error Reports
A few weeks ago, we quietly released the ability for your to share your error reports publicly. We think this is really powerful, because it allows you to sp... Read more »
-
Debugged: "nsresult: 0x805e0006" on Firefox
In Mozilla Firefox, a request to load an external origin was attempted and externally blocked. The request could have been canceled by a browser extension, s... Read more »
-
The Perils of Loading External JavaScript
Loading external JavaScript is like waiting until runtime to compile an external dependency. A lot can go wrong. It’s difficult to escape the need to load ex... Read more »
-
[Video] JavaScript Forensics
Over the past year, I’ve been touring software conferences and sharing some techniques for finding and debugging some of the most common errors on the web wi... Read more »
-
JavaScript Debugging with Sourcemaps
With the proliferation of JavaScript transpilers, sourcemaps have become an integral part of the front-end development. If you’re using Angular 2, React, Om... Read more »
-
Announcing TrackJS Ignore
We’re happy to announce TrackJS Ignore Rules. The web is a noisy place, and you need tools to filter out the messages and browsers that you don’t care about.... Read more »
-
Googlebot's JavaScript Indexing Doesn't Matter (Yet)
Until recently, a client-side web-application couldn’t care about SEO. The spiders that Google uses to index content didn’t know how to handle the complexiti... Read more »
-
Introducing Trends
One of the hardest parts of client side error tracking is giving the customer meaningful signal from a sea of noise. The internet is a hostile place, and er... Read more »
-
Crossorigin Scripts and Corporate Proxies
We recently discovered an issue with our suggested installation of the tracker client. Specifically, that we were using protocol-relative URLS and using the ... Read more »
-
Script Error: JavaScript Forensics
Script Error: The arch nemesis of JavaScript error monitoring. As soon as you start monitoring client-side problems, it emerges. It cloaks the true nature of... Read more »
-
Privacy-Enhanced Source Maps
We love exploring the latest build tools and techniques to improve our code. Crunching, minifying, and combining code can help make our applications faster, ... Read more »
-
The Bar Demo
So you’re at the bar and someone asks, “What does your software do anyway?”. How do you respond? How do you condense your technical feats into a response con... Read more »
-
Error Monitoring in Sencha ExtJS from OhmzTech
We’re thrilled to announce an official TrackJS Integration with Sencha ExtJS, developed with the good folks at OhmzTech. This simple wrapper will funnel the ... Read more »
-
Outages and Our Way Forward
We’ve had infrastructure problems lately, and I’m really sorry if they impacted you. Production monitoring helps you understand when problems are happening–b... Read more »
-
Scaling TrackJS with Elasticsearch for Fun and Profit
We’ve been using Elasticsearch here for awhile. We’re thrilled to share our experiences with them, and the larger community. We wrote up a blog post with them Read more »
-
An Apology for Our Errors
In the last few weeks, you may have seen an error trying to get to our UI. We’re really sorry about that, and we wanted to share what’s been happening and wh... Read more »
-
Debugged: "Attempted to assign to readonly property." iOS 8 TypeError
A webkit bug that shipped in iOS 8 beta 5 and appears to have been partially included in the launch of iOS 8 and 8.1 is affecting many of our customers. It d... Read more »
-
Entrepreneur 2 Entrepreneur: Todd Gardner on Bootstrapping
Todd was interviewed by Tech.mn on bootstrapping and revenue: Read more »
-
Todd Gardner from TrackJS on STL Code Cast Show
Todd Gardner was interviewed earlier in September by JJ Hammond and Gus Emery on JavaScript, the future of native, and legos. Check it out: Read more »
-
Filtering JavaScript Error Reports at Cornell
Cornell continues their series on using TrackJS by showing how they filter out noisy, unactionable errors from their reports. Read more »
-
TODO: Error Handling in EmberJS
EmberJS is an open-source JavaScript application framework, self described as “A framework for creating ambitious web applications”. In this integration, we... Read more »
-
Legitimate and Illegitimate JavaScript Errors
The Hotel School at Cornell continues to do great things with TrackJS. They’ve written up their thoughts on identifying legitimate errors that’s very interes... Read more »
-
Cornell School of Hotel Administration: “Hello TrackJS!”
The development team out at the Cornell School of Hotel Administration recently added TrackJS to their development process. Looks like we’ve done some good t... Read more »
-
TODO: Error Handling in BackboneJS
BackboneJS is an open-source JavaScript application framework, often used for single-page applications. In this integration, we’ll be using the BackboneJS TO... Read more »
-
Building the TrackJS Documentation with Daux.io
The TrackJS 1.0 documentation was terrible. It all started so simple–there wasn’t a lot in the beginning. But as we grew and handled more situations, our “on... Read more »
-
TODO: Error Handling in AngularJS
AngularJS is a popular open-source JavaScript application framework, often used for single-page applications. Let’s figure out how AngularJS handles errors a... Read more »
-
A Major Upgrade to the JavaScript Tracker
We’ve been working hard to release a major upgrade to our JavaScript tracker. Version 2.0.0 introduces several things you’ve been asking for, and some big id... Read more »
-
Hiding Noisy JavaScript Errors
One thing we’re constantly striving to maintain at TrackJS is a high signal-to-noise ratio. Logs filled with meaningless errors hide significant problems fro... Read more »
-
Searching for JavaScript Errors
We just launched some more great stuff to find and fix your errors! You have this now, log in now and check it out! Read more »
-
A Better Way to Track JavaScript Errors
JavaScript is amazing; you are building amazing and creative web applications that no-one conceived a few years ago (except maybe Jeff). But as our webapps g... Read more »