Skip to content

react-instantsearch-core introduces DOM types into react native Apps. #6365

@giantslogik

Description

@giantslogik

🐛 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

node_modules/typescript/lib/lib.dom.d.ts
  Library referenced via 'dom' from file 'node_modules/preact/src/jsx.d.ts'
node_modules/preact/src/index.d.ts
  Imported via "preact" from file 'node_modules/instantsearch.js/..........' with packageId 'preact/src/index.d.ts@10.21.0'
node_modules/instantsearch.js/es/index.d.ts
  Imported via 'instantsearch.js' from file 'node_modules/react-instantsearch-core/......' with packageId 'instantsearch.js/es/index.d.ts@4.74.1'

🔍 Steps to reproduce

  1. Add "react-instantsearch-core": "^7.13.1" to a react native App
  2. In any source file import { InstantSearch } from 'react-instantsearch-core';
  3. Edit any App source file and call the close() method.
  4. run tsc (or within VSCode) . It fails to mark the close() call as an error as in a DOM environment close() calls the global window.close()

Live 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

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Library: React InstantSearch ≥ 7Issues in any of the react-instantsearch@7 packages (formerly named react-instantsearch-hooks)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions