← All posts

Windows on the frontend

The rebuilt Output Console: 6 tabs, no DevTools needed

Opening DevTools just to read a log is a context switch you do a hundred times a day without thinking about it. The rebuilt Output Console removes that switch entirely: a read-only log viewer that lives inside the page, with six tabs covering console output, network traffic, uncaught errors and the GTM dataLayer. No F12. No locked-down-machine excuses. This is the full walkthrough.

What the Output Console actually is

The Output Console is one of JustZix's in-tab developer windows — a "pane" rendered directly into the page DOM by the extension. It is read-only: you don't type into it. Unlike the JS Console (a REPL where you run code), logs flow into the Output Console by themselves. You open it, and it fills up.

There are two ways to open it:

It is a window like any other JustZix pane: drag it, resize it, move it out of the way. It does not block the page underneath.

Why a log window inside the tab beats DevTools

DevTools is excellent. It is also not always available, and not always convenient. Concrete reasons the in-tab console wins:

This is not a DevTools replacement for deep work. It is the right tool when you want to see what a page is doing without ceremony.

Six tabs, each with a live count badge

The window is organised into six tabs. Every tab carries a badge showing how many entries it currently holds, updated live as the page runs:

TabWhat it shows
AllEvery entry from every source, in chronological order.
JZconsoleOnly output from your own window.JUSTZIX.* logger.
ConsoleOnly the page's standard console.log/info/warn/error/debug.
NetworkThe page's network requests, captured via chrome.webRequest.
ErrorsUncaught exceptions and unhandled promise rejections, each expandable.
DataLayerwindow.dataLayer pushes (GTM) plus a live view of the object.

The split between JZconsole and Console is deliberate. Your own debug logging should not drown in the page's noise, and the page's noise should not drown your logging. Keep them apart, or read them merged under All.

The contextual filter bar

Between the tabs and the search box sits a filter bar that changes depending on which tab is active. There is no single global filter — each kind of data gets the controls that make sense for it:

Because the bar is contextual, you never scroll past irrelevant controls. The Console tab does not show you a domain filter; the Network tab does not show you log-level checkboxes.

The search box

Below the filter bar, always visible, is a search box. It is a live, case-insensitive substring filter over the entries in the active tab. Type checkout and the list narrows as you type. Press Esc to clear it instantly.

Search and the contextual filters stack. On the Network tab you can uncheck everything except 4xx/5xx status, then type a path fragment in the search box to pin down one failing endpoint.

Collapsible console logs

Real-world console.* calls log objects, arrays, big payloads. Dumped raw, twenty of those make the tab unreadable. So console.* entries are collapsed by default — each shows a short preview line, something like:

[Checkout][14:22:07] EVENT: {…}

Click the line and it expands into a full JSON tree of every argument, DevTools-style — drill into nested objects, expand arrays, read the whole payload. Collapse it again when you are done. You get a scannable list and full detail on demand, not one or the other.

The Errors tab

The Errors tab collects what actually broke: uncaught exceptions and unhandled promise rejections. Each entry expands to show the stack trace and details, so you can go from "something failed" to "this line in this file" without leaving the page.

One honest caveat worth knowing up front: a failed fetch or XHR — an API returning 404 or 500 — is not a JavaScript exception. It will not appear in the Errors tab. For those, you go to the Network tab and filter by 4xx/5xx status. The Errors tab is for code that threw, not requests that failed.

The DataLayer tab

If the page runs Google Tag Manager, the DataLayer tab is the fastest way to see what GTM is receiving. The window splits into two columns:

You see both the events as they fire and the accumulated state at once — no guessing whether a push landed, no opening a tag-debugging extension.

The window.JUSTZIX logger

The Output Console is not just a passive viewer — it ships a logging API for your own code. Anything you write in the JS pane, in a rule action, or in page code can log straight into the JZconsole tab:

JUSTZIX.log('cart loaded', cart);
JUSTZIX.info('user is logged in');
JUSTZIX.warn('coupon field empty');
JUSTZIX.error('checkout API failed', err);
JUSTZIX.debug('raw payload', payload);

The five methods map to the five levels the JZconsole filter checkboxes control. Aliases keep it convenient and safe:

Because your logs land in their own tab, they stay readable no matter how chatty the page's native console is.

A practical first session

  1. Press Ctrl+Alt+K on the page you want to inspect — the Output Console opens as a TEMP window.
  2. Start on All to get the lay of the land, then move to the tab that matters.
  3. Debugging your own rule? Sprinkle JUSTZIX.log(...) calls and watch JZconsole.
  4. Page misbehaving? Check Errors for thrown code, Network for failed requests.
  5. Auditing analytics? Open DataLayer and trigger the user flow.
  6. Narrow anything with the level checkboxes and the search box; Esc clears the search.

See also

The rebuilt Output Console turns "open DevTools and dig" into "glance at the tab next to the page". Download JustZix — it is free, works on Chrome 100+, and installs in about two minutes.

Rate this post

No ratings yet — be the first.

Try it yourself

Install JustZix and paste any snippet from this article. Two minutes from zero to a working rule across all your devices.

Get JustZix

Features · How it works · Examples · Use cases