TrackJS vs Rollbar: A Hands-On Error Tracking Comparison for 2026

Stanley Ulili
Updated on November 8, 2026

A failed checkout in my test app produced two errors: a 500 in the browser and the coupon crash on the server that caused it. TrackJS joined them with one link on the failing request. Rollbar received both into the same project and gave me no way to walk from one to the other.

Then I marked that coupon bug fixed and shipped it again. Rollbar reopened it and named the version and the deploy it suspected. TrackJS kept calling it Fixed while the count climbed.

Those two moments sum up the comparison. TrackJS watches the browser first, adding a small server agent, a step-by-step record of each visit and an AI that reads every error. Its bill follows page views.

Rollbar is built around the life of an error. It ties occurrences to versions and deploys, records browser sessions, and sells AI root cause analysis on credits. Neither tool has tracing, logs or performance monitoring.

I tested both against the same deliberately broken bookstore in late October 2026. The sections ahead cover installing each one, what they catch, how they help you debug, linking front end to back end, grouping, replay, regressions, speed, logs, alerting, AI and cost.

TrackJS vs Rollbar: Results at a glance

These calls come from my own Express and Vite setup, with everything running on localhost. Public source maps, a connected GitHub repository for Rollbar or live alert channels could change a few.

Area Better in my test Why
Setup Rollbar, narrowly TrackJS's Express handler hung failing requests; Rollbar's new project showed stale tokens
Error capture Tie Both caught every planted failure, the unhandled rejection included
Debugging an error Rollbar Saved source maps, inline replay, a curl command and value frequencies
Browser to server TrackJS A link from each request to its server error; Rollbar has none
Error grouping Mixed TrackJS split bugs by message values, Rollbar by changing stacks
Session replay Rollbar Replay on every browser error; TrackJS has none
Releases and regressions Rollbar Reopened the returning bug and named the version and deploy
Performance Neither Neither measures request timing
Logs Neither Neither stores logs
Alerts Not compared No channel connected
AI-assisted debugging Not compared Only TrackJS's AI ran; Rollbar's needs GitHub
Price Rollbar A free tier with replays and paid plans from $9 a month

How I tested TrackJS and Rollbar

The test app is a bookstore designed to go wrong. An Express API sits on SQLite, a Vite storefront switches pages by URL hash, a stand-in price service answers on the side, and a recurring job writes a sales report. Scripted shoppers in headless Chromium drove both tools through the same faults in the same code.

The faults:

  • In the browser: a wishlist click that reads a null object, and API failures the storefront reports as ApiError.
  • On the server: a crash on unrecognized coupons, a crash on nonexistent books, and orders for books that have run out.
  • Upstream: a price service that intermittently returns 503.
  • Async: a promise in the recommendations code that nobody catches, and a failing report task.
  • Held back for 1.2.0: a lookup that drags checkout down, plus a card-charge bug.

The three versions

Version What it tested
1.0.0 Installation, first errors and error pages
1.1.0 A bug marked fixed, then shipped again untouched
1.2.0 The bad release, with a sluggish checkout query and one charge in five rejected

The faulty version tested whether a tool could explain a bad release, beyond flagging its new error.

SDKs and test limitations

Platform TrackJS Rollbar
Server trackjs-node 1.3.0 rollbar 4.1.0
Browser trackjs 3.10.4 rollbar 4.1.0 with rollbar/replay
Plan Trial priced by page views Advanced trial
  • Same scope: both are error trackers without tracing, logs or performance products, so I held neither to account for those gaps.
  • Separate traffic: counts come from each tool's own runs and don't compare one to one.
  • Source maps on localhost: TrackJS can fetch maps only from public URLs, so it ran in manual mode. Rollbar took uploaded maps.
  • Older Rollbar images: four shots of Rollbar's item page are from a previous pass over this app, which is why their line numbers don't match.
  • No alert channels or repository: neither had a notifier connected, and Rollbar's AI didn't run without GitHub.

Terms in each tool

Concept TrackJS Rollbar
A group of errors Error group Item
A release Version Version, plus a reported deploy
A fixed error Fixed, a status label Resolved
Breadcrumbs Telemetry timeline Telemetry
A silenced error Ignore rule Muted, or snoozed for a time
Query tool Search and filters RQL

Setup and onboarding

Both tools put the browser and the server in one place: one TrackJS application, one Rollbar project. Each one's setup had a flaw, and TrackJS's affected the app itself.

TrackJS: A quick agent and a handler that hangs

The browser agent installs with a script tag or npm:

TrackJS install page with the agent snippet

Onboarding steps through Agent, Applications, Team and Ignore. The server agent is where things broke. Its Express handler in version 1.3.0 throws away any options, reports a 5xx and then stops, so the request never gets an answer. My adapter forwards the error itself:

src/monitoring/trackjs.js
const trackjsHandler = TrackJS.Handlers.expressErrorHandler();

app.use((err, req, res, next) => {
  let forwarded = false;
  trackjsHandler(err, req, res, () => {
    forwarded = true;
    next(err);
  });
if (!forwarded) next(err); // 1.3.0 never calls next() after a 5xx
});

Before that line, every failed checkout in my traffic timed out with no response.

Rollbar: Four steps, and tokens that didn't work

Rollbar's setup page shows one SDK at a time:

Rollbar SDK picker during onboarding

You switch with Select different SDK for the browser snippet. The server side is one constructor with captureUnhandledRejections and autoInstrument for telemetry, plus rollbar.errorHandler() as the last middleware.

My fresh project's setup snippets carried tokens belonging to an old, deleted project, so nothing I sent got through. Data only started flowing after I generated new server and client tokens in the project's settings.

Smaller onboarding quirks In TrackJS, the key is generated as you type the application name and is fixed once saved, so one slip forces you to start a new application. Rollbar's Replays setup page suggests `rollbar@3.0.0-rc.1`, an older version than the 4.1.0 I used.

Worth turning on in TrackJS: if you use trackjs-node with Express, wrap the error handler so the error always reaches next(), then test that a failing route still responds.

Setup comparison

Capability TrackJS Rollbar
Server and browser ✔: one application ✔: one project
Browser install ✔: script tag or npm ✔: npm, with a replay build
Express integration ✘: 1.3.0 hangs 5xx requests ✔: worked as documented
Tokens ✔: worked ✘: stale tokens on a new project
Source maps Public URL, or manual per error ✔: upload by API
Deploys Not offered ✔: deploy API

Verdict: Rollbar, narrowly. Its token problem stopped data until I noticed. TrackJS's handler broke the app's own error responses, which is the worse trap to find in production.

Error capture

Both hook unhandled errors in Node.js and the browser. Both caught everything, and they differ in what they add.

TrackJS: Everything, with extras

TrackJS's list held 99 errors in 29 groups after a clean run:

TrackJS errors list after a clean run

Every planted failure is there, the unhandled rejection included. TrackJS also files each failed fetch as a Network Error beside the app's own report, and turns console.error lines into errors by default. Both add rows you may want to switch off.

Rollbar: Everything, with less detail on one

Rollbar logged 11 items on the first pass, split between the API and the storefront:

Rollbar items list with server and browser items

The rejection arrived, but thinly:

Rollbar item for the unhandled rejection

It came in at Debug level, with a single frame and nothing about the request or user. There's also no badge separating handled from unhandled errors, only the level.

Capture comparison

Capability TrackJS Rollbar
Server and browser crashes ✔: reported ✔: reported
Unhandled rejection ✔: with its URL ✔: one frame, Debug level
Report job ✔: reported ✔: reported
Automatic network errors ✔: on by default ✘: app reports only
Console errors as errors ✔: on by default ✘: kept as telemetry
Handled versus unhandled Entry type such as Express or Caught Error ✘: no badge

Verdict: Tie. Neither missed a planted failure. TrackJS reports more by default, which helps a front-end team and clutters the list for everyone else.

Debugging an error

The test of an error page is how fast it gets you from the crash to the line that caused it. Here, saved source maps and recordings made the difference.

TrackJS: A timeline worth reading

Every TrackJS browser error carries a telemetry timeline:

TrackJS browser error with its telemetry timeline

It lists clicks with the element's HTML, hash navigations, fetches with status and duration, and console lines, in order. Errors on Page jumps between every error from the same load, and Time On Page gives the visitor's session length.

Source maps are where it falls short off a public host. TrackJS couldn't fetch my localhost scripts, and a map dropped on the stack trace applied only until I reloaded:

TrackJS wishlist error after dropping the source map

On server errors, TrackJS shows the file and line with no code and no request body. The timeline mixes this request's steps with console lines from earlier.

Rollbar: Recordings, request replays and value counts

Open a Rollbar browser error and you get mapped frames, with the visitor's session underneath:

Rollbar browser error with source maps and the replay panel

The Session replay & telemetry panel plays the visit, with each network call and click in its event list:

Rollbar replay player and event list

On the server, Rollbar has two tools I didn't find in TrackJS. A Typicality column says how common each value is across occurrences:

Rollbar params with the Typicality column

Seeing bookId at 74% tells you it's part of the pattern. Separately, Replay CURL gives you a terminal command that fires the same request again:

Rollbar Replay CURL command

Its server telemetry has the same weakness as TrackJS's, holding console lines and calls from other requests.

Debugging comparison

Capability TrackJS Rollbar
Maps for private builds Dropped in per view, gone after refresh ✔: uploaded once
Session replay ✘: not offered ✔: inline on the error
Browser timeline ✔: detailed, with durations ✔: telemetry and replay events
Backend source ✘: location only ✘: location only
Backend trail Mixed: older console lines mixed in Mixed: shared across requests
How common each value is ✘: not observed ✔: Typicality
Repeat the request ✘: not observed ✔: Replay CURL

Verdict: Rollbar. Saved source maps and a replay on every browser error beat a timeline you read alone. TrackJS's timeline is still the clearest text record of a visit, and it shows Time On Page, which Rollbar doesn't.

From the browser to the server

A failed request in the browser usually has a cause on the server. Only one of these tools connects the two.

Every network call in a TrackJS timeline carries a jump to whatever the server reported for it:

TrackJS checkout fetch with the Server Errors Occurred link

A shared ID travels from the server agent to the browser agent in a response header. Following it from the broken checkout took me to the coupon crash:

TrackJS server coupon error opened from the browser link

The link appears on every fetch, including successful ones, so a few clicks end on an empty page.

Inside a Rollbar recording, events point to other browser items from that visit:

Rollbar replay events linking to another browser item

They never reach the server. A browser ApiError and the server crash behind it stay separate items, and the Related tab only matches similar titles.

Browser-to-server comparison

Capability TrackJS Rollbar
Browser request to server error ✔: correlation link ✘: not offered
Items from the same session ✔: Errors on Page ✔: linked in replay
Server timing ✘: not recorded ✘: not recorded

Verdict: TrackJS. It turned a failed fetch into its server cause in one click. In Rollbar, you match the two items by time.

Rollbar keeps browser and server items apart, and TrackJS's link lands on a server error without any timing for the work behind it. Better Stack showed one storefront visit from my test as a single view spanning browser and server:

Better Stack timeline joining storefront and API spans

The 30 frontend spans sit directly above the 7 backend spans they triggered. You see where the time went on both sides of the request, with no matching by timestamp.

Trace a visit across browser and API

Error grouping

Grouping keeps one bug in one row as traffic changes. TrackJS keys on the message. Rollbar keys on the stack, including framework frames below your code. Each split bugs in my test, under different conditions:

Chart of how many groups TrackJS and Rollbar made for one bug

TrackJS held the coupon error together because its message never changed. Rollbar held the out-of-stock and payment errors closer because their stacks mostly didn't.

TrackJS: A new group for each value

Values in a message become separate groups:

TrackJS list with message-based splits

Different books and quantities gave the stock error separate rows, and so did each set of IDs in the tracking call. The bad release did the same to payments:

TrackJS payment errors split by amount

Every row holds a single event, so no row ever grows big enough to look like a trend.

Rollbar: Splits when timing changes

On the first release, Rollbar's items matched the bugs one for one. The slow query in 1.2.0 shifted the framework frames beneath each throw, and the fingerprints moved with them:

Rollbar items list after 1.2.0

The payment error became two items, and the coupon error spread over three. The version page then counted five "new" items when only one bug was new:

Rollbar version page for 1.2.0

Four of those five are old bugs wearing new item numbers.

Grouping comparison

Capability TrackJS Rollbar
Grouping key Message text Stack trace, framework frames included
Splits when A value in the message changes Framework frames under the error change
New payment bug ✘: one group per amount ✘: 2 items
Coupon bug across releases ✔: 1 group ✘: 3 items
Fixes Create Group and grouping rules, not tested Custom fingerprinting and Merge, not tested

Verdict: Mixed. TrackJS splits whenever a message carries a value, and Rollbar splits whenever timing changes the stack. Count your errors with variable messages, then pick the failure mode you'd rather fix with rules.

TrackJS split the payment bug by amount, and Rollbar split it by stack. Better Stack kept the bad release's 10 payment exceptions together in my test:

Better Stack payment error as one group with its source

Changing amounts and changing timing made no difference, and the source around line 173 is on the page. One row grows as the bug spreads, and nobody writes rules first.

Keep one bug in one group

Session replay

Replay shows what one visitor did before an error. Rollbar records sessions in the browser. TrackJS doesn't, and leans on its timeline.

Rollbar: Every recording in one list

Rollbar's Replays page lists each session it kept:

Rollbar Replays page

You can see where each visit began, who it was, how long it lasted and why it was recorded. The free plan keeps 1,000 a month.

TrackJS: A timeline in place of a recording

TrackJS's telemetry covers the same events in text: clicks, navigations, fetches and console lines. There's no video and no page view outside an error.

Replay comparison

Capability TrackJS Rollbar
Session replay ✘: not offered ✔: 1,000 a month free
Replay on the error page ✘: not offered ✔: inline player
Text timeline ✔: detailed ✔: telemetry
Web vitals ✘: not offered ✘: not observed

Verdict: Rollbar. Seeing the session beats reconstructing it from a list. If replay matters to you, TrackJS would need a second tool.

Release tracking and regressions

The hours after a deploy are when you most need to spot a bug you thought was gone. TrackJS treats fixed as a label. Rollbar treats it as a state tied to a version, with deploys to point at.

What can move an error between states shows the gap:

Diagram of error states in TrackJS and Rollbar and what moves an error between them

TrackJS's labels never change on their own. Rollbar reactivates a resolved item when it occurs in that version or a later one.

TrackJS: A label that stays put

TrackJS's status options are all labels:

TrackJS Set Status menu

Before 1.1.0 went out, I set the coupon error to Fixed. Events kept coming, the label didn't budge, and only its version chart showed the return:

TrackJS coupon error version chart with 1.1.0 in red

The red 1.1.0 bar is easy to miss unless you open the group. On 1.2.0, the Versions page showed the fewest errors of any release:

TrackJS Versions page with 1.2.0 showing the fewest errors

Fewer checkouts got through, so fewer errors fired, and nothing on the page measured the slowdown.

Rollbar: Fixed in a version, with a deploy to blame

When you resolve in Rollbar, you can name the version that fixes it and leave a note:

Rollbar Resolve dropdown with a version

When the bug returned in 1.1.0, the item said so:

Rollbar item reactivated in 1.1.0 with a suspected deploy

"Reactivated version: 1.1.0" and "Suspected deploy" link to the release and the deploy. Each version also has a page with a Reactivated tab:

Rollbar version page for 1.1.0

A per-environment setting goes further and clears every item when a deploy is reported. My 1.2.0 deploy wiped six server items in one go, including bugs nobody had fixed, which then reactivated as they recurred.

The returning bug in both tools

Both tools' records of the coupon bug after 1.1.0, cut down to the evidence that it returned:

The returning coupon error in TrackJS and Rollbar with numbered markers

In TrackJS, the count at ① kept rising under the Fixed label at ②. Rollbar's ① gives the version where it reappeared, and ② is the deploy it suspects.

Worth turning on in TrackJS: make the version chart part of your release checklist for every group you've labelled Fixed.

Worth turning on in Rollbar: send a deploy call from CI for each environment, since suspected deploys only exist for deploys Rollbar knows about.

Release comparison

Capability TrackJS Rollbar
Fix tied to a version ✘: label only ✔: resolve in a version
Reopens a returning bug ✘: stays Fixed ✔: reactivates
Names the cause ✘: not offered ✔: suspected deploy
Page per release Versions page, counts only ✔: New, Reactivated, Resolved tabs
Clear the list on deploy ✘: not offered ✔: per environment
Reopen visible in the list ✘: none ✘: row just turns active

Verdict: Rollbar. It caught the return, named the version and pointed at a deploy. With TrackJS, a Fixed bug can come back for weeks before anyone opens its chart.

Performance monitoring

Neither tool measures request timing, so a release that only gets slower looks fine in both.

On 1.2.0, the only sign in TrackJS was one network entry in a failing checkout's timeline:

TrackJS failing checkout fetch taking 4073 milliseconds

That request ran for 4,073 ms, where the first release finished checkouts in about 15 ms. Rollbar tied the new payment error to its deploy and showed nothing about the slowdown. Successful slow checkouts left no trace in either.

Capability TrackJS Rollbar
Request timing Per failing request, in the timeline ✘: not recorded
Traces ✘: not offered ✘: not offered
Release comparison Error counts Item counts

Verdict: Neither. Both need a separate APM to see a slow release.

Logs and events

Neither stores logs. TrackJS keeps console lines in each error's timeline, and on 1.2.0 that included my app's own [warn] slow query line, 1.52 s before the payment error. Rollbar keeps console lines as telemetry and adds RQL, a SQL-like language over occurrences:

Rollbar RQL query counting occurrences per item

RQL counts and slices errors, with templates and CSV export. It can't search log lines that never became errors.

Capability TrackJS Rollbar
Log storage ✘: none ✘: none
Console output kept ✔: in each timeline ✔: in each item's telemetry
Query language ✘: filters only ✔: RQL over occurrences

Verdict: Neither. RQL is useful for errors, and both still need a log store.

Neither tool saw the slowdown, and the slow-query warning survived only as one console line inside one TrackJS error. When that checkout failed in my Better Stack test, its error opened Live tail scoped to the one request:

Better Stack Live tail filtered to one failing checkout

The failure and the slow-query warning from the same request sit together. The cause is a click from the error, in logs you can search later.

Search the logs around every error

Alerts

TrackJS can notify you about never-seen messages, trending errors and rising error rates, by email, Slack or Teams, with summaries by default. A returning Fixed error triggers none of them. Rollbar ships with 11 email rules out of the box, and one of them covers reactivated items. It also integrates with Slack, PagerDuty and Jira.

Verdict: Not compared. I connected no channel to either. On paper, Rollbar's default reactivation rule covers the case TrackJS's alerts miss.

AI-assisted debugging

TrackJS runs an AI Debugger on every error. Rollbar sells root cause analysis on AI credits, which asked for a GitHub connection before running. Only TrackJS's ran, so this isn't a head-to-head.

TrackJS: A careful first read

Opening the AI Debugger sends sanitized error data to OpenAI, and you can turn that off. On the 1.2.0 payment error, it answered in about 20 seconds:

TrackJS AI Debugger on the payment error

It pinned the throw to line 173 of the server on the new release and excluded the usual suspects, a declined card or a coupon. Without source code, it couldn't spot the counter that rejects every fifth payment. Its fixes then kept the slow book lookup separate from the payment problem:

TrackJS AI Debugger fix suggestions

On the wishlist and coupon errors, it offered hedged hypotheses and said plainly when it lacked the source to decide.

Rollbar: Root cause analysis, not run

Each Rollbar item has Analyze root cause and a Root cause & fix tab. On my trial, it wanted GitHub connected first. According to Rollbar's documentation, a beta feature can go on to draft a fix as a pull request.

AI comparison

Capability TrackJS Rollbar
Assistant on errors ✔: AI Debugger, tested ✔: root cause analysis, not run
Needs your code ✘: works from the error ✔: GitHub required
Kept the slowdown separate ✔: yes Not tested
Draft a fix ✘: suggestions only Beta, not run
Billing Not stated per plan AI credits

Verdict: Not compared. TrackJS's AI was careful and useful from error data alone. Rollbar's needs your repository, and I didn't connect one.

TrackJS's AI read one error at a time, and Rollbar's wouldn't start without my repository. Better Stack's AI SRE took the whole-release question from me, comparing 1.2.0 with 1.1.0, with no code connected:

Better Stack AI SRE comparing 1.2.0 with 1.1.0

It picked out the one slow query, ruled out the database host, then tied 10 failed charges out of 48 to 1.2.0 alone. It needed about four minutes and $0.49, much slower than TrackJS's 20 seconds, and it covered the slowdown neither tool could see.

Put AI SRE on your next release

Pricing

TrackJS bills by page view and keeps a set number of errors per minute, so errors never raise the bill. Rollbar bills by occurrences and replays on volume sliders, with AI credits from its first paid tier.

TrackJS's figures come from its pricing page on November 6, 2026, and Rollbar's from its page on November 5, 2026. Rollbar's paid prices didn't show in the page text that day, so they're from my October 23 reading. Confirm both before buying.

Free plans and trials

Item TrackJS Rollbar Free
Free plan ✘: none ✔: $0
Included errors Not applicable 5,000 occurrences monthly
Recordings ✘: not offered 1,000 monthly
Retention Not applicable 30 days
Trial Free trial, length not stated 14 days of Advanced

Entry-level paid plans

Item TrackJS Starter TrackJS Professional Rollbar Essentials Rollbar Advanced
Price $49 monthly, $45 yearly $99 monthly, $91 yearly From $9 a month From $13 a month
Volume 100K page views 1M page views From 10K occurrences From 10K occurrences
Errors kept 20 a minute 60 a minute Billed by volume Billed by volume
Replays ✘: not offered ✘: not offered From 1,000 From 1,000
Retention 10 days 15 days 90 days 180 days
AI AI Debugger, plan not stated AI Debugger, plan not stated From 4,000 credits From 8,000 credits

What costs extra

Need TrackJS Rollbar
More volume A bigger plan; limits are soft A higher slider tier
Over the limit Errors past the per-minute cap aren't kept Stops by default, or on-demand or an overage budget
Performance and logs A separate product A separate product

Comparing the actual cost

Rollbar is cheaper to start by a wide margin. Its free tier covers 5,000 occurrences and 1,000 replays, and Essentials starts at $9 a month with 90-day retention, against TrackJS Starter's $45 a month yearly with 10.

TrackJS's model suits a busy front end that throws a lot. A bad release can fire thousands of errors without moving the bill, because the bill tracks traffic, and Starter simply stops storing errors past 20 a minute. Rollbar's bill grows with occurrences unless you cap it. Our Sentry vs Rollbar comparison shows what Rollbar's pricing looks like against a tracker that includes tracing.

Verdict: Rollbar. It's cheaper for most small teams and includes replay. TrackJS is the more predictable bill when error volume is high and unpredictable.

Full feature comparison

Feature TrackJS Rollbar
Server and browser in one place ✔: one application ✔: one project
Unhandled rejections ✔: reported ✔: reported, one frame
Failed fetches reported automatically ✔: yes ✘: not observed
Maps for private builds Per view only ✔: uploaded
Session replay ✘: not offered ✔: on browser errors
Front end to back end ✔: correlation link ✘: not offered
Groups by Message text Stack fingerprint
Re-send a request ✘: not observed ✔: Replay CURL
Fix tied to a version ✘: label only ✔: resolve in a version
Suspected deploy ✘: not offered ✔: on reactivated and new items
Resolve on deploy ✘: not offered ✔: per environment
Tracing and logs ✘: not offered ✘: not offered
Query language ✘: not offered ✔: RQL
AI AI Debugger, tested Root cause analysis, needs GitHub
Free plan ✘: trial only ✔: 5,000 occurrences

Which should you choose?

Pick the tool whose gap you can fill more easily: a missing link from browser to server, or missing release tracking.

Choose TrackJS if you debug from the browser

Every planted failure showed up in TrackJS, broken requests led straight to their server crashes, and each error came with the visit's full sequence. Its AI Debugger gave a sensible first read without seeing code, and its page-view pricing stays flat when errors spike.

It needs work around it. The Express handler needs a wrapper, Fixed means nothing if a bug returns, and message grouping splits bugs by their values. For TrackJS against a replay-first tool, see our LogRocket vs TrackJS comparison.

Choose Rollbar if you manage errors release by release

Rollbar reopened the returning bug, named its version and pointed at a deploy. It saves source maps, plays the session behind browser errors and gives server errors a curl command, all from $9 a month.

It can't join browser and server errors, and its default grouping split bugs once timing changed. Plan on custom fingerprints. For Rollbar against a tool with tracing and RUM, read our Rollbar vs Raygun comparison.

FAQ

No. Rollbar keeps both in one project, but a browser error and the server error behind it stay separate items. TrackJS links them through a correlation header.

Does TrackJS reopen a fixed error?

No. TrackJS statuses are labels, so an error marked Fixed keeps that label when it returns. Its version chart shows the new release in red.

Which has session replay?

Rollbar, with 1,000 replays a month on its free plan. TrackJS has a text timeline of each visit, without a recording.

Which is cheaper?

Rollbar, with a free tier and paid plans from $9 a month. TrackJS starts at $45 a month on yearly billing, but doesn't charge for errors.

Final thoughts

The trade-off is direction. TrackJS reads a failure across the request, from the click to the server crash. Rollbar reads it across time, from the release where it started to the deploy that brought it back.

I'd rather have Rollbar's memory than TrackJS's reach on most teams, because a bug that returns unnoticed costs more than a minute spent matching two errors. If nobody on your team opens version charts,*don't trust TrackJS's Fixed label.