@clerk/nuxt: calling updateRuntimeConfig() in setup prints NUXT_B8003 "Nitro is not initialized yet" on Nuxt 4.5
Les mainteneurs répondent en général sous 1 jour
@wobsoriano y travaille déjà.
Depuis le 23/9/2026.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
Preliminary Checks
- I have reviewed the documentation: https://clerk.com/docs
- I have searched for existing issues: https://github.com/clerk/javascript/issues
- I have not already reached out to Clerk support via email or Discord
- This issue is not a question, general help request, or anything other than a bug report directly related to Clerk
Reproduction
Inline below: three files, no Clerk account or key needed. The warning appears at build time.
Publishable key
N/A. The warning appears with no key configured.
Description
On Nuxt 4.5, every nuxt build and nuxt dev that loads @clerk/nuxt prints:
WARN [NUXT_B8003] Nitro is not initialized yet: useNitro() was called before the ready hook ran.
╰▶ fix: Move the useNitro() call inside a hook that runs after initialization, such as nuxt.hook('ready', () => { ... }).
Nothing is broken, because the runtime config is still applied. But the warning shows up in every consumer's build output, and it tells them to fix something that isn't in their code.
Cause
packages/nuxt/src/module.ts calls updateRuntimeConfig() from @nuxt/kit inside setup(). Nitro hasn't been created at that point. The kit helper does two things:
// packages/kit/src/runtime-config.ts (nuxt/nuxt main)
export function updateRuntimeConfig (runtimeConfig) {
const nuxt = useNuxt()
Object.assign(nuxt.options.nitro.runtimeConfig, defu(runtimeConfig, nuxt.options.nitro.runtimeConfig))
try {
return useNitro().updateConfig({ runtimeConfig })
} catch {
// Nitro is not yet initialised - we can safely ignore this error
}
}
The first line does the real work at setup time. The useNitro() call is for updating a Nitro instance that's already running, and it throws here. The catch swallows the error, but since the diagnostics rework (Nuxt 4.5), building kitDiagnostics.NUXT_B8003() reports the warning to the console before it's thrown. So the try/catch no longer keeps it quiet.
Steps to reproduce:
-
Create a project with these files:
package.json{ "private": true, "type": "module", "scripts": { "build": "nuxt build" }, "dependencies": { "nuxt": "4.5.2", "vue": "latest", "@clerk/nuxt": "3.1.3" } }nuxt.config.tsexport default defineNuxtConfig({ compatibilityDate: '2025-07-15', modules: ['@clerk/nuxt'] })app/app.vue<template><div>hi</div></template> -
pnpm install && pnpm build -
The
NUXT_B8003warning prints. Remove@clerk/nuxtfrommodulesand it goes away.
Expected behavior:
Loading @clerk/nuxt produces no warning.
Actual behavior:
[NUXT_B8003] is printed on every build and dev start.
Possible solutions
-
Merge into the options directly in
setup()(Clerk-side, smallest change). This is the only part ofupdateRuntimeConfigthat has any effect during setup:import { defu } from 'defu' setup(options, nuxt) { const runtimeConfig = { public: { clerk: { /* …unchanged… */ } }, clerk: { /* …unchanged… */ } } Object.assign(nuxt.options.nitro.runtimeConfig, defu(runtimeConfig, nuxt.options.nitro.runtimeConfig)) // … }I patched this into the published 3.1.3
dist/module.jsin the repro above. The warning is gone, and the runtime config Nitro serializes (public.clerk.*andclerk.*, still overridable viaNUXT_PUBLIC_CLERK_*/NUXT_CLERK_*) is byte-for-byte the same as before.Merging into
nuxt.options.runtimeConfigwithdefuis another option. It's the documented module pattern, but it has different precedence from what the kit helper does today. -
Fix it in
@nuxt/kit.updateRuntimeConfigcould checktryUseNitro(), which already exists inpackages/kit/src/nitro.ts, instead of catching auseNitro()throw. That would fix it for every module that calls the helper during setup. It's worth raising with Nuxt either way, but option 1 is under Clerk's control and works on Nuxt 4.5.x as released. -
Defer the call to a hook, as the warning suggests (for example
nuxt.hook('ready', …)). I wouldn't recommend this, becausesetup()is exactly when the keys need to exist so that env overrides are picked up. Option 1 keeps the timing as it is now.
Environment
System:
OS: macOS 26.6.2
CPU: (10) arm64 Apple M4
Binaries:
Node: 26.8.2
npm: 11.19.1
pnpm: 12.4.1
npmPackages:
@clerk/nuxt: 3.1.3 => 3.1.3
nuxt: 4.5.2 => 4.5.2
vue: latest => 3.5.43
Also seen with @clerk/nuxt 2.6.22.
- Langage dominant
- TypeScript
- Étoiles
- 1.8k
- Forks
- 472
- Merge moyen
- 2 j 19 h
- PR mergées (30 j)
- 237
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de clerk/javascript
-
Difficulté 4/5 3-5 jours Accessibilité débutants 64/100
clerk/javascript#9775 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
clerk/javascript#9770 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
clerk/javascript#9667 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
needs-triage
Difficulté 3/5 1-2 jours Accessibilité débutants 58/100
clerk/javascript#9478 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 56/100
clerk/javascript#9476 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de clerk/javascript
Issues similaires
-
ADD openalgoOuvertetemplate
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
factory-active factory-automatic task-bug-reproduction-success task-identify-harness-labels-done task-identify-issue-type-done
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
vercel/ai#21528 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
bug Needs: Triage :mag:
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
microsoft/fluentui-contrib#671 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
sveltejs/acorn-typescript#150 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100