stnd.buildSTANDARD MANUAL2026-07-15

5.2 Launcher Trigger Collision Detected

Launcher Trigger Collision Detected

Error: [Launcher] Fatal Collision: Trigger "::trigger" already registered by "module-a". Attempting to register again from "module-b".

The Problem

Two different modules (or a module and a project-level configuration) are attempting to register the same command trigger (e.g., ::login) in the Launcher.

The Why

Launcher triggers serve as unique identifiers for views and actions within the Standard ecosystem. If the system allowed duplicate triggers:

  1. Silent Overwriting: One registration would simply disappear, replaced by the last one to load.
  2. Unpredictable UI: The feature you expect to see (e.g., a “Login” view) might be replaced by a different one from another module.
  3. Architectural Drift: It would encourage messy overrides instead of clean, modular extension.

By throwing a Fatal Error during the Launcher’s boot phase, the framework forces you to resolve this ambiguity immediately, ensuring your application behavior remains explicit and predictable.

The Solution

  1. Rename the Trigger: If the two features are distinct, change the trigger property in one of the module manifests.
  2. De-duplicate Modules: Check if you have redundant modules providing the same feature. For example, you might have both a local launcher module and the generic @stnd/account package both claim ::login. Disable or remove the one you don’t need.
  3. Registration Logic: Ensure that your module manifests (launcher:view or launcher:action hooks) aren’t accidentally registering the same ID twice.

See also: https://stnd.build/launcher-trigger-collision