uniqueId()
uniqueId(
prefix?):string
Generates a unique ID. If prefix is given, the ID is appended to it.
IDs are unique within the current runtime session.
Parametersβ
prefix?: string = ""β
The value to prefix the ID with.
Returns: stringβ
The unique ID string.
Sinceβ
2.0.0
Noteβ
Counter resets on page reload or process restart.
Also known asβ
uid (Radashi) Β· uniqueId (Lodash, es-toolkit) Β· β (Remeda, Ramda, Effect, Modern Dash, Antfu)
Exampleβ
uniqueId(); // => '1'
uniqueId(); // => '2'
uniqueId('user_'); // => 'user_3'
uniqueId('item_'); // => 'item_4'
// Use case: Generate unique keys for React
const items = data.map(item => ({
...item,
key: uniqueId('item_')
}));
// Use case: Create unique DOM IDs
const modalId = uniqueId('modal_');
How it works?β
Generates a unique ID, optionally with a prefix.
Counter Mechanismβ
Use Casesβ
IDs are unique within the current runtime session.
Use Casesβ
React list keys for dynamic content πβ
Generate stable unique keys for dynamically created list items. Essential when items lack natural unique identifiers.
// Generate IDs once when items are created, not during render
const itemsWithKeys = rawItems.map(item => ({
...item,
key: uniqueId('card_'),
}));
// Then use the stable key in render
itemsWithKeys.map(item => <Card key={item.key} {...item} />);
// Keys: 'card_1', 'card_2', 'card_3' (stable across re-renders)
Accessible form elements with unique IDs πβ
Create unique IDs for form elements to associate labels. Critical for accessibility compliance.
const id = uniqueId('field_');
<label htmlFor={id}>Email</label>
<input id={id} type="email" />
Temporary entity IDs before server persistenceβ
Create temporary IDs for optimistic updates before server assigns real IDs.
const tempId = uniqueId('temp_');
todos.push({ id: tempId, text, pending: true });
// Replace with real ID after API response
Generate unique overlay container IDsβ
Create unique IDs for dynamically created overlay containers (portals). Essential for overlay/portal systems that need to manage multiple concurrent overlays.
const createOverlayContainer = () => {
const id = uniqueId("cdk-overlay-");
const container = document.createElement("div");
container.id = id;
container.className = "overlay-container";
container.setAttribute("role", "dialog");
container.setAttribute("aria-modal", "true");
document.body.appendChild(container);
return { id, container };
};
// Each overlay gets its own unique container
const dialog1 = createOverlayContainer(); // cdk-overlay-1
const dialog2 = createOverlayContainer(); // cdk-overlay-2
Generate unique ARIA IDs for connected componentsβ
Create unique IDs to connect ARIA attributes between related elements. Critical for accessible components like tooltips, dialogs, and comboboxes.
const createTooltip = (trigger: HTMLElement, content: string) => {
const tooltipId = uniqueId("tooltip-");
const tooltip = document.createElement("div");
tooltip.id = tooltipId;
tooltip.role = "tooltip";
tooltip.textContent = content;
trigger.setAttribute("aria-describedby", tooltipId);
return { tooltipId, tooltip, trigger };
};
Generate notification IDs for deduplicationβ
Create unique IDs for toast notifications to prevent duplicates. Essential for notification systems that need to track and dismiss individual toasts.
const showToast = (message: string, type: "success" | "error") => {
const id = uniqueId("toast-");
toastQueue.push({ id, message, type, createdAt: Date.now() });
renderToasts(toastQueue);
setTimeout(() => {
toastQueue = toastQueue.filter((t) => t.id !== id);
renderToasts(toastQueue);
}, 5000);
};
Create unique canvas element IDs for chartsβ
Generate unique IDs for multiple chart canvas elements on the same page. Essential for dashboards rendering several charts simultaneously.
const createChart = (data: ChartData, container: HTMLElement) => {
const canvasId = uniqueId("chart-canvas-");
const canvas = document.createElement("canvas");
canvas.id = canvasId;
container.appendChild(canvas);
return new Chart(canvas, { data });
};