aidenybai / aidenybai/react-scan

Bug: useScan() ignores `enabled: false` and always starts scanning

Abierto
#460 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
21.8k
Forks
390
Merge medio
23 min
PR fusionados (30 d)
1

Descripción

## Description

`useScan()` unconditionally calls `start()` regardless of the `enabled` option, unlike `scan()` which properly guards against it.

```ts
// scan() — respects enabled ✅
export const scan = (options: Options = {}) => {
setOptions(options);
if (options.enabled === false && options.showToolbar !== true) {
return;
}
start();
};

// useScan() — ignores enabled ❌
export const useScan = (options: Options = {}) => {
setOptions(options);
start(); // always runs regardless of enabled
};
```

## Reproduction

```tsx
import { useScan } from "react-scan";

function App() {
useScan({ enabled: false }); // scanning still activates
return

Hello
;
}
```

## Expected Behavior

When `enabled: false` is passed to `useScan()`, scanning and the toolbar should not activate — matching the behavior of `scan()`.

## Related

- #269 — "scan is always enabled as long as showToolbar is true" (closed but a commenter confirmed still broken in 0.3.3)
- #101 — Added the `enabled` guard to `scan()` but never applied it to `useScan()`

## Proposed Fix

Apply the same iframe and `enabled` guards from `scan()` to `useScan()`:

```ts
export const useScan = (options: Options = {}) => {
setOptions(options);
const isInIframe = Store.isInIframe.value;

if (
isInIframe &&
!ReactScanInternals.options.value.allowInIframe &&
!ReactScanInternals.runInAllEnvironments
) {
return;
}

if (options.enabled === false && options.showToolbar !== true) {
return;
}

start();
};
```

Branch with the fix: https://github.com/jalbarrang/react-scan/tree/fix/usescan-respects-enabled

> _Note: Unable to open a PR since the repo restricts PRs to collaborators._

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.