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
globalThisinstead ofwindow || globalwhen checking if multiple copies of@emotion/reactare 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/reactis 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:
globalThisis 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
globalThisis notundefinedbefore falling back to eitherwindoworglobal(as before).Checklist:
Also I'm not actually sure if a changeset is appropriate here