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.