Quick answer: Godot 4 parallel tween emitting 'finished' early when only one step completes? Parallel grouping requires set_parallel on each step - default chain semantics use serial.

Two property tweens in parallel: alpha 1s, scale 2s. finished fires at 1s.

Mark each step parallel

tween.tween_property(node, "modulate:a", 0, 1)
tween.parallel().tween_property(node, "scale", ..., 2)

parallel() applies to the next step; everything else is serial.

Use set_parallel for whole tween

tween.set_parallel(true) makes every step parallel; revert with tween.chain() when needed.

Verify with print on finish

Print at finished. The reported time should be max(steps), not min(steps).

“Tween defaults to serial. Parallel is opt-in per step.”

Build a wrapper that takes a list of properties+durations and runs in parallel. Less boilerplate per call site.

Related reading