Skip to content

Add typed JSON output to theme package - #8683

Open
gonzaloriestra wants to merge 5 commits into
gonzalo/json-theme-profilefrom
gonzalo/json-theme-package
Open

gonzaloriestra wants to merge 5 commits into
gonzalo/json-theme-profilefrom
gonzalo/json-theme-package

Conversation

@gonzaloriestra

@gonzaloriestra gonzaloriestra commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

WHY are these changes introduced?

Packaging needs a machine-readable artifact receipt.

WHAT is this pull request doing?

Return a strict JSON artifact result with a validated absolute path to the ZIP actually written, while preserving the text presenter.

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

How to manually test your changes?

shopify theme package --path . --json
shopify theme package --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

@github-actions github-actions Bot added shopify.dev preview no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users. labels Sep 28, 2026
@gonzaloriestra
gonzaloriestra added this pull request to stack #8673 September 28, 2026 09:53
@gonzaloriestra
gonzaloriestra marked this pull request as ready for review September 28, 2026 09:57
@gonzaloriestra
gonzaloriestra requested review from a team as code owners September 28, 2026 09:57
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from 9dce70c to cbf4e74 Compare September 28, 2026 10:25
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from cbf4e74 to 8290b55 Compare September 28, 2026 11:39
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from 8290b55 to 195f2b0 Compare September 28, 2026 11:52
vi.mock('@shopify/cli-kit/node/analytics', () => ({
recordEvent: vi.fn(),
compileData: vi.fn().mockReturnValue({timings: {}, errors: {}, retries: {}, events: {}}),
}))

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.

you don't need these special cases no? Just

vi.mock('@shopify/cli-kit/node/ui')
vi.mock('@shopify/cli-kit/node/analytics')

Should work fine

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Updated, thanks

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

Minor comment on the tests

@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from 195f2b0 to 28d575f Compare September 29, 2026 10:28
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from 28d575f to 29801b7 Compare September 29, 2026 11:11
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch 2 times, most recently from 5f102b2 to 72d4123 Compare September 29, 2026 13:44
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch 3 times, most recently from 901c0bc to d5ad578 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-package branch from d5ad578 to f62547a Compare October 6, 2026 12:29
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from d4c96a7 to 7fd0bc6 Compare October 8, 2026 08:27
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from 7fd0bc6 to 515529c Compare October 8, 2026 08:43
@gonzaloriestra gonzaloriestra reopened this Oct 8, 2026
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from 515529c to b8db95e Compare October 8, 2026 09:53
@gonzaloriestra
gonzaloriestra marked this pull request as ready for review October 8, 2026 10:04
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch 2 times, most recently from cf702b0 to 3034081 Compare October 9, 2026 12:26
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from 3034081 to 9aa6e95 Compare October 9, 2026 12:48
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch 2 times, most recently from 9b568c8 to 86c3847 Compare October 9, 2026 13:19
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from 86c3847 to 68b94cf Compare October 9, 2026 14:01
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-package branch from 68b94cf to 0169d92 Compare October 9, 2026 14:11
@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

no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users. shopify.dev preview

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants