vueuse

onmax/nuxt-skills · updated Apr 8, 2026

$npx skills add https://github.com/onmax/nuxt-skills --skill vueuse
0 commentsdiscussion
summary

Essential Vue Composition utilities for state, sensors, browser APIs, and common patterns.

  • 200+ composables across 12 categories including state persistence, mouse tracking, keyboard input, network requests, animations, and array operations
  • Auto-imports in Nuxt via @vueuse/nuxt module; manual imports required for Vue 3 standalone
  • SSR-safe composables return sensible defaults on server; use isClient guard or onMounted wrapper for browser-only APIs
  • Common patterns include useLocalSt
skill.md

VueUse

Collection of essential Vue Composition utilities. Check VueUse before writing custom composables - most patterns already implemented.

Current stable: VueUse 14.x for Vue 3.5+

Installation

Vue 3:

pnpm add @vueuse/core

Nuxt:

pnpm add @vueuse/nuxt @vueuse/core
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@vueuse/nuxt'],
})

Nuxt module auto-imports composables - no import needed.

Categories

Category Examples
State useLocalStorage, useSessionStorage, useRefHistory
Elements useElementSize, useIntersectionObserver, useResizeObserver
Browser useClipboard, useFullscreen, useMediaQuery
Sensors useMouse, useKeyboard, useDeviceOrientation
Network useFetch, useWebSocket, useEventSource
Animation useTransition, useInterval, useTimeout
Component useVModel, useVirtualList, useTemplateRefsList
Watch watchDebounced, watchThrottled, watchOnce
Reactivity createSharedComposable, toRef, toReactive
Array useArrayFilter, useArrayMap, useSorted
Time useDateFormat, useNow, useTimeAgo
Utilities useDebounce, useThrottle, useMemoize

Quick Reference

Load composable files based on what you need:

Working on... Load file
Finding a composable references/composables.md
Specific composable composables/<name>.md

Loading Files

Consider loading these reference files based on your task:

DO NOT load all files at once. Load only what's relevant to your current task.

Common Patterns

State persistence:

const state = useLocalStorage('my-key', { count: 0 })

Mouse tracking:

const { x, y } = useMouse()

Debounced ref:

const search = ref('')
const debouncedSearch = refDebounced(search, 300)

Shared composable (singleton):

const useSharedMouse = createSharedComposable(useMouse)

SSR Gotchas

Many VueUse composables use browser APIs unavailable during SSR.

Check with isClient:

import { isClient } from '@vueuse/core'

if (isClient) {
  // Browser-only code
  const { width } = useWindowSize()
}

Wrap in onMounted:

const width = ref(0)

onMounted(() => {
  // Only runs in browser
  const { width: w } = useWindowSize()
  width.value = w.value
})

Use SSR-safe composables:

// These check isClient internally
const mouse = useMouse() // Returns {x: 0, y: 0} on server
const storage = useLocalStorage('key', 'default') // Uses default on server

@vueuse/nuxt auto-handles SSR - composables return safe defaults on server.

Target Element Refs

When targeting component refs instead of DOM elements:

import type { MaybeElementRef } from '@vueuse/core'

// Component ref needs .$el to get DOM element
const compRef = ref<ComponentInstance>()
const { width } = useElementSize(compRef) // ❌ Won't work

// Use MaybeElementRef pattern
import { unrefElement } from '@vueuse/core'

const el = computed(() => unrefElement(compRef)) // Gets .$el
const { width } = useElementSize(el) // ✅ Works

Or access $el directly:

const compRef = ref<ComponentInstance>()

onMounted(() => {
  const el = compRef.value?.$el as HTMLElement
  const { width } = useElementSize(el)
})

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.746 reviews
  • Alexander Sethi· Dec 16, 2024

    Keeps context tight: vueuse is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Maya Sharma· Dec 8, 2024

    vueuse has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Omar Patel· Dec 4, 2024

    Useful defaults in vueuse — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Soo Jackson· Nov 27, 2024

    vueuse reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • William Gonzalez· Nov 27, 2024

    Solid pick for teams standardizing on skills: vueuse is focused, and the summary matches what you get after install.

  • Olivia Robinson· Nov 23, 2024

    We added vueuse from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Omar Khanna· Oct 18, 2024

    I recommend vueuse for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Henry Flores· Oct 18, 2024

    We added vueuse from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Carlos Rao· Oct 14, 2024

    Solid pick for teams standardizing on skills: vueuse is focused, and the summary matches what you get after install.

  • Rahul Santra· Sep 25, 2024

    vueuse reduced setup friction for our internal harness; good balance of opinion and flexibility.

showing 1-10 of 46

1 / 5