React hooks for async loads that never land out of order, plus the small state hooks an app builds screens from. Package @rethunk/react-load-hooks. First consumer: Mortar.
Only the newest load lands: a slower, older answer or error never overwrites a newer one, and an unmounted component hears nothing.
const { data, loading, error, reload } = useLoaded(() => fetchRepos(owner), [owner], [])bun add @rethunk/react-load-hooksA worked example and the contracts: HUMANS.md.
useLoadedanduseDebouncedLoadfetch on dependency changes and drop superseded answers.loaderis the same logic without React, for a store or a class.useStoredStatepersists UI state inlocalStorage.useWidthtracks an element's width before paint;useDebouncedValuesettles a fast-changing value.sameValue,keepUnchangedandkeepFieldskeep the stored value when a fresh backend answer is equal, so subscribers do not re-render.clockWhen,absoluteWhenandrelativeWhenlabel a time throughIntl: "3 minutes ago" within a week, a date after.useNowValueanduseSecondValueshare one timer per period and re-render only on a changed answer.
| Doc | Audience |
|---|---|
| HUMANS.md | Running and using the package |
| AGENTS.md | Internals, invariants, and why |
| CONTRIBUTING.md | Process — commits, tests, docs |
| SECURITY.md | Vulnerability disclosure |
| CHANGELOG.md | Release notes |
MIT — see LICENSE. © 2026 Rethunk.Tech, LLC.