[2.0] Mounting a memo during a held action can crash a render callback
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- javascript, typescript
- Domain
- frontend
Research direction
Start by reproducing the crash in the linked playground, then trace the Solid 2.0 render callback path for a mounted <Show> child whose memo reads a held signal while another attribute changes. The issue names no source files or tests, so locate the relevant callback and add a regression test for the described timing. Done means the attribute update no longer throws or halts reactivity, and the subtree renders when the action settles.
Written by the indexing model from the issue text.
Description
Describe the bug
While an action holds a signal write, mount a child that creates a memo reading that signal and a div whose attributes read the held signal and a separate signal. Changing the separate signal before the action settles crashes the generated render callback and halts reactivity.
Chromium reports:
TypeError: Cannot destructure property 'e' of 'undefined' as it is undefined.
[REACTIVITY_HALTED] An uncaught error halted the reactive system.
Firefox reports TypeError: (destructured parameter) is undefined.
Your Example Website or App
https://s.olid.uk/id/4hhg1oZMQaasPugrwwLnfA
Steps to Reproduce the Bug or Issue
- Open the linked playground.
- Click Run once.
- The action stages a signal write and waits 2 seconds. After 100 ms, the Show child mounts and creates a memo reading that signal. After another 100 ms, a separate signal changes the div's title.
- Observe the TypeError and REACTIVITY_HALTED in the console.
Expected behavior
The pending read may hold the subtree's reveal, but updating another attribute should not invoke its render callback with undefined or halt reactivity. The subtree should render normally when the action settles.
Screenshots or Videos
No response
Platform
- OS: Linux (browser reproduction)
- Browser: Chromium 153.0.8010.12; Firefox 155.0
Additional context
Solid experimental preview mizulu/solid2@6f77b1b for solid-js, @solidjs/signals, and @solidjs/web.
The reproduction uses three signals, one action, one Show, and one createMemo. No stores, optimistic state, lists, routing, lazy components, or refresh runtime are involved. It uses ordinary 100 ms delays between updates; no manual flush or microtask scheduling. Tailwind is disabled.
- Dominant language
- TypeScript
- Stars
- 36.1k
- Forks
- 1.1k
- Avg merge
- 10h 7m
- Merged PRs (30d)
- 289
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from solidjs/solid
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 58/100
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
solidjs/solid#3766 · 1 comment ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
wardian-app/Wardian#1603 ·
Maintainers usually reply within 1 day
-
Sign the pledgeOpen
Difficulty 1/5 Under an hour Newbie friendliness 85/100
input-output-hk/devx-updates#168 ·
Maintainers usually reply within 1 day
-
triage
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
github/docs#46222 · 1 comment ·
Maintainers usually reply within 1 day
-
agent-ready area: config area: skills type: chore upstream: brain-kit
Difficulty 1/5 Under an hour Newbie friendliness 95/100
-
dev experience frontend good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
cuttle-cards/cuttle#1403 ·
Maintainers usually reply within 1 day