Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

`useSelector` triggers `state_proxy_equality_mismatch` on every store update in svelte-store

Aperta Adatta ai principianti
#322 2 commenti 5 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@seongwon030 ci sta già lavorando.

Dal 22/5/2026.

  • #334 di @seongwon030 — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
typescript
Ambito
frontend

Direzione di ricerca

Inizia in packages/svelte-store/src/useSelector.svelte.ts, nel ramo di confronto indicato, quindi riproduci l'avviso con lo Svelte Playground collegato o con la configurazione @tanstack/svelte-table segnalata. Verifica l'interazione tra slice, data e defaultCompare; il lavoro è completato quando l'avviso state_proxy_equality_mismatch è scomparso e il confronto funziona correttamente negli aggiornamenti dello store.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Describe the bug

In useSelector, slice is Proxied via $state, whereas the data resolved through selector(s) is not Proxied.

Because of this, the comparison performed by compare function (where defaultCompare is used) triggers Svelte's state_proxy_equality_mismatch warning. This causes the comparison to always return false, making this conditional branch a kind of dead code.

https://github.com/TanStack/store/blob/a378a51fa53af899dec1c146933d037a2811a86e/packages/svelte-store/src/useSelector.svelte.ts#L37-L50

Steps to Reproduce the Bug or Issue

It is easiest to try out @tanstack/svelte-table v9 alpha to understand it better.

Here is the demo in Svelte Playground.
https://svelte.dev/playground/6cb4726d28594a3a9781f8a785d331fe?version=latest

<script lang="ts">
  import { createTable, tableFeatures } from '@tanstack/svelte-table';

  const _features = tableFeatures({});
  let data = $state([{ id: 1 }]);
  const table = createTable({
    _features,
    _rowModels: {},
    get data() { return data; },
    columns: [{ accessorKey: 'id', header: 'ID' }],
  });
</script>

<button onclick={() => (data = [...data, { id: data.length + 1 }])}>Add</button>
{#each table.getRowModel().rows as row (row.id)}
  <div>{row.original.id}</div>
{/each}
Expected behavior

Fix this warning so the comparison works right.

Screenshots or Videos

No response

Platform
Additional context

It will probably be resolved just by changing slice variable $state to $state.raw.
This is because the slice reassigning the entire variable, so there seems to be no reason to make it a Proxy.

Lingua principale
TypeScript
Stelle
900
Fork
116
Merge medio
2g 2h
PR unite (30g)
6

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di TanStack/store

Tutte le issue di TanStack/store

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.