Skip to content

Allow Web Workers on legacy #10383

@Tal500

Description

@Tal500

Description

Web workers are broken on legacy mode, althought caiuseit shows it can be used on legacy browsers(IE10+ supports for example non-shared web workers). Not even a warning is displayed to the user.

This could have been filed as a bug request, but I think it's better as a feature.

Suggested solution

I saw the code of the Vite worker plugin, and the initial impression is that plugin-legacy can use a regular expressions on renderChunk to find the locations the expression "new Worker" is defined, find the right worker file it reference, and transform it to legacy using Babel. But:

  1. That's seems much more complicated than it needs to.
  2. Does not work with worker inline import(i.e. inline as a query param in import).

Can we somehow overcome this, maybe by replace the worker constructions with some tokens on transform(), and resolves them later in the renderChunk phase?
This way:

  1. Vite worker plugin will check if the current format isn't system, and only then will emit the workers assets and replace the URL/inlined-code there.
  2. Vite plugin-legacy will do the same only for the system format, and will transform the worker code via Babel to support legacy.

Alternative

No response

Additional context

No response

Validations

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions