Skip to content

[BUG] Biome lint output sometimes reported as ESLint output (JSON parse failed), masking real status #2540

Description

@thiagomurtinho

Environment

  • rtk 0.42.4 (Homebrew, /opt/homebrew/bin/rtk)
  • macOS (Apple Silicon)
  • Project lints with Biome, not ESLint: package.json"lint": "biome check"

What happens

My lint script runs Biome. When it goes through rtk's command rewriting, I intermittently get this, with a misleading non-zero exit, even though Biome itself exits 0 and the project is clean:

ESLint output (JSON parse failed: EOF while parsing a value at line 1 column 0)

It masks the real lint result — I had to fall back to running the binary directly (./node_modules/.bin/biome check) to know the true status, which cost real debugging time across a multi-PR session (a green lint kept looking red).

It looks like the lint filter assumes ESLint's JSON output format and tries to JSON-parse Biome's text diagnostics, which fails.

Secondary data point

Running Biome as a bare command through rtk also fails:

$ rtk biome check
[rtk: No such file or directory (os error 2)]    # exit 127

(Biome resolves fine via npm run / node_modules/.bin, just not as a top-level rtk-wrapped command.)

Reproducibility

The JSON parse failed message is intermittent — I captured it from session logs, but 3 back-to-back npm run lint runs just now all passed through cleanly (exit 0, normal Biome output). So it seems to trigger only under some conditions (possibly when Biome reports findings / exits non-zero).

Expected

  • Detect Biome as a linter and handle its output format, or
  • when the linter isn't ESLint, pass the output through unchanged and preserve the real exit code — never synthesize a JSON parse failed error or a spurious non-zero exit.

Biome is a very common ESLint/Prettier replacement now, so first-class (or at least transparent) handling would help a lot. Happy to provide more logs if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions