Skip to content

Add typed JSON output to theme push - #8647

Open
gonzaloriestra wants to merge 13 commits into
gonzalo/json-theme-renamefrom
gonzalo/json-theme-push
Open

gonzaloriestra wants to merge 13 commits into
gonzalo/json-theme-renamefrom
gonzalo/json-theme-push

Conversation

@gonzaloriestra

@gonzaloriestra gonzaloriestra commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

WHY are these changes introduced?

Upload JSON currently uses inconsistent field names and drops environment outcomes.

WHAT is this pull request doing?

Project string IDs, camelCase links and absolute-path upload issues. Report partial uploads with a nonzero exit, retain skipped/cancelled outcomes and every requested environment, and route failed operations through the shared error envelope.

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

How to manually test your changes?

shopify theme push --unpublished --theme MyTheme --store example.myshopify.com --json
shopify theme push --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 the Area: @shopify/cli @shopify/cli package issues label Sep 24, 2026
@gonzaloriestra gonzaloriestra changed the title gonzalo/json theme push Add typed JSON output to theme push Sep 24, 2026
@gonzaloriestra
gonzaloriestra added this pull request to stack #8650 September 24, 2026 09:31
@gonzaloriestra
gonzaloriestra removed this pull request from stack #8650 September 24, 2026 10:04
@gonzaloriestra
gonzaloriestra changed the base branch from main to gonzalo/json-theme-rename 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-push branch 2 times, most recently from 96095dc to ff21d01 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-push branch 2 times, most recently from a17bb51 to e719f0c Compare September 24, 2026 14:21
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-push branch 2 times, most recently from 8afadb0 to 5c4a5e5 Compare September 25, 2026 11:43
@gonzaloriestra
gonzaloriestra marked this pull request as ready for review September 25, 2026 11:56
@gonzaloriestra
gonzaloriestra requested review from a team as code owners September 25, 2026 11:56
@gonzaloriestra
gonzaloriestra removed this pull request from stack #8655 September 25, 2026 12:28
@github-actions github-actions Bot added the Area: @shopify/cli @shopify/cli package issues label Oct 6, 2026
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-push branch from 2d89d0a to a9620d2 Compare October 6, 2026 12:31
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-push branch from a9620d2 to 0212668 Compare October 6, 2026 13:53
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-push branch from 0212668 to d3a64d0 Compare October 6, 2026 13:56
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-push branch from 4be0587 to 23b8b0b Compare October 8, 2026 08:43
@gonzaloriestra gonzaloriestra reopened this Oct 8, 2026
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-push branch from 23b8b0b to 40b233b Compare October 8, 2026 09:53
@gonzaloriestra
gonzaloriestra marked this pull request as ready for review October 8, 2026 10:04
@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-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-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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant