Skip to main content
Because you write real JavaScript and CSS for a variation, ABTestly reads that code back and points out the mistakes that quietly break experiments. It is a plain static review, the same kind of pass a linter runs, and it happens on ABTestly’s side every time you publish or save. It is warn only. Code check never blocks a publish. It tells you what it found and leaves the decision to you.
Code check panel showing Issues and Suggestions grouped by variation

Code check on an experiment: persistent Issues above, Suggestions below, each grouped by variation and pointing at the line it found.

When it runs

Code check runs whenever your variation code could have changed:
  • When you publish or republish an experiment.
  • When you save a draft, a paused, or a live variation.
  • When you resume a paused experiment.
It does not run on pause, archive, or a plain results refresh, and it never runs on your live site or in a visitor’s browser. It reads the code you saved, not the page your visitors load.

Two tiers: Issues and Suggestions

Findings come in two levels.

Issues (safety)

Issues are the things most likely to actually break the experience for a visitor. They persist: an issue stays on the experiment until the code no longer triggers it, and each one shows how long it has been open, so a real problem cannot scroll away and be forgotten. Examples:
  • An eval() that a strict Content Security Policy will block.
  • A querySelector result used without a guard, which throws when the element is not on the page yet.
  • Variation code or CSS that hides the whole page.
  • A setInterval that is never cleared.
  • A syntax error.
When a source has a syntax error, code check reports the syntax error and holds that source’s other open issues in place rather than marking them resolved, since it could not fully read the file.

Suggestions (quality)

Suggestions are lower severity nits. They are worth tidying but they will not break a visit. Suggestions show alongside your saved code and can be dismissed for the session. Examples:
  • var where const or let would read better.
  • == where === avoids a type coercion bug.
  • An unused variable, or a variable declared twice.
  • A listener added per element on a page that rebuilds its DOM, where one delegated listener on document would survive the rebuild.
  • A redirect inside variation code, which a Split URL test should handle instead.

How findings are shown

  • Findings are grouped by variation, so you read each variant’s own list.
  • Each finding points at a line and column in the JavaScript or CSS pane.
  • The panel survives a page refresh. Issues stay until they are fixed; a Suggestions panel you dismissed comes back on your next visit.
  • A rule that fires on several lines is counted per line, so the header count matches the rows you see.

What it checks

Code check looks for a fixed set of patterns across variation JavaScript and CSS, more than forty in total. It is a set of heuristics: it checks for the specific mistakes below rather than claiming to catch every possible bug. Each row is the exact message the panel shows, in the same two tiers the panel groups them into.

Issues (safety)

JavaScript CSS

Suggestions (quality)

JavaScript CSS Where a message names a specific value, like a selector, variable, or size, the panel fills in the real one from your code. The values shown here (for example count, .sc1a2b3c, and 1200px) are placeholders.

It never blocks your publish

This is the point worth repeating. Code check is a second set of eyes, not a gate. Even with open issues, your experiment publishes when you publish it. The findings are there so a mistake is caught before it reaches visitors, not to stand between you and shipping.
Code check catches common mistakes. It is a set of heuristics, not a guarantee, and it cannot know your site’s markup. Treat a clean panel as one fewer thing to worry about, not as proof the variation is correct. Preview and QA on your own site before you rely on a result.

What code check is not

  • It is not AI. It reads your code the way a linter does, with a fixed set of rules. Nothing is sent to a model.
  • It does not run on your live site. It analyzes the code you saved, on ABTestly’s side. It does not load your pages, execute your code, or test your selectors against the running site.
  • It is not a blocker. Warn only, always.

Variations

Write the JavaScript and CSS that code check reviews.

Preview and QA

Force a variant and check it on your own site before you launch.
Last modified on August 9, 2026