# Extension points — nuxt/nuxt

> Canonical page: https://codevetter.com/unpack/nuxt/extension-points

# Extension points — nuxt/nuxt

Scanned commit 3fde4d625cc353e83ac10f6b75db8ca480167be4 (2026-10-01). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Nuxt exposes build-time modules, hooks, templates, discovery registries, and runtime plugins as its primary extension model. App and server builders can be supplied independently, with renderer options providing a further runtime adapter boundary. Fetch factories and middleware allow reusable application-level policy without replacing the core async-data machinery. Some server-build helpers are explicitly internal and experimental, so their existence does not imply stable public API.
- defineNuxtModule accepts function or object definitions and normalizes metadata; getOptions merges inline options, configKey values, defaults, and optional schema defaults, with duplicate installation prevented by module name/configKey. — [packages/kit/src/module/define.ts#L22-74](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/kit/src/module/define.ts#L22-L74) [packages/kit/src/module/define.ts#L84-98](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/kit/src/module/define.ts#L84-L98)
- Modules can enter through layer configuration, automatically scanned local module directories, project modules, or private _modules; resolveModules tracks both module identity and resolved paths. — [packages/nuxt/src/core/nuxt.ts#L1197-1247](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/core/nuxt.ts#L1197-L1247)
- Build-time hooks are attached through layer config.hooks and caller override hooks, while createNuxt exposes hook, addHooks, callHook, and runWithContext. — [packages/nuxt/src/core/nuxt.ts#L76-98](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/core/nuxt.ts#L76-L98) [packages/nuxt/src/core/nuxt.ts#L220-224](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/core/nuxt.ts#L220-L224) [packages/nuxt/src/core/nuxt.ts#L1123-1127](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/core/nuxt.ts#L1123-L1127)
- addTemplate registers generated files and replaces entries targeting the same destination; addServerTemplate contributes Nitro virtual files, and addTypeTemplate attaches declarations to selected type contexts. — [packages/kit/src/template.ts#L23-60](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/kit/src/template.ts#L23-L60) [packages/kit/src/template.ts#L65-108](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/kit/src/template.ts#L65-L108)
- Auto-import customization uses imports:sources, imports:context, imports:extend, presets, and Unimport addons; component customization receives scan results through components:extend. — [packages/nuxt/src/imports/module.ts#L99-118](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/imports/module.ts#L99-L118) [packages/nuxt/src/imports/module.ts#L152-169](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/imports/module.ts#L152-L169) [packages/nuxt/src/components/module.ts#L202-205](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/components/module.ts#L202-L205)
- Router customization can replace or modify generated routes through routerOptions.routes and supply a custom history implementation, while router.options.mjs aggregates discovered router-options files. — [packages/nuxt/src/pages/runtime/plugins/router.ts#L55-71](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/pages/runtime/plugins/router.ts#L55-L71) [packages/nuxt/src/pages/module.ts#L842-850](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/pages/module.ts#L842-L850)
- Runtime plugins can provide injected values, register hooks, declare dependsOn, execute in parallel, and opt out of island execution; applyPlugins selects dependency-aware execution when needed. — [packages/nuxt/src/app/nuxt.ts#L417-444](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/app/nuxt.ts#L417-L444) [packages/nuxt/src/app/nuxt.ts#L455-491](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/app/nuxt.ts#L455-L491)
- A custom app builder can be supplied as a bundle-capable object; a server builder can likewise be an object or package, and core wrappers route failures through build:error. — [packages/schema/src/config/build.ts#L8-11](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/schema/src/config/build.ts#L8-L11) [packages/schema/src/config/nitro.ts#L14-21](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/schema/src/config/nitro.ts#L14-L21) [packages/nuxt/src/core/builder.ts#L347-363](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/core/builder.ts#L347-L363) [packages/nuxt/src/core/server.ts#L8-18](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/core/server.ts#L8-L18)
- setServerBuild updates input/output paths, capabilities, runtime descriptors, and other server-build properties; the source explicitly marks this internal shape as subject to change without a major release. — [packages/kit/src/internal/server-build.ts#L7-32](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/kit/src/internal/server-build.ts#L7-L32)
- createNuxtRenderer accepts runtime options or an existing renderer instance; runtime hooks can adjust streaming preference through render:route and mutate final document fragments through render:html. — [packages/nuxt/src/runtime/server/renderer/index.ts#L59-61](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/runtime/server/renderer/index.ts#L59-L61) [packages/nuxt/src/runtime/server/renderer/index.ts#L346-359](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/runtime/server/renderer/index.ts#L346-L359) [packages/nuxt/src/runtime/server/renderer/index.ts#L555-562](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/runtime/server/renderer/index.ts#L555-L562)
- createUseFetch and createUseAsyncData are keyed composable factories with addon handling; plain factory options act as defaults while function-derived fetch options override caller options. — [packages/nuxt/src/app/composables/fetch.ts#L564-575](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/app/composables/fetch.ts#L564-L575) [packages/nuxt/src/app/composables/fetch.ts#L666-692](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/app/composables/fetch.ts#L666-L692) [packages/nuxt/src/app/composables/asyncData.ts#L270-280](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/app/composables/asyncData.ts#L270-L280)
- Async-data middleware wraps the handler in reverse registration order, receiving next and a signal-bearing context; payload revivers provide a separate registration point for reconstructing rich client values. — [packages/nuxt/src/app/composables/asyncData.ts#L949-958](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/app/composables/asyncData.ts#L949-L958) [packages/nuxt/src/app/plugins/revive-payload.client.ts#L19-30](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/app/plugins/revive-payload.client.ts#L19-L30) [packages/nuxt/src/app/plugins/revive-payload.client.ts#L80-84](https://github.com/nuxt/nuxt/blob/3fde4d625cc353e83ac10f6b75db8ca480167be4/packages/nuxt/src/app/plugins/revive-payload.client.ts#L80-L84)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
