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:
- Silent Overwriting: One registration would simply disappear, replaced by the last one to load.
- Unpredictable UI: The feature you expect to see (e.g., a “Login” view) might be replaced by a different one from another module.
- 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
- Rename the Trigger: If the two features are distinct, change the
triggerproperty in one of the module manifests. - De-duplicate Modules: Check if you have redundant modules providing the same feature. For example, you might have both a local
launchermodule and the generic@stnd/accountpackage both claim::login. Disable or remove the one you don’t need. - Registration Logic: Ensure that your module manifests (
launcher:vieworlauncher:actionhooks) aren’t accidentally registering the same ID twice.
Related Concepts
- modules: How the Standard module system works.
- module-duplicate-id: Similar uniqueness requirements for module IDs.