Skip to content

Add typed JSON output to theme metafields pull - #8682

Open
gonzaloriestra wants to merge 7 commits into
gonzalo/json-theme-initfrom
gonzalo/json-theme-metafields-pull
Open

gonzaloriestra wants to merge 7 commits into
gonzalo/json-theme-initfrom
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-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

Copy link
Copy Markdown
Contributor Author

/snapit

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

🫰✨ Thanks @gonzaloriestra! Your snapshot has been published to npm.

Built from 1383c235d98feab6510d78163e9acb08d90b2339. Workflow run.

Test the snapshot by installing your package globally:

pnpm i -g --@shopify:registry=https://registry.npmjs.org @shopify/cli@0.0.0-snapshot-20261008090341

Caution

After installing, validate the version by running shopify version in your terminal.
If the versions don't match, you might have multiple global instances installed.
Use which shopify to find out which one you are running and uninstall it.

@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from 1383c23 to 2b53200 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-metafields-pull branch from 2b53200 to 7a8a0bf Compare October 9, 2026 12:00
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from 7a8a0bf to 00090dd Compare October 9, 2026 12:26
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from 00090dd to 43cf8d0 Compare October 9, 2026 12:48
@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-metafields-pull branch from f477150 to 07e0fab Compare October 9, 2026 14:01
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-metafields-pull branch from 07e0fab to 4a636ee 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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants