Skip to content

Add active-app-version deploy classification module#8055

Draft
isaacroldan wants to merge 1 commit into
deploy-split/05a-release-config-difffrom
deploy-split/05b-deploy-app-version-module
Draft

Add active-app-version deploy classification module#8055
isaacroldan wants to merge 1 commit into
deploy-split/05a-release-config-difffrom
deploy-split/05b-deploy-app-version-module

Conversation

@isaacroldan

@isaacroldan isaacroldan commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Part 6 of 8 — splitting #8040. The new classification logic, added on its own for focused review.

WHY are these changes introduced?

deploy matched local extensions to remote registrations through the interactive Partners-era flow. On App Management, modules are identified deterministically by UID, so the matching can be derived from the app's active version instead of prompting.

WHAT is this pull request doing?

  • Adds the deploy-app-version module: classifies each local extension against the active version's modules — match by UID, with a legacy UUID fallback for un-migrated extensions — into created / updated / deleted / unchanged.
  • Adds deploy-app-version-migrations: runs the supported legacy extension migrations before classifying.
  • Reshapes getAppIdentifiers and EnsureDeploymentIdsPresenceOptions.envIdentifiers to the flat UUID map the module consumes.

The module is not wired into deploy yet (that's #8056), so behavior is unchanged. Covered by its own unit test.

How to test your changes?

pnpm --filter @shopify/app exec vitest run src/cli/services/context/deploy-app-version.test.ts

@github-actions github-actions Bot added the no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users. label Jul 10, 2026
@isaacroldan isaacroldan force-pushed the deploy-split/05a-release-config-diff branch from 7a1e052 to 7382b73 Compare July 10, 2026 11:28
@isaacroldan isaacroldan force-pushed the deploy-split/05b-deploy-app-version-module branch from adc37e4 to 838bb7e Compare July 10, 2026 11:28
@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/05b-deploy-app-version-module branch 3 times, most recently from 9ce00c5 to aefc40d Compare July 10, 2026 12:56
@isaacroldan isaacroldan force-pushed the deploy-split/05a-release-config-diff branch 2 times, most recently from 680ecf7 to 156849c Compare July 10, 2026 13:43
Adds `deploy-app-version` (classify each local extension against the active
version's modules — match by UID, legacy UUID fallback — into
created/updated/deleted/unchanged) and `deploy-app-version-migrations` (run the
supported legacy extension migrations first). Reshapes `getAppIdentifiers` and
`EnsureDeploymentIdsPresenceOptions.envIdentifiers` to the flat
UUID-by-local-identifier map the module consumes.

The module is not wired into `deploy` yet — the switch is the next commit — so
behavior is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@isaacroldan isaacroldan force-pushed the deploy-split/05b-deploy-app-version-module branch from aefc40d to 03fa20e Compare July 10, 2026 13:44
@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.
  *

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