Open giantslogik opened 2 months ago
I wasn't aware of this issue, but we have a medium-term goal of splitting up InstantSearch.js into a core part that doesn't import preact and any browser code and one that does, which can then be used for React InstantSearch core too. Unfortunately for now I don't see a workaround without that amount of work
🐛 Current behavior
"react-instantsearch-core": "^7.13.1" introduces DOM types into react native apps. We have experienced this issue with "react-instantsearch-hooks": "^6.33.0" as well.
This causes invalid code in react native to be accepted as valid by tsc causing crashes at run time in our Apps. (At run time typescript/javascript support is provided by hermes.)
All variables and functions valid in DOM environment (eg. close() , the window global , ScrollY, StyleSheet ) and thousands of other variables / functions are considered valid due to node_modules/typescript/lib/lib.dom.d.ts being included.
Via the tsconfig explainFiles flag i was able to determine the responsible node modules. https://www.typescriptlang.org/tsconfig/#explainFiles
🔍 Steps to reproduce
"react-instantsearch-core": "^7.13.1"
to a react native AppLive reproduction
https://itdoesntseemtobefeasibletoreproRN.com
💭 Expected behavior
tsc should flag close() as an undefined function when running under React Native. Using instantsearch-core / instantsearch.js treats any code valid in a browser environment as valid, even when invalid for react-native.
Package version
"react-instantsearch-core": "^7.13.1"
Operating system
NA
Browser
NA
Code of Conduct