Practicalhooks
forReact,VueandNuxt

Typed, SSR-safe hooks and composables with shared core behavior and framework-native adapters.

A growing collection of reusable frontend hooks built for React, Vue, Nuxt, TanStack Start

$ npm install @cermuel/hooks

Hooks

Browse hooks

Browse all hooks

useAsync

import { useAsync } from "@cermuel/hooks/react";export function useAsyncExample() {  async function fetchUser() { return { name: 'Ada' }; }  const request = useAsync(fetchUser);  return <button type="button" onClick={() => void request.execute()}>Load</button>;}

useAutosave

import { useState } from "react";import { useAutosave } from "@cermuel/hooks/react";export function useAutosaveExample() {  const [draft, setDraft] = useState({ title: "" });  const autosave = useAutosave(draft, async () => undefined);  return (    <label>      <input        value={draft.title}        onChange={(event) => setDraft({ title: event.target.value })}      />      {autosave.status}    </label>  );}

useBattery

import { useBattery } from "@cermuel/hooks/react";export function useBatteryExample() {  const battery = useBattery();  return <p>{battery.level == null ? "Unknown" : battery.level}</p>;}

useBreakpoint

import { useBreakpoint } from "@cermuel/hooks/react";export function useBreakpointExample() {  const breakpoint = useBreakpoint({ sm: 640, md: 768, lg: 1024 });  return <p>{breakpoint}</p>;}

useClickOutside

import { useState, useRef } from "react";import { useClickOutside } from "@cermuel/hooks/react";export function useClickOutsideExample() {  const [open, setOpen] = useState(true);  const target = useRef<HTMLDivElement>(null);  useClickOutside(target, () => setOpen(false));  return <div ref={target}>{open ? "Open" : "Closed"}</div>;}

useClipboard

import { useClipboard } from "@cermuel/hooks/react";export function useClipboardExample() {  const { text, copy } = useClipboard();  return <button type="button" onClick={() => void copy("Hello")}>{text || "Copy"}</button>;}

Work with me

Need an engineer for your product?

I work on frontend systems, product interfaces, docs, and practical developer tooling. Book a project or drop a line, whichever is easier.