Fix error in alternative JS environments #2500
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Use
globalThis
instead ofwindow || global
when checking if multiple copies of@emotion/react
are runningWhy:
Bun.js, a new JS runtime environment I'm working on - one quirk is it reads from the
"browser"
field inpackage.json
. This improves compatibility for many npm packages, but sometimes breaks stuff.@emotion/react
is one case where that doesn't work, but the fix is simple and also improves@emotion/react
's compatibility with web workers (if there is a usecase for that)How:
globalThis
is the global context identifier available in all major JavaScript engines newer than Internet Explorer 11. It works in Deno, Node.js 12.0.0+, web workers, web browsers, etc. caniuseFor maximum compatibility, the code checks
globalThis
is notundefined
before falling back to eitherwindow
orglobal
(as before).Checklist:
Also I'm not actually sure if a changeset is appropriate here