Quick answer: Godot 4 Light2D shadow appearing one frame delayed after the occluder moves? Light updates per physics tick; occluder per process - sync via signal or use ProcessMode Always.

Wall moves; shadow follows one frame later. Visible at slow movement.

Sync occluder updates

Connect Process to LightUpdate; emit signal; light re-renders.

Or process per frame

ProcessMode = ProcessMode.ALWAYS on light; renders every frame.

Verify timing

Pause-frame inspection: occluder position vs shadow position. One-frame gap = the bug.

“Lights and occluders may have different update cadences. Sync them.”

For dynamic 2D shadows, the sync pattern is mandatory. Plan it.

Related reading