Skip to content

Make deploy consumers speak app-module UUID/registration-ID maps#8047

Merged
isaacroldan merged 1 commit into
mainfrom
deploy-split/04-deploy-identifiers-shape
Jul 10, 2026
Merged

Make deploy consumers speak app-module UUID/registration-ID maps#8047
isaacroldan merged 1 commit into
mainfrom
deploy-split/04-deploy-identifiers-shape

Conversation

@isaacroldan

@isaacroldan isaacroldan commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Part 4 of 8 — splitting #8040.

WHY are these changes introduced?

Groundwork for replacing the identifier-matching flow. The bundling and upload path took the whole legacy Identifiers object; decoupling it to plain UUID-by-local-identifier maps lets the new flow (#8055/#8056) supply identifiers without that structure.

WHAT is this pull request doing?

  • Introduces ExtensionUuidsByLocalIdentifier and DeployIdentifiers.
  • Switches app.manifest, ExtensionInstance.bundleConfig, and bundleAndBuildExtensions to plain UUID maps, dropping the always-undefined dev-dashboard outputId plumbing.
  • deploy still derives identifiers from the existing matching flow and adapts them into the new maps.

Behavior-preserving refactor.

How to test your changes?

pnpm --filter @shopify/app exec vitest run src/cli/services/deploy src/cli/models/app src/cli/models/extensions

isaacroldan commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

@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 9, 2026
@isaacroldan isaacroldan marked this pull request as ready for review July 10, 2026 11:12
@isaacroldan isaacroldan requested a review from a team as a code owner July 10, 2026 11:12
@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/03-webhook-subscription-uid branch from e455880 to 9ecd55c Compare July 10, 2026 12: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/03-webhook-subscription-uid branch from 9ecd55c to 87d7b77 Compare July 10, 2026 13:42
@isaacroldan isaacroldan force-pushed the deploy-split/04-deploy-identifiers-shape branch from 8e14666 to d1ec8fa 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.
  *

Introduces `ExtensionUuidsByLocalIdentifier` and `DeployIdentifiers` and
switches the manifest and bundling consumers to plain UUID-by-local-identifier
maps: `app.manifest`, `ExtensionInstance.bundleConfig`, and
`bundleAndBuildExtensions` no longer take the full `Identifiers` object (the
always-undefined dev-dashboard `outputId` plumbing is removed with it).

`deploy` still derives identifiers from the existing matching flow and adapts
them into these maps, so behavior is unchanged. Later commits replace the
matching flow itself.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@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/03-webhook-subscription-uid branch from 87d7b77 to d3fd852 Compare July 10, 2026 14:54
// Ideally we want to return `this.uid` always. To keep supporting Partners API we accept a value to override that.

return outputId ?? this.uid
getOutputFolderId() {

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.

❤️‍🔥

Base automatically changed from deploy-split/03-webhook-subscription-uid to main July 10, 2026 15:42
@isaacroldan isaacroldan added this pull request to the merge queue Jul 10, 2026
Merged via the queue into main with commit 70621b9 Jul 10, 2026
29 of 53 checks passed
@isaacroldan isaacroldan deleted the deploy-split/04-deploy-identifiers-shape branch July 10, 2026 15:51
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.

2 participants