Skip to main content
Use a unique package prefix in your Alpine factory name, such as acmeRatingField. Export the factory itself as the module’s default export:
The component identity must match the entry in your package manifest. abi: 1 declares the currently supported JavaScript integration protocol. This declaration is optional for a factory loaded through its registered asset boundary: FLEX already receives its owner from the installed package. If supplied, the declaration must agree with that owner. The lazy loader prepares the exported factory, waits for its init() result and keeps its readiness tied to the rendered instance. init() can return a Promise. When a module or instance is replaced, its previous asynchronous result cannot mark the replacement ready. Two packages cannot replace one another’s factory under the same Alpine name. A conflict reports an error and preserves the first source. Reusing the same module and factory does not register or wrap it again. If your existing module self-registers a factory, use the exact exported function rather than a separate anonymous forwarding function. A different forwarding function is a different source and will be reported as a conflict during preparation.
These rules apply to factories registered through FLEX. Installed packages are trusted application code; direct registrations made outside FLEX are not intercepted. Loading two different releases under the same global alias requires an explicit upgrade strategy. FLEX preserves the current source rather than silently replacing it.

Continue reading

Extension guides · Definition and registration reference
Last modified on October 17, 2026