Skip to content

bug: if a web plugin is used without await, multiple instances get created #6938

Open
@jcesarmobile

Description

@jcesarmobile

Bug Report

Capacitor Version

5.x

Platform(s)

web

Current Behavior

If a web plugin is used without await, multiple instances get created, which causes problems for addListener calls.
See ionic-team/capacitor-plugins#1699 for more details.

Expected Behavior

A single instance of the plugin should be created

Code Reproduction

https://github.com/miqmago/capacitor-plugins-issue-1699

Other Technical Details

If not using await on the plugin calls, the plugin's registerPlugin function gets executed multiple times, and the way we have created the plugins a new plugin gets created every time.
Note that the web's registerPlugin doesn't get executed multiple times, the plugin is only registered once on web as expected and it already has a "singleton" like mechanism that would return an existing plugin if it was already created, but the plugin's registerPlugin multiple executions don't result in multiples web runtime registerPlugin calls.

Additional Context

While this could be fixed plugin by plugin (like the proposed "singleton" in the linked issue or creating the web plugin outside of the registerPlugin call so it always returns the same, I think we should try to fix it in @capacitor/core so it get fixed for all plugins without additional changes on them.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Backlog 🤖

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions