← All @molecule/* packages · App templates
@molecule/app-relative-time-reactFeature · relative-time · App (browser) · v1.0.1 · Apache-2.0
formatRelativeTime utility + RelativeTime component with auto-refresh
npm install @molecule/app-relative-time-react@molecule/app-relative-time-react is a ready-made relative-time feature for the app (browser) side. It composes the core interfaces it needs, so it works with whichever providers your app has bonded.
import { RelativeTime, formatRelativeTime } from '@molecule/app-relative-time-react'
// Component — auto-refreshes every minute
;<RelativeTime date="2024-06-01T10:00:00Z" titleLocale="en-US" />
// Utility — one-shot formatting
const label = formatRelativeTime('2024-06-01T10:00:00Z', Date.now(), 'en-US')
// → "5 minutes ago"Works with: @molecule/app-react, @molecule/app-ui, @molecule/app-ui-react
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
React relative-time formatting.
Exports:
formatRelativeTime(date, now?, locale?) — utility using Intl.RelativeTimeFormat.<RelativeTime> — live-updating component ("5 minutes ago").import { RelativeTime, formatRelativeTime } from '@molecule/app-relative-time-react'
// Component — auto-refreshes every minute
;<RelativeTime date="2024-06-01T10:00:00Z" titleLocale="en-US" />
// Utility — one-shot formatting
const label = formatRelativeTime('2024-06-01T10:00:00Z', Date.now(), 'en-US')
// → "5 minutes ago"
feature
npm install @molecule/app-relative-time-react @molecule/app-react @molecule/app-ui @molecule/app-ui-react react
npm install -D @types/react
RelativeTimePropsProps accepted by the {@link RelativeTime} component.
interface RelativeTimeProps {
/** ISO string, Date, or epoch ms. */
date: Date | string | number
/** Locale override. */
locale?: string
/** Auto-refresh interval (ms). Defaults to 60_000 (1 min). Set 0 to disable. */
refreshMs?: number
/** When provided, renders the absolute date in a `title` attribute for hover tooltip. */
titleLocale?: string
/** Extra classes (applies to the surrounding `<time>` element). */
className?: string
}
formatRelativeTime(input, now, locale)Formats a date, timestamp, or epoch number as a human-readable relative time string (e.g. "5 minutes ago", "in 3 days") using {@link Intl.RelativeTimeFormat}.
function formatRelativeTime(
input: string | number | Date,
now?: number | Date,
locale?: string,
): string
RelativeTime(props)Live-updating relative time display ("5 minutes ago"). Re-computes on a timer so the text stays accurate as the user leaves the page open.
Pass refreshMs={0} for a one-shot render (cheaper in long lists;
the parent can provide a single ticker).
function RelativeTime({
date,
locale,
refreshMs = 60_000,
titleLocale,
className,
}: RelativeTimeProps): React.JSX.Element
props — Component props (see {@link RelativeTimeProps}).Peer dependencies:
@molecule/app-react ^1.0.1@molecule/app-ui ^1.0.1@molecule/app-ui-react ^1.0.1react ^18.0.0 || ^19.0.0@molecule/app-react
@molecule/app-ui
@molecule/app-ui-react
react
Zero molecule wiring required — no ClassMap, no i18n provider, no bonds; safe in any React tree.
<RelativeTime> props: date (Date | ISO string | epoch ms), locale?,
refreshMs? (default 60000 — pass 0 to disable the per-instance timer,
cheaper in long lists), titleLocale? (adds an absolute-date title
tooltip), className?.
locale defaults to the runtime's locale, NOT your app's i18n locale —
pass the active locale explicitly for consistent localized output.
When Intl.RelativeTimeFormat is unavailable, fallback strings
("just now", "5m ago") are English-only.