Skip to content

2.0.0-rc.8 shared render effect entangles a synchronous action with an unrelated pending update #3407

Description

@GabbeV

Describe the bug

A synchronous action gets held by an unrelated pending update when both are read in the same render effect.

Splitting the expression into separate JSX holes, or calling setB directly instead of through action, removes the wait.

Your Example Website or App

https://s.olid.uk/id/P_RewMzJQ9ylqeKOIsYEmw

Steps to Reproduce the Bug or Issue

  1. Click Start.
  2. B is set after 500ms, but the output stays at 0:0 until becoming 1:1 at 2 seconds.
  3. Replace the paragraph with <p>{b()}:{detailsA()}</p> and rerun. It now shows 1:0 at 500ms.

Expected behavior

B should publish at 500ms, showing 1:0, then 1:1 when A finishes. Sharing a render effect should not entangle the updates.

Screenshots or Videos

No response

Platform

  • OS: [e.g. macOS, Windows, Linux]
  • Browser: [e.g. Chrome, Safari, Firefox]
  • Version: [e.g. 91.1]

Additional context

Possibly related to #3322.

The merge happens when recompute re-enters the shared effect's _transition while another transition is active. Excluding effects from that re-entry fixes this repro, but breaks existing reveal-completion tests, including cases covered by #3305/#3334. Those suspended reveals still need to resume correctly.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions