Skip to content

Add typed JSON output to theme profile - #8921

Merged
gonzaloriestra merged 4 commits into
gonzalo/json-theme-checkfrom
gonzalo/json-theme-profile
Oct 19, 2026
Merged

gonzaloriestra merged 4 commits into
gonzalo/json-theme-checkfrom
gonzalo/json-theme-profile

Conversation

@gonzaloriestra

@gonzaloriestra gonzaloriestra commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Original PR and review history: #8643.

WHY are these changes introduced?

Fixes https://github.com/shop/issues-develop/issues/23691

Explicit theme profiling environments need the same ordered batch contract.

WHAT is this pull request doing?

Preserve the native Speedscope artifact and wrap explicitly named environments in one result object. Separate service data from presentation and keep failures on the shared fatal path.

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

How to manually test your changes?

shopify theme profile --store example.myshopify.com --json
shopify theme profile --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 #8925 October 15, 2026 12:34
@github-actions github-actions Bot added the Area: @shopify/cli @shopify/cli package issues label Oct 15, 2026
@gonzaloriestra gonzaloriestra changed the title gonzalo/json theme profile Add typed JSON output to theme profile Oct 15, 2026
@gonzaloriestra
gonzaloriestra marked this pull request as ready for review October 15, 2026 12:42
@gonzaloriestra
gonzaloriestra requested review from a team as code owners October 15, 2026 12:42
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 6e6f4cb to d343c53 Compare October 15, 2026 13:33
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch 2 times, most recently from 87b3289 to 629bdc4 Compare October 15, 2026 14:10
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 629bdc4 to 40184df Compare October 15, 2026 14:33
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 40184df to 37eeacb Compare October 15, 2026 15:11

@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.

These tests should not change the saved CLI store.


🤖 Generated by the review-pr skill

Comment thread packages/theme/src/cli/commands/theme/profile.test.ts Outdated
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch 2 times, most recently from 1e3bfa7 to c1a1834 Compare October 16, 2026 08:15
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from c1a1834 to 3c6fd1c Compare October 16, 2026 08:40
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 3c6fd1c to 9276719 Compare October 16, 2026 10:37
Comment thread packages/theme/src/cli/commands/theme/profile.ts
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 9276719 to d3ee84c Compare October 16, 2026 11:08
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from d3ee84c to 9ac5a7f Compare October 16, 2026 11:15
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 9ac5a7f to e44ef94 Compare October 16, 2026 11:32
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from e44ef94 to 3415c09 Compare October 16, 2026 14:20

@karreiro karreiro 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.

Thank you, @gonzaloriestra!

@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 3415c09 to ba40812 Compare October 19, 2026 08:44
@gonzaloriestra
gonzaloriestra added this pull request to the merge queue Oct 19, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue because a pull request earlier in the stack was removed Oct 19, 2026
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from ba40812 to 04883cc Compare October 19, 2026 11:02
@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-profile-environments.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
@@ -21,6 +21,7 @@ declare abstract class BaseCommand extends Command {
     static descriptionWithoutMarkdown(): string | undefined;
     static analyticsNameOverride(): string | undefined;
     static analyticsStopCommand(): string | undefined;
+    private jsonOutputFromFlags;
     catch(error: Error & {
         skipOclifErrorHandling: boolean;
     }): Promise<void>;
@@ -36,6 +37,7 @@ declare abstract class BaseCommand extends Command {
     }, TGlobalFlags extends FlagOutput, TArgs extends ArgOutput>(options?: Input<TFlags, TGlobalFlags, TArgs>, argv?: string[]): Promise<ParserOutput<TFlags, TGlobalFlags, TArgs> & {
         argv: string[];
     }>;
+    protected runWithParsedOutput<T>(flags: FlagOutput, execute: () => T): T;
     protected environmentsFilename(): string | undefined;
     protected parseEnvironmentFlags<TFlags extends FlagOutput, TGlobalFlags extends FlagOutput, TArgs extends ArgOutput>(environment: JsonMap, options: Input<TFlags, TGlobalFlags, TArgs>, explicitFlags: FlagOutput): Promise<FlagOutput>;
     protected validateNonTTYFlags(flags: FlagOutput): void;

@gonzaloriestra
gonzaloriestra added this pull request to the merge queue Oct 19, 2026
Merged via the queue into main with commit 556a4e9 Oct 19, 2026
27 of 30 checks passed
@gonzaloriestra
gonzaloriestra deleted the gonzalo/json-theme-profile branch October 19, 2026 11:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: @shopify/cli @shopify/cli package issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants