Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Optimistic writes disappear on rows retained from a derived store's draft

Abierto
#3,859 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
70/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript
Área
frontend

Línea de trabajo

Start by examining the store implementation, focusing on how writable derived stores retain rows from drafts and how createOptimisticStore applies updates. Look at the regression tests for #3767 to understand the expected behavior for ordinary writes, then add a similar test case for optimistic writes. The fix should ensure optimistic updates correctly modify retained rows, possibly by copying them as described in the workaround.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Describe the bug

A writable derived store retains a local row across a source refresh:

const [local, setLocal] = createStore<Row[]>(
  draft => [...source(), ...draft.filter(row => row.id === "local")],
  [],
);
const [view, setView] = createOptimisticStore(local);

After the refresh, an action optimistically sets the retained row's value to 1 and waits two seconds. The optimistic view keeps showing 0 throughout the action.

There are no concurrent actions or pending source updates; the setup updates finish before the action starts.

Your Example Website or App

https://s.olid.uk/id/zG2yQHbUQPa-SyUMiPm_pg

Steps to Reproduce the Bug or Issue
  1. Open the playground.
  2. Click Run once. The button creates a local row, refreshes the source, then starts the optimistic action, with 100 ms delays between setup updates.
  3. Observe that Local value stays at 0 during the two-second action.
Expected behavior

The optimistic view should show Local value: 1 while the action is pending, then revert to 0 when the action finishes without persisting the change.

Screenshots or Videos

No response

Platform
  • OS: Linux
  • Browser: Chromium 153.0.8010.12
  • Solid: published preview mizulu/solid2@5c2174c
Additional context

Returning a copy of the retained row (draft.filter(...).map(row => ({ ...row }))) makes the optimistic update appear and revert as expected. Both variants were tested in the browser.

The retained-draft-row pattern is already covered for ordinary writes by the regression tests for #3767. This report concerns optimistic writes over that store.

The playground has Tailwind disabled.

Lenguaje dominante
TypeScript
Estrellas
36.1k
Forks
1.1k
Merge medio
13 h 13 min
PR fusionados (30 d)
306

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de solidjs/solid

Todos los issues de solidjs/solid

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.