New async memo reveals a held signal update early
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- javascript, typescript
- Área
- frontend
Línea de trabajo
Start by reading the async memo and scheduled render-effect behavior in the repository, then compare the issue’s reproduction with the earlier report #3408. The linked playground reproduces the early reveal; no source file or test is named, so locate or add focused coverage for synchronous versus asynchronous first results and the explicit flush. Done when the new observer remains held until the slow derivation settles.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
A newly created async memo reads an update that is still held by an existing async derivation, then notifies a scheduled render effect before that update is revealed. The existing scheduled render effect still last reported count = 1, slow = 1, while the new one reports 2.
The same newly created memo stays held when its first result is synchronous. Returning Promise.resolve(count()) instead makes it reveal early.
Your Example Website or App
https://s.olid.uk/id/22KYZfNOSnqqlHlUzL1MqQ
Steps to Reproduce the Bug or Issue
- Open the playground console and press Build (or reload).
- After about one second, observe
parent 1 1. - About 100ms later, observe
child 2while the parent is still held at1 1. - Roughly one second after that, the slow derivation settles and the parent finally reports
parent 2 2.
Expected behavior
The new scheduled render observer should stay held until the input update can be revealed with its slow derivation. An asynchronous first result should preserve the inherited hold, just as a synchronous first result does.
Screenshots or Videos
No response
Platform
- OS: Linux
- Browser: Chromium 151.0.7922.173
- Solid: 2.0.0-rc.13 in the playground; also reproduced on upstream
nextat b0bad02, in development and production.
Additional context
Both render effects use { schedule: true }, so this excludes the immediate mounting-effect path. The repro uses only primitives.
Two controls preserve the hold:
- Replace
Promise.resolve(count())withcount(). - Remove the explicit
flush()before creating the new memo.
The development warnings about unowned effects are expected in this minimal repro.
Related earlier report: #3408. Here the synchronous first result behaves correctly; the asynchronous first result does not.
- Lenguaje dominante
- TypeScript
- Estrellas
- 36.1k
- Forks
- 1.1k
- Merge medio
- 10 h 7 min
- PR fusionados (30 d)
- 289
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de solidjs/solid
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 58/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
solidjs/solid#3766 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de solidjs/solid
Issues similares
-
fix: txId branch of the contract-state streams drops every state after the named transactionAbiertobot:ai-assisted status:untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
midnightntwrk/midnight-js#1424 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
mksglu/context-mode#1268 ·
Los mantenedores suelen responder en 5 días
-
Edit:Abiertocheck:failed streams:edit
Dificultad 2/5 1-3 horas Aptitud para principiantes 60/100
iptv-org/iptv#54352 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[Table] reserveSelectedRowOnPaginate=false 时表头全选包含其他页数据Posiblemente ocupada @dvd233 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Tencent/tdesign-react#4416 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
area:widget bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
interledger/publisher-tools#894 ·
Los mantenedores suelen responder en 1 día