# vue-hooks-plus: useRequest and a Vue 3 hook collection with on-demand imports

> vue-hooks-plus is a TypeScript hook library for Vue 3 that puts useRequest at the center of its design, treating async data fetching as a first-class concern rather than a utility. The package ships npm and CDN install paths, individual es/ module paths for tree-shaking, and an SSR-aware architecture tested with Nuxt 3.

**InhiblabCore/vue-hooks-plus** — High performance  & Simplicity  🧲  Vue 3 Hooks library

- Repository: https://github.com/InhiblabCore/vue-hooks-plus
- Website: https://inhiblabcore.github.io/vue-hooks-plus
- Stars: 2,031 · Forks: 136
- Language: TypeScript
- License: MIT
- Published: 2026-10-11 · Updated: 2026-10-11 · Language: en
- Canonical page: https://hysenlabs.com/projects/inhiblabcore-vue-hooks-plus

## useRequest is the hook the library centers its identity on

vue-hooks-plus lists ten features, and nine of them describe the library in terms any hook collection could use. The tenth singles out useRequest and calls it a powerful request middle tier. A request middle tier means a hook that manages the full lifecycle of an async call: loading state, error handling, data storage, polling and retry, without the component setting up those variables by hand.

Vue 3 ships with reactive primitives like ref and reactive but gives no built-in abstraction for the fetch-then-update pattern every data-heavy component repeats. vue-hooks-plus puts useRequest at the center of its collection to fill that gap. The library credits ahooks (the React hook library from Alibaba that popularised the same pattern) and @koale/useworker as its two primary inspirations.

That lineage is informative. Developers who know ahooks will find the useRequest API design familiar in structure and intent. Developers coming only from Vue will need the documentation at inhiblabcore.github.io/vue-hooks-plus to understand the full API surface, because the README covers installation but not the hook contracts or option shapes.

## npm i vue-hooks-plus and a CDN path are both documented install routes

The npm path installs the library as a single package:

```bash
npm i vue-hooks-plus
```

After that, hooks arrive through a named import:

```typescript
import { useRequest } from 'vue-hooks-plus'
```

For projects where bundle size is a concern, the library ships individual hook paths under the es/ directory:

```typescript
import useRequest from 'vue-hooks-plus/es/useRequest'
```

That second form imports only the useRequest module, so a bundler does not need to analyze the whole package to determine what to include. The library's own feature list calls out on-demand loading as a separate capability, and the es/ path is how that capability works in practice.

The CDN path delivers the entire library as an IIFE script:

```html
<script src="https://cdn.jsdelivr.net/npm/vue-hooks-plus/dist/js/index.iife.js"></script>
```

Once loaded, it is available on the global object as VueHooks_Plus. This path suits projects that do not use a bundler. One gap in the CDN URL is worth noting: there is no version pin in the snippet above, which means a CDN load always fetches the latest published version rather than the one you tested against.

## Auto import via unplugin-auto-import requires @vue-hooks-plus/resolvers as a second package

Auto import removes explicit import statements from component files by having the build tool inject them at compile time. vue-hooks-plus ships a resolver for unplugin-auto-import that makes this work. For Vite, the setup looks like this:

```ts
import AutoImport from 'unplugin-auto-import/vite'
import { VueHooksPlusResolver } from '@vue-hooks-plus/resolvers'

export const AutoImportDeps = () =>
  AutoImport({
    imports: ['vue', 'vue-router'],
    include: [/\.[tj]sx?$/, /\.vue$/, /\.vue\?vue/, /\.md$/],
    dts: 'src/auto-imports.d.ts',
    resolvers: [VueHooksPlusResolver()],
  })
```

The Webpack variant uses require() syntax instead of ES imports; the resolver call itself is the same. For tools beyond Vite and Webpack, the README points to the unplugin-auto-import repository.

The @vue-hooks-plus/resolvers package is separate from vue-hooks-plus itself, so projects using auto import install two packages rather than one. No version constraint between the two packages is published in the README, and no minimum version of unplugin-auto-import is stated there either.

## Five scoped packages in the monorepo sit beside the main entry

Under the pnpm workspace, five scoped packages ship alongside the main vue-hooks-plus entry: @vue-hooks-plus/use-immer, @vue-hooks-plus/use-request, @vue-hooks-plus/use-request-plugins, @vue-hooks-plus/use-url-state and @vue-hooks-plus/use-worker. Each is a separate, independently installable package, not an internal module.

Distinct roles separate them. useImmer adds Immer-style immutable update semantics to Vue reactive state. useWorker wraps a function to run in a Web Worker, drawing from the @koale/useworker design the project credits. useUrlState synchronizes component state with the URL's query string. useRequest and useRequest-plugins are split so the plugin layer sits in a separate dependency, keeping the base hook lighter for projects that do not need plugins.

A full enumeration of every composable in the library is not in the README. Anyone who wants to know what is available beyond these five categories has to open the documentation site at inhiblabcore.github.io/vue-hooks-plus or browse the packages/ directory directly.

## Node.js >= 22.18.0 applies to the development workspace, not to end users

One requirement in the README carries an IMPORTANT callout: developing, building, and running the documentation for the repository requires Node.js >= 22.18.0. A second sentence makes the boundary explicit: the published hooks still target Vue 3 applications and do not add a Node.js runtime requirement in the browser.

Looking at the root package.json, its engines field sets the node constraint to >=22.18.0. That field belongs to the monorepo root, which is a private package never published to npm, so end users installing vue-hooks-plus from npm are not subject to that floor. Anyone inspecting the repository package.json without reading the IMPORTANT note could reasonably but incorrectly conclude that their application's server needs Node 22.

For contributors who want to build the documentation or run the test suite locally, this version requirement is real. pnpm@9.6.0 is the package manager, and the root package.json constrains pnpm to >=7 and <10.

## SSR is listed as supported, but the README gives no configuration steps

SSR appears in the feature list as a supported capability, and the example repository includes a Nuxt 3 project at github.com/InhiblabCore/vue-hooks-plus-example/tree/main/nuxt3. That is the full documentation on this topic.

No configuration flags, no lifecycle hooks to avoid, and no caveats about server-side hydration appear. A developer integrating the library into a server-rendered application would need to read the Nuxt 3 example files or the documentation site to understand how SSR actually works, because that information is not in the README.

Verifying the SSR claim against the specific hooks a project plans to use matters more than the feature-list claim alone. A hook that reads browser-only APIs during setup would fail on the server without a guard, and no documentation indicates which hooks carry that limitation. As the most concrete reference available, the Nuxt 3 example is where to start.

## VueUse is the broader alternative; it does not center on async request management

VueUse is the closest alternative, covering sensors, animations, browser APIs, network state and storage utilities for Vue 3. It includes useFetch for basic request handling. Where vue-hooks-plus puts useRequest and its dedicated plugin layer at the center, VueUse treats request fetching as one composable in a much wider catalog.

A project that needs request management with polling, retry and caching would find useRequest and @vue-hooks-plus/use-request-plugins purpose-built for that case. A project that needs composables for clipboard access, media queries, geolocation or intersection observers would find more in VueUse.

Both are MIT-licensed and both support Vue 3. Choosing between them depends on whether request lifecycle management or general browser API coverage is the primary need, and using both in the same project is possible.

## Conclusion

vue-hooks-plus fits Vue 3 projects that need useRequest for loading state, error handling and cache without writing that setup per component. Skip it when browser API utilities are your main concern, because VueUse covers sensors, storage and network state more broadly. Before adopting, test the es/ import paths against your bundler to confirm tree-shaking, check the Nuxt 3 example at github.com/InhiblabCore/vue-hooks-plus-example/tree/main/nuxt3 to see how SSR is handled, and pin the @vue-hooks-plus/resolvers version to match your vue-hooks-plus version.

## FAQ

### What is vue-hooks-plus?

vue-hooks-plus is a TypeScript hooks library for Vue 3. Its primary hook is useRequest, which manages the loading, error and data states of async calls. The library is MIT-licensed and inspired by ahooks and @koale/useworker.

### How do I install vue-hooks-plus?

Run npm i vue-hooks-plus to install it as a single package. For tree-shaking, import individual hooks from paths like vue-hooks-plus/es/useRequest. A CDN IIFE build is also available at cdn.jsdelivr.net/npm/vue-hooks-plus/dist/js/index.iife.js and is exposed globally as VueHooks_Plus.

### Does vue-hooks-plus work with Nuxt 3?

The library lists SSR support as a feature and the example repository includes a Nuxt 3 project. The README does not document SSR configuration steps; the nuxt3 example at github.com/InhiblabCore/vue-hooks-plus-example/tree/main/nuxt3 is the available reference.

### What is the difference between vue-hooks-plus and VueUse?

vue-hooks-plus centers on useRequest for async request lifecycle management and ships five scoped hook categories. VueUse is a broader collection covering sensors, browser APIs and storage; its useFetch is one utility among many rather than the focus of the library.

### Does vue-hooks-plus require Node.js >= 22.18.0 to use?

No. The README explicitly states that the Node.js >= 22.18.0 requirement applies to developing, building and running the documentation for the repository, not to using the published hooks in a browser application. End users installing from npm are not subject to that floor.

## Sources

- [InhiblabCore/vue-hooks-plus on GitHub](https://github.com/InhiblabCore/vue-hooks-plus)
- [License: MIT](https://github.com/InhiblabCore/vue-hooks-plus/blob/master/LICENSE)
- [Project website](https://inhiblabcore.github.io/vue-hooks-plus)
- [README](https://github.com/InhiblabCore/vue-hooks-plus/blob/master/README.md)
- [Releases](https://github.com/InhiblabCore/vue-hooks-plus/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/inhiblabcore-vue-hooks-plus
