Skip to content

Introduce ApplicationModule base class, ModuleDescriptor, and ModuleRegistry#7291

Closed
isaacroldan wants to merge 1 commit into
mainfrom
04-14-introduce_applicationmodule_base_class_moduledescriptor_and_moduleregistry
Closed

Introduce ApplicationModule base class, ModuleDescriptor, and ModuleRegistry#7291
isaacroldan wants to merge 1 commit into
mainfrom
04-14-introduce_applicationmodule_base_class_moduledescriptor_and_moduleregistry

Conversation

@isaacroldan

Copy link
Copy Markdown
Contributor

WHY are these changes introduced?

Fixes #0000

WHAT is this pull request doing?

How to test your changes?

Post-release steps

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, so I've added a changelog entry with pnpm changeset add

…egistry

Phase 1 of the ExtensionSpecification → ApplicationModule refactor.

- Create ApplicationModule abstract base class that will replace ExtensionInstance.
  All shared instance state and infrastructure methods (build pipeline, file
  watching, handle/uid computation, bundling) live on the base class.
  Subclasses override behavior methods (appModuleFeatures, deployConfig, etc.)

- Create ModuleDescriptor interface for pre-instantiation concerns (type
  lookup, schema contribution, config parsing, instance factory). This
  replaces ExtensionSpecification for the pre-instantiation registry.

- Create ModuleRegistry class to hold descriptors and provide type lookup,
  schema building, and remote spec merging.

- Make ExtensionInstance extend ApplicationModule for backward compatibility.
  It delegates identity/behavior to the existing ExtensionSpecification,
  preserving the current API surface for all consuming files.

- Move shared types (ExtensionFeature, AssetIdentifier, Asset, etc.) to
  application-module.ts as canonical location; re-export from specification.ts
  for backward compat.

No consumer changes - all 513 model tests and 488 service tests pass.
@isaacroldan isaacroldan force-pushed the 04-14-introduce_applicationmodule_base_class_moduledescriptor_and_moduleregistry branch from 273a501 to a2ae333 Compare April 16, 2026 14:45
@github-actions

Copy link
Copy Markdown
Contributor

This PR seems inactive. If it's still relevant, please add a comment saying so. Otherwise, take no action.
→ If there's no activity within a week, then a bot will automatically close this.
Thanks for helping to improve Shopify's dev tooling and experience.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant