Progress is a control, not a painted row
The web transfer row paints its own background as the progress fill. That is a tier-1 recipe for a wide desktop list. On iOS progress is a 4pt ProgressView under the subtitle.
The download button is the one composed control: iOS has no determinate circular progress button.
Still stock parts, a Gauge plus an SF Symbol in a 44pt target. Five states, one position.
Failure reads as a sentence, not a code. No seeders found, never ERR_NO_PEERS, and never a dialog.
Row progress
ProgressView 4pt
--yellow-solid on --component-bg-active
Row height
76pt
two lines plus the bar
Ring
44pt · 2pt
Gauge · --line track
Segmented
32pt · 9pt
stock Picker, system selection
Failed
--red-text-secondary
subtitle + red bar remainder
Swipe
Retry / Remove
system widths, system roles
Numerics
Berkeley Mono
rate, remaining, ratio, quota
Spacing
4 / 8 / 16
put.io ramp inside the row