A scrolling list with real rubber-band edges: drag or flick past either end and it stretches with growing resistance, then springs back, pulling down from the top winds up a spinner that snaps when it's ready to refresh, and the wheel hands off to the page once you reach an end.
akapull to refresh·rubber band·overscroll
Run this in any project set up for the shadcn CLI. It copies the Elastic List source into your components folder, so the code is yours to change.
npx shadcn@latest add https://devl.dev/r/elastic-list.jsonImport it and render it. Every prop has a typed default, so it works straight away, and you pass your own data when you’re ready.
import { ElasticList } from "@/components/elastic-list";
export default function Page() {
return <ElasticList />;
}A free React motion component in the Surfaces collection, written in TypeScript with Tailwind CSS on coss ui. MIT licensed.
Read from the Elastic List source. Everything is optional unless it says required. It also accepts Omit<ComponentProps<"div">, "onRefresh">.
| Prop | Type | Default |
|---|---|---|
| onRefresh | () => Promise<unknown> | unknown | — |
| threshold | number | 64 |
| label | string | "List" |
| actionsRef | RefObject<ElasticListActions | null> | — |