Skip to content

Add typed JSON output to theme preview - #8919

Merged
gonzaloriestra merged 6 commits into
mainfrom
gonzalo/json-theme-preview
Oct 19, 2026
Merged

gonzaloriestra merged 6 commits into
mainfrom
gonzalo/json-theme-preview

Conversation

@gonzaloriestra

@gonzaloriestra gonzaloriestra commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Original PR and review history: #8645.

WHY are these changes introduced?

Fixes https://github.com/shop/issues-develop/issues/23695

Preview JSON should expose a stable resource and wait for browser diagnostics.

WHAT is this pull request doing?

Return a strict preview resource with an opaque string ID and validated URL. Keep the native service compatibility adapter, await browser warnings before final output, and retain explicit environment batches. Validate required inputs before authentication and preserve successful results when another environment fails.

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

How to manually test your changes?

shopify theme preview --store example.myshopify.com --theme 123 --overrides ./overrides.json --json
shopify theme preview --json-schema

To test a batch, configure staging and production in shopify.theme.toml with store, password, theme, and overrides, then run shopify theme preview --json -e staging -e production.

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 #8925 October 15, 2026 12:34
@github-actions github-actions Bot added shopify.dev preview Area: @shopify/cli @shopify/cli package issues labels Oct 15, 2026
@gonzaloriestra gonzaloriestra changed the title gonzalo/json theme preview Add typed JSON output to theme preview Oct 15, 2026
@gonzaloriestra
gonzaloriestra marked this pull request as ready for review October 15, 2026 12:42
@gonzaloriestra
gonzaloriestra requested review from a team as code owners October 15, 2026 12:42
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from b5af4e9 to 521e3b6 Compare October 15, 2026 13:33
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch 2 times, most recently from 64f1e55 to 453d107 Compare October 15, 2026 14:10

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

There is a regression in the single-environment store fallback.


🤖 Generated by the review-pr skill

Comment thread packages/theme/src/cli/commands/theme/preview.ts
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch 2 times, most recently from eda59e0 to 33122e9 Compare October 16, 2026 08:15
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from 33122e9 to 5e3146c Compare October 16, 2026 10:37
Comment thread packages/theme/src/cli/services/dev-override/codec.ts Outdated

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

a small comment

@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from 5e3146c to b2bed2c Compare October 16, 2026 11:08
@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/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

@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-preview branch from b2bed2c to 44cc4db Compare October 16, 2026 14:20
@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-preview-json-contract.md '@shopify/cli': major

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

Thank you, @gonzaloriestra!

@gonzaloriestra
gonzaloriestra added this pull request to the merge queue Oct 19, 2026
Merged via the queue into main with commit 774b12f Oct 19, 2026
28 of 31 checks passed
Base automatically changed from gonzalo/json-theme-share to main October 19, 2026 11:02
@gonzaloriestra
gonzaloriestra deleted the gonzalo/json-theme-preview branch October 19, 2026 11:02
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.

3 participants