Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
"lint-types-preact": "npm run preact && npm run types-preact && dtslint preact/types/ts4.1 --localTs ./node_modules/typescript/lib && dtslint preact/types/ts3.9.4 --localTs ./node_modules/typescript-3.9.4/lib",
"preact": "copyfiles -f {index,matcher,use-location,static-location}.js preact/",
"types-preact": "copyfiles -f types/{matcher,use-location,static-location}.d.ts preact/types",
"bundle": "rollup -e react,preact,use-sync-external-store/shim -f cjs --exports named --preserveModules -d ${DIR}cjs ${DIR}*.js && rollup -f cjs --exports auto -d ${DIR}cjs ${DIR}static-location.js && echo '{\"type\": \"commonjs\"}' > ${DIR}cjs/package.json",
"bundle": "rollup -e react,preact,use-sync-external-store/shim/index.js,use-sync-external-store/shim/index.native.js -f cjs --exports named --preserveModules -d ${DIR}cjs ${DIR}*.js && rollup -f cjs --exports auto -d ${DIR}cjs ${DIR}static-location.js && echo '{\"type\": \"commonjs\"}' > ${DIR}cjs/package.json",
"prepublishOnly": "npm run clean && npm run preact && npm run types-preact && npm run bundle && DIR=./preact/ npm run bundle"
},
"author": "Alexey Taktarov <[email protected]>",
Expand Down Expand Up @@ -141,7 +141,7 @@
"\\.js$": "jest-esm-jsx-transform"
},
"collectCoverageFrom": [
"*.js"
"*.js", "!use-sync-external-store*.js"
]
},
"devDependencies": {
Expand Down
7 changes: 6 additions & 1 deletion react-deps.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,12 @@ export {
forwardRef,
} from "react";

export { useSyncExternalStore } from "use-sync-external-store/shim";
// To resolve webpack 5 errors, while not presenting problems for native,
// we copy the approaches from https://github.com/TanStack/query/pull/3561
// and https://github.com/TanStack/query/pull/3601
// ~ Show this aging PR some love to remove the need for this hack:
// https://github.com/facebook/react/pull/25231 ~
export { useSyncExternalStore } from "./use-sync-external-store";

// Copied from:
// https://github.com/facebook/react/blob/main/packages/shared/ExecutionEnvironment.js
Expand Down
1 change: 1 addition & 0 deletions use-sync-external-store.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { useSyncExternalStore } from "use-sync-external-store/shim/index.js";
1 change: 1 addition & 0 deletions use-sync-external-store.native.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { useSyncExternalStore } from "use-sync-external-store/shim/index.native.js";
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not familiar with how modules are bundled in native, is this some kind naming convention? I see that this file isn't actually referenced anywhere else.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@molefrog it is referenced to the same degree that the .js version is, since we are not specifying any extension at all when we import it. It is up to the bundling system to select which extension to use, whether that be .js or .native.js!

That being said, I'm not too familiar with react native either, all I know is that I copied this fix over verbatim from react-query and it worked for them. 😄

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was able to find the docs on .native.js extension, it seems like their bundler can handle these types of files. Looks legit!