Skip to content

Add typed JSON output to theme check - #8642

Merged
gonzaloriestra merged 9 commits into
gonzalo/theme-telemetry-guardfrom
gonzalo/json-theme-check
Oct 15, 2026
Merged

gonzaloriestra merged 9 commits into
gonzalo/theme-telemetry-guardfrom
gonzalo/json-theme-check

Conversation

@gonzaloriestra

@gonzaloriestra gonzaloriestra commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

WHY are these changes introduced?

Theme Check JSON needs consistent validation results and diagnostic fields.

WHAT is this pull request doing?

Return valid, flat issues and consistent severity counts with absolute file paths and zero-based camelCase positions. Retain completed validation in environment batches, honor the blocking policy, and wait for requested corrections before final JSON.

The public output follows docs/cli/json-output.md; explicitly named environments use one {environments: [...]} object.

How to manually test your changes?

shopify theme check --path . --json
shopify theme check --path . --output=json
shopify theme check --json-schema

Checklist

  • I've considered possible cross-platform impacts (Mac, Linux, Windows)
  • I've considered possible documentation changes
  • I've considered analytics changes to measure impact
  • The change is user-facing — I've identified the correct bump type (patch for bug fixes · minor for new features · major for breaking changes) and added a changeset with pnpm changeset add

@gonzaloriestra
gonzaloriestra added this pull request to stack #8644 September 24, 2026 09:19
@github-actions github-actions Bot added the Area: @shopify/cli @shopify/cli package issues label Sep 24, 2026
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from 60fc145 to 84774fa Compare September 24, 2026 10:04
@gonzaloriestra
gonzaloriestra removed this pull request from stack #8644 September 24, 2026 10:04
@gonzaloriestra
gonzaloriestra changed the base branch from gonzalo/json-theme-list to gonzalo/json-theme-preview September 24, 2026 10:05
@gonzaloriestra
gonzaloriestra added this pull request to stack #8655 September 24, 2026 10:05
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from 84774fa to 143d3dc Compare September 24, 2026 10:11
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from fda3575 to f82379b Compare September 24, 2026 10:13
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch 2 times, most recently from 1e151c5 to 0bd24e9 Compare September 24, 2026 10:21
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from f82379b to f8f160d Compare September 24, 2026 10:25
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from 0bd24e9 to b1a9aff Compare September 24, 2026 10:25
@github-actions github-actions Bot added no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users. and removed Area: @shopify/cli @shopify/cli package issues labels Sep 24, 2026
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from b1a9aff to cd8b847 Compare September 24, 2026 11:56
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from f8f160d to 781de0e Compare September 24, 2026 11:56
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from cd8b847 to ec6f23d Compare September 24, 2026 13:46
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from 781de0e to a523b13 Compare September 24, 2026 13:46
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from ec6f23d to 861825a Compare September 24, 2026 14:21
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch 2 times, most recently from 571cd4e to 814fcb9 Compare September 24, 2026 14:36
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch 2 times, most recently from 6cae74e to c218adb Compare September 25, 2026 11:43
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch 2 times, most recently from ecb184c to a6c90ed Compare September 25, 2026 11:59
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch 2 times, most recently from fa74b25 to d93ff1e Compare September 25, 2026 12:27
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from a6c90ed to 8cfc448 Compare September 25, 2026 12:28
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch 2 times, most recently from 04343fc to c6e17b3 Compare September 29, 2026 14:40
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from 86fe745 to 1f370d0 Compare October 1, 2026 08:52
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from c6e17b3 to 9393b37 Compare October 1, 2026 08:52
@gonzaloriestra
gonzaloriestra marked this pull request as draft October 6, 2026 12:18
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from 1f370d0 to ff44bf7 Compare October 6, 2026 12:29
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from 9393b37 to a010fb4 Compare October 6, 2026 12:29
@github-actions github-actions Bot added Area: @shopify/cli @shopify/cli package issues and removed no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users. labels Oct 6, 2026
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from ff44bf7 to 154430a Compare October 6, 2026 12:31
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from a010fb4 to 05b9d68 Compare October 6, 2026 12:31
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from 154430a to ed6c15c Compare October 6, 2026 13:53
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from 05b9d68 to d5b00ff Compare October 6, 2026 13:53
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-check branch from d5b00ff to 52ed921 Compare October 6, 2026 13:56
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from ed6c15c to 20a2271 Compare October 6, 2026 13:56

@isaacroldan isaacroldan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found one JSON diagnostic issue.


🤖 Generated by the review-pr skill


export async function checkTheme(path: string, config?: string, environment?: string) {
const {offenses, theme} = await withThemeCheckConfigErrorHandling(config, () =>
themeCheckRun(path, config, (message) => {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This callback does not cover the warnings Theme Check writes with console.error. With extends: [] and LiquidHTMLSyntaxError: {enabled: true, unexpectedOption: true} in .theme-check.yml, theme check --json --no-input writes a plain-text Unexpected setting... line to stderr, so callers cannot parse that stream as JSONL. I checked this with the real Theme Check library. Can we send those warnings through the command diagnostic writer too?


🤖 Generated by the review-pr skill

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Potential Breaking Changes Detected

This PR contains changes that may break the existing contract.

@shopify/dev_experience — this PR contains breaking changes that require coordination for the next major release.

📦 Major Version Changesets

The following changesets request a major version bump:

Changeset Package
theme-check-json-contract.md '@shopify/cli': major
theme-duplicate-json-contract.md '@shopify/cli': major
theme-info-json-contract.md '@shopify/cli': major
theme-list-json-contract.md '@shopify/cli': major
theme-open-json-contract.md '@shopify/cli': major
theme-preview-json-contract.md '@shopify/cli': major
theme-push-json-contract.md "@shopify/cli": major

@github-actions

Copy link
Copy Markdown
Contributor

Differences in type declarations

We detected differences in the type declarations generated by Typescript for this branch compared to the baseline ('main' branch). Please, review them to ensure they are backward-compatible. Here are some important things to keep in mind:

  • Some seemingly private modules might be re-exported through public modules.
  • If the branch is behind main you might see odd diffs, rebase main into this branch.

New type declarations

We found no new type declarations in this PR

Existing type declarations

packages/cli-kit/dist/public/node/base-command.d.ts
@@ -20,6 +20,7 @@ declare abstract class BaseCommand extends Command {
     static descriptionWithoutMarkdown(): string | undefined;
     static analyticsNameOverride(): string | undefined;
     static analyticsStopCommand(): string | undefined;
+    private jsonOutputFromEnvironment;
     catch(error: Error & {
         skipOclifErrorHandling: boolean;
     }): Promise<void>;
@@ -35,6 +36,7 @@ declare abstract class BaseCommand extends Command {
         argv: string[];
     }>;
     protected environmentsFilename(): string | undefined;
+    protected validateNonTTYFlags(flags: FlagOutput): void;
     protected failMissingNonTTYFlags(flags: FlagOutput, requiredFlags: string[]): void;
     private failMissingNonTTYFlagRequirements;
     private applicableNonTTYFlagRequirements;
packages/cli-kit/dist/public/node/themes/theme-manager.d.ts
@@ -11,5 +11,12 @@ export declare abstract class ThemeManager {
     findOrCreate(name?: string, role?: Role): Promise<Theme>;
     fetch(name?: string, role?: Role): Promise<Theme | undefined>;
     generateThemeName(context: string): string;
-    create(themeRole?: Role, themeName?: string): Promise<Theme>;
+    create(themeRole?: Role, themeName?: string): Promise<{
+        createdAtRuntime: boolean;
+        id: number;
+        name: string;
+        processing: boolean;
+        role: string;
+        src?: string;
+    }>;
 }
\ No newline at end of file

@gonzaloriestra gonzaloriestra mentioned this pull request Oct 15, 2026
4 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants