Skip to content

Add typed JSON output to theme metafields pull - #8682

Merged
gonzaloriestra merged 7 commits into
gonzalo/theme-telemetry-guardfrom
gonzalo/json-theme-metafields-pull
Oct 15, 2026
Merged

gonzaloriestra merged 7 commits into
gonzalo/theme-telemetry-guardfrom
gonzalo/json-theme-metafields-pull

Conversation

@gonzaloriestra

@gonzaloriestra gonzaloriestra commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

WHY are these changes introduced?

Metafield downloads need structured outcomes and discoverable JSON support.

WHAT is this pull request doing?

Return strict flattened definitions, absolute artifact paths and explicit success/partial/skipped/cancelled outcomes. Preserve the native owner-keyed metafields.json file, successful downloads and owner-type failures; include a minor changeset for newly added theme JSON flags.

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

How to manually test your changes?

shopify theme metafields pull --store example.myshopify.com --json
shopify theme metafields pull --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 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 10:22
@gonzaloriestra
gonzaloriestra requested review from a team as code owners September 28, 2026 10:22
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from e49d75e to b3c2a68 Compare September 28, 2026 10:25
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch 2 times, most recently from 15928b5 to af38492 Compare September 28, 2026 11:39
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from b3c2a68 to 3907b2d Compare September 28, 2026 11:39
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from 3907b2d to 6063572 Compare September 28, 2026 11:52
Comment thread packages/theme/src/cli/services/metafields-pull/types.ts Outdated
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from 6063572 to cedfc3d Compare September 29, 2026 10:28
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch from f8c3844 to e4f59f1 Compare October 9, 2026 13:09
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch 2 times, most recently from e601ab5 to f477150 Compare October 9, 2026 13:19
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch 2 times, most recently from ea75f3b to e2f278b Compare October 9, 2026 14:01
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from f477150 to 07e0fab Compare October 9, 2026 14:01
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch from e2f278b to 4eb172b Compare October 9, 2026 14:11
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from 07e0fab to 4a636ee Compare October 9, 2026 14:11
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch from 4eb172b to 9ea220e Compare October 14, 2026 08:08
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from 4a636ee to 6b45207 Compare October 14, 2026 08:08
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch from 9ea220e to 7912613 Compare October 15, 2026 09:56
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch 3 times, most recently from 776aea4 to 4d2f628 Compare October 15, 2026 10:42
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch from 3ab13fb to 4537903 Compare October 15, 2026 10:42
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from 4d2f628 to d88c624 Compare October 15, 2026 11:05
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch 2 times, most recently from 975035e to 757230e Compare October 15, 2026 11:34
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from d88c624 to 5820c38 Compare October 15, 2026 11:34
@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-profile-environments.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

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.

2 participants