You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On experimental build 6f77b1b, writing a client-only flag to a writable derived store inside an action prevents a subsequent optimistic store update from appearing while that action is pending.
The optimistic store wraps the derived store. The local write only sets failed = false; the optimistic write changes title to "New" and sets saving = true. A direct JSX binding keeps showing "Old" and saving: false until the action completes.
Removing the setLocal call makes the optimistic update appear. The reproduction uses a normal component and direct text binding, without For, Show, routing, or external data loading.
During the two-second simulated save, observe Old / saving: false instead of the optimistic values.
After completion, the display changes to New / saving: false. The report records both states.
Reload and remove the marked setLocal call to compare: the optimistic values appear during the save.
Expected behavior
The optimistic view should immediately show New / saving: true while the action is pending, including when the action first writes to its underlying local store. After completion, it should follow the authoritative source with the temporary saving flag removed.
Platform
OS: Linux (Ubuntu / WSL)
Browsers: Chromium 153.0.8010.12 and Firefox 155.0; identical results
RC.13 shows the optimistic update correctly but suppresses the later source reconciliation discussed in #3733. The newer build reconciles correctly after completion, but loses the optimistic display while pending. Both playgrounds have Tailwind disabled.
Describe the bug
On experimental build
6f77b1b, writing a client-only flag to a writable derived store inside an action prevents a subsequent optimistic store update from appearing while that action is pending.The optimistic store wraps the derived store. The local write only sets
failed = false; the optimistic write changestitleto"New"and setssaving = true. A direct JSX binding keeps showing"Old"andsaving: falseuntil the action completes.Removing the
setLocalcall makes the optimistic update appear. The reproduction uses a normal component and direct text binding, withoutFor,Show, routing, or external data loading.Your Example Website or App
https://s.olid.uk/id/d27cf7de-2cc1-45a8-9144-6868e307a78f
Steps to Reproduce the Bug or Issue
Old / saving: falseinstead of the optimistic values.New / saving: false. The report records both states.setLocalcall to compare: the optimistic values appear during the save.Expected behavior
The optimistic view should immediately show
New / saving: truewhile the action is pending, including when the action first writes to its underlying local store. After completion, it should follow the authoritative source with the temporary saving flag removed.Platform
solid-js,@solidjs/web, and@solidjs/signalsfrom the Zulu6f77b1bpreview: updates mizulu/solid2#1 (comment)@solidjs/compiler2.0.0-rc.13Additional context
The identical reproduction with published RC.13 is here: https://s.olid.uk/id/cf602874-eee9-400c-bd96-3022a77b7291
6f77b1bNew / saving: trueOld / saving: falseOld / saving: falseNew / saving: falseRC.13 shows the optimistic update correctly but suppresses the later source reconciliation discussed in #3733. The newer build reconciles correctly after completion, but loses the optimistic display while pending. Both playgrounds have Tailwind disabled.