Skip to content

Rework release config diff to compare version against active version#8054

Open
isaacroldan wants to merge 1 commit into
mainfrom
deploy-split/05a-release-config-diff
Open

Rework release config diff to compare version against active version#8054
isaacroldan wants to merge 1 commit into
mainfrom
deploy-split/05a-release-config-diff

Conversation

@isaacroldan

@isaacroldan isaacroldan commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Part 5 of 8 — splitting #8040.

WHY are these changes introduced?

Both release and the new deploy classification need to diff app configuration between two module sets. This introduces that shared primitive and adopts it in release, independently of the deploy change.

WHAT is this pull request doing?

  • Adds buildConfigExtensionIdentifiersBreakdown (a plain local-vs-remote field diff using the order-insensitive array comparison from Add order-insensitive deep object comparison to cli-kit #8044) and configExtensionsIdentifiersReleaseBreakdown.
  • Switches release to them: the config breakdown now compares the version being released against the app's active version instead of re-fetching remote configuration.

Only affects the release command; the shared helper is reused by #8055.

⚠️ Changes how the release config diff is computed/displayed — consider a patch changeset.

How to test your changes?

pnpm --filter @shopify/app exec vitest run src/cli/services/release.test.ts src/cli/services/context/breakdown-extensions.test.ts

@isaacroldan isaacroldan force-pushed the deploy-split/05a-release-config-diff branch from 7a1e052 to 7382b73 Compare July 10, 2026 11:28
@isaacroldan isaacroldan marked this pull request as ready for review July 10, 2026 11:30
@isaacroldan isaacroldan requested a review from a team as a code owner July 10, 2026 11:30
@isaacroldan isaacroldan force-pushed the deploy-split/04-deploy-identifiers-shape branch from 0e761f5 to 7f5da67 Compare July 10, 2026 11:56
@isaacroldan isaacroldan force-pushed the deploy-split/05a-release-config-diff branch from 7382b73 to ccf6b90 Compare July 10, 2026 11:56
@isaacroldan isaacroldan force-pushed the deploy-split/04-deploy-identifiers-shape branch from 7f5da67 to 8e14666 Compare July 10, 2026 12:56
@isaacroldan isaacroldan force-pushed the deploy-split/05a-release-config-diff branch from ccf6b90 to 680ecf7 Compare July 10, 2026 12:56
@isaacroldan isaacroldan force-pushed the deploy-split/04-deploy-identifiers-shape branch from 8e14666 to d1ec8fa Compare July 10, 2026 13:43
@isaacroldan isaacroldan force-pushed the deploy-split/05a-release-config-diff branch from 680ecf7 to 156849c Compare July 10, 2026 13:43
@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/common/object.d.ts
@@ -38,6 +38,14 @@ export declare function mapValues<T extends object, TResult>(source: T | null |
  * @returns True if the objects are equal, false otherwise.
  */
 export declare function deepCompare(one: object, two: object): boolean;
+/**
+ * Deeply compares two values and treats arrays as order-insensitive.
+ *
+ * @param one - The first value to be compared.
+ * @param two - The second value to be compared.
+ * @returns True if the normalized values are equal, false otherwise.
+ */
+export declare function deepCompareWithOrderInsensitiveArrays(one: unknown, two: unknown): boolean;
 /**
  * Return the difference between two nested objects.
  *

@isaacroldan isaacroldan force-pushed the deploy-split/04-deploy-identifiers-shape branch from d1ec8fa to fc1a187 Compare July 10, 2026 14:54
@isaacroldan isaacroldan force-pushed the deploy-split/05a-release-config-diff branch from 156849c to 7f752f1 Compare July 10, 2026 14:54
Base automatically changed from deploy-split/04-deploy-identifiers-shape to main July 10, 2026 15:51
Adds `buildConfigExtensionIdentifiersBreakdown` (a plain local-vs-remote field
diff using order-insensitive array comparison) and
`configExtensionsIdentifiersReleaseBreakdown`, and switches `release` to them:
the config breakdown now compares the version being released against the app's
active version instead of re-fetching remote configuration.

Only affects the `release` command. The shared breakdown helper is reused by
the deploy classification added next in the stack.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@isaacroldan isaacroldan force-pushed the deploy-split/05a-release-config-diff branch from 7f752f1 to 0c2f2f0 Compare July 10, 2026 15:54
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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant