Skip to content

Add typed JSON output to theme profile - #8643

Open
gonzaloriestra wants to merge 4 commits into
gonzalo/json-theme-checkfrom
gonzalo/json-theme-profile
Open

gonzaloriestra wants to merge 4 commits into
gonzalo/json-theme-checkfrom
gonzalo/json-theme-profile

Conversation

@gonzaloriestra

@gonzaloriestra gonzaloriestra commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

WHY are these changes introduced?

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 #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-profile branch from 964fa3f to 31cc224 Compare September 24, 2026 10:04
@gonzaloriestra
gonzaloriestra removed this pull request from stack #8644 September 24, 2026 10:04
@gonzaloriestra
gonzaloriestra added this pull request to stack #8655 September 24, 2026 10:05
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 31cc224 to 0473c3d Compare September 24, 2026 10:11
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch 2 times, most recently from 42d0894 to b52a551 Compare September 24, 2026 10:21
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from b52a551 to fffea1c Compare September 24, 2026 10:25
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from fffea1c to 0c0d218 Compare September 24, 2026 11:56
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 0c0d218 to 2139045 Compare September 24, 2026 13:46
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from a5c8e13 to 61b111d Compare September 29, 2026 11:11
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 61b111d to 8a2dfe7 Compare September 29, 2026 11:38
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch 2 times, most recently from 00c153b to 5ad8644 Compare September 29, 2026 14:18
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch 2 times, most recently from 7542d09 to a8cef4b 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-profile branch from a8cef4b to ca2cebe 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-profile branch from ca2cebe to ba654bb Compare October 6, 2026 12:31
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from ba654bb to 8c90a39 Compare October 6, 2026 13:53
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-profile branch from 8c90a39 to 655353a Compare October 6, 2026 13:56
@github-actions

github-actions Bot commented Oct 9, 2026

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-profile-environments.md '@shopify/cli': major
theme-push-json-contract.md "@shopify/cli": major

@github-actions

github-actions Bot commented Oct 9, 2026

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
@@ -35,6 +35,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

This branch has not been deployed

No deployments
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.

1 participant