Component · shippable
Slingshot
Pull-to-refresh, but you're winding a slingshot. The band stretches, thins and creaks as it takes tension. Past the notch it goes hot and locks. Let go and it fires the request up — the fresh posts come back down.
Feed
No backend — fetchFeed() in app.js fakes latency and
hands back posts, so you can watch the whole loop. Point it at your endpoint and
the component is unchanged. The pull uses the real iOS rubber-band curve, the
release is a spring integrator seeded with the tension you wound in, and the band
thins as it stretches because rubber conserves volume — so the whole thing is one
physical system, not a set of tweens.