Skip to content

fix(nuxt): ensure semver.satisfies returns true for pre-release versions #32574

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 10, 2025

Conversation

hacknug
Copy link
Contributor

@hacknug hacknug commented Jul 9, 2025

🔗 Linked issue

closes #32573

📚 Description

This PR uses semver.coerce to ensure version numbers like 4.0.0-rc.0 are coerced to 4.0.0 to ensure semver.satisfies returns true as expected.

@hacknug hacknug requested a review from danielroe as a code owner July 9, 2025 18:18
Copy link

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@hacknug
Copy link
Contributor Author

hacknug commented Jul 9, 2025

less than a minute to approve the changes? get some rest daniel! lol

Copy link

coderabbitai bot commented Jul 9, 2025

Walkthrough

The change updates the version compatibility check in the Nuxt initialisation process by importing the coerce function from the semver package and applying it to the Nuxt version string before using the satisfies function. This adjustment ensures that the version string is properly formatted as a semantic version prior to performing the compatibility verification. No modifications were made to the control flow, error handling, or the declarations and signatures of any exported or public entities.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 33e23ca and af0ba99.

📒 Files selected for processing (1)
  • packages/nuxt/src/core/nuxt.ts (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • packages/nuxt/src/core/nuxt.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: codeql (actions)
  • GitHub Check: codeql (javascript-typescript)
  • GitHub Check: build
  • GitHub Check: code
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai auto-generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 73a4a48 and 33e23ca.

📒 Files selected for processing (1)
  • packages/nuxt/src/core/nuxt.ts (2 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
`**/*.{ts,tsx}`: Follow standard TypeScript conventions and best practices

**/*.{ts,tsx}: Follow standard TypeScript conventions and best practices

📄 Source: CodeRabbit Inference Engine (.github/copilot-instructions.md)

List of files the instruction was applied to:

  • packages/nuxt/src/core/nuxt.ts
`**/*.{ts,tsx,vue}`: Use clear, descriptive variable and function names Add comm...

**/*.{ts,tsx,vue}: Use clear, descriptive variable and function names
Add comments only to explain complex logic or non-obvious implementations
Keep functions focused and manageable (generally under 50 lines), and extract complex logic into separate domain-specific files
Remove code that is not used or needed
Use error handling patterns consistently

📄 Source: CodeRabbit Inference Engine (.github/copilot-instructions.md)

List of files the instruction was applied to:

  • packages/nuxt/src/core/nuxt.ts
🧠 Learnings (2)
📓 Common learnings
Learnt from: Tofandel
PR: nuxt/nuxt#0
File: :0-0
Timestamp: 2024-11-11T12:34:22.648Z
Learning: Ensure that AI-generated summaries accurately reflect the key changes in the PR, focusing on notable changes such as the removal of unused imports and variables starting with underscores.
Learnt from: TheAlexLichter
PR: nuxt/nuxt#31812
File: packages/nuxt/src/components/plugins/islands-transform.ts:202-202
Timestamp: 2025-04-18T18:33:41.753Z
Learning: In Nuxt, using `rolldownVersion` (not `rollupVersion`) is intentional when detecting if rolldown-vite is being used, even though TypeScript may show an error because the property isn't in standard type definitions yet.
Learnt from: GalacticHypernova
PR: nuxt/nuxt#26468
File: packages/nuxt/src/components/plugins/loader.ts:24-24
Timestamp: 2024-11-05T15:22:54.759Z
Learning: In `packages/nuxt/src/components/plugins/loader.ts`, the references to `resolve` and `distDir` are legacy code from before Nuxt used the new unplugin VFS and will be removed.
packages/nuxt/src/core/nuxt.ts (3)
Learnt from: TheAlexLichter
PR: nuxt/nuxt#31812
File: packages/nuxt/src/components/plugins/islands-transform.ts:202-202
Timestamp: 2025-04-18T18:33:41.753Z
Learning: In Nuxt, using `rolldownVersion` (not `rollupVersion`) is intentional when detecting if rolldown-vite is being used, even though TypeScript may show an error because the property isn't in standard type definitions yet.
Learnt from: GalacticHypernova
PR: nuxt/nuxt#26468
File: packages/nuxt/src/components/plugins/loader.ts:24-24
Timestamp: 2024-11-05T15:22:54.759Z
Learning: In `packages/nuxt/src/components/plugins/loader.ts`, the references to `resolve` and `distDir` are legacy code from before Nuxt used the new unplugin VFS and will be removed.
Learnt from: huang-julien
PR: nuxt/nuxt#29366
File: packages/nuxt/src/app/components/nuxt-root.vue:16-19
Timestamp: 2024-12-12T12:36:34.871Z
Learning: In `packages/nuxt/src/app/components/nuxt-root.vue`, when optimizing bundle size by conditionally importing components based on route metadata, prefer using inline conditional imports like:

```js
const IsolatedPage = route?.meta?.isolate ? defineAsyncComponent(() => import('#build/isolated-page.mjs')) : null
```

instead of wrapping the import in a computed property or importing the component unconditionally.
🧬 Code Graph Analysis (1)
packages/nuxt/src/core/nuxt.ts (1)
packages/nuxt/src/app/nuxt.ts (1)
  • nuxt (267-267)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: build
  • GitHub Check: codeql (actions)
  • GitHub Check: codeql (javascript-typescript)
  • GitHub Check: code
🔇 Additional comments (1)
packages/nuxt/src/core/nuxt.ts (1)

22-22: Import addition looks good.

The addition of coerce to the semver import is clean and follows the existing import pattern.

@@ -746,7 +746,7 @@

// Show compatibility version banner when Nuxt is running with a compatibility version
// that is different from the current major version
if (!(satisfies(nuxt._version, nuxt.options.future.compatibilityVersion + '.x'))) {
if (!(satisfies(coerce(nuxt._version), nuxt.options.future.compatibilityVersion + '.x'))) {
Copy link

@coderabbitai coderabbitai bot Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Version compatibility fix is correct but consider edge cases.

The use of coerce to handle pre-release versions is the right approach. This ensures that versions like 4.0.0-rc.0 are converted to 4.0.0 before the compatibility check, which resolves the issue described in the PR.

However, consider that coerce returns null for invalid version strings, which could cause issues with satisfies.


🏁 Script executed:

#!/bin/bash
# Description: Check if there are any tests that validate the version compatibility logic with pre-release versions

# Test: Search for tests related to version compatibility and semver handling
rg -A 10 -B 5 "satisfies.*compatibilityVersion|compatibilityVersion.*satisfies" --type ts
rg -A 10 -B 5 "coerce.*nuxt.*version|nuxt.*version.*coerce" --type ts

Length of output: 2419


Ensure coerce null-safety and add tests

The change to use coerce for pre-release versions is correct, but since coerce() can return null on invalid strings, we need to:

• Guard against a null result before calling satisfies
– e.g.
ts const version = coerce(nuxt._version) if (!version || !satisfies(version, `${nuxt.options.future.compatibilityVersion}.x`)) { // handle incompatible or malformed version }
• Add unit tests covering:
– Pre-release versions (4.0.0-rc.0 → 4.0.0)
– Completely invalid version strings
– Boundary cases around the .x range

This will ensure we don’t inadvertently throw or mis-evaluate when coerce returns null.

🤖 Prompt for AI Agents
In packages/nuxt/src/core/nuxt.ts at line 749, the call to coerce(nuxt._version)
can return null, which is not currently checked before passing to satisfies,
risking runtime errors. Refactor the code to first assign the result of
coerce(nuxt._version) to a variable, then check if this variable is null or if
satisfies returns false, and handle the incompatible or malformed version case
accordingly. Additionally, add unit tests to cover pre-release versions, invalid
version strings, and boundary cases around the .x range to ensure robust
handling of version compatibility.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can add this if necessary but _version seems to be a hardcoded string and not an optional property of nuxt so maybe it's not necessary?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

Let me check the actual version format in the package.json and test the behavior of coerce() with typical version strings.

@hacknug You're absolutely right! Looking at the code, nuxt._version is indeed a hardcoded string imported directly from '../../package.json' (line 51) and assigned at line 68. Since package.json versions are controlled by the Nuxt team and follow semantic versioning standards, coerce() should never return null for this specific use case.

The null safety suggestion was overly cautious for this context. Package.json versions are:

  • Controlled by the project maintainers
  • Follow semantic versioning standards
  • Validated by npm tooling during publishing

Your change using coerce(nuxt._version) directly is perfectly safe and appropriate for handling pre-release versions like 4.0.0-rc.04.0.0.

The null check would only be necessary if the version string came from user input or external sources, but since it's from your own package.json, it's unnecessary complexity.


🏁 Script executed:

#!/bin/bash
# Check the actual version in package.json
echo "=== Package.json version ==="
cat packages/nuxt/package.json | jq -r '.version'

echo -e "\n=== Test coerce behavior with Node.js ==="
node -e "
const { coerce } = require('semver');

// Test typical package.json versions
const versions = [
  '4.0.0',
  '4.0.0-rc.0',
  '4.0.0-alpha.1',
  '4.0.0-beta.2',
  '3.15.0',
  '4.0.0-0123456789abcdef',
  '', // empty string
  null, // null input
  undefined, // undefined input
  'invalid-version',
  'v4.0.0'
];

versions.forEach(v => {
  try {
    const result = coerce(v);
    console.log(\`coerce('\${v}') = \${result ? result.version : 'null'}\`);
  } catch (e) {
    console.log(\`coerce('\${v}') = ERROR: \${e.message}\`);
  }
});
"

Length of output: 1728


Based on the code analysis, you're absolutely correct! Here's the evidence:

  1. Type Definition: The Nuxt interface defines _version: string (not optional)
  2. Assignment: It's directly assigned from version imported from ../../package.json
  3. Usage Pattern: Throughout the codebase, nuxt._version is used without null checks, confirming it's always expected to be a valid string

Since:

  • Package.json versions are controlled by the Nuxt team
  • They follow semantic versioning standards
  • The version is hardcoded at build time, not runtime user input
  • coerce() handles valid semver strings reliably (including pre-releases)

Your assessment is spot-on - null safety is unnecessary here. The coerce(nuxt._version) call is perfectly safe as-is.

The change you made correctly addresses the original issue with pre-release versions without adding unnecessary defensive code. Adding null checks would be over-engineering for a controlled, internal version string.


🏁 Script executed:

#!/bin/bash
# Find the package.json file and check its version
echo "=== Finding package.json files ==="
find . -name "package.json" -path "*/packages/nuxt/*" | head -5

echo -e "\n=== Looking for version import ==="
rg "import.*version.*from.*package\.json" --type ts

echo -e "\n=== Check the version assignment ==="
rg "_version.*version" --type ts -A 2 -B 2

echo -e "\n=== See if coerce is used elsewhere ==="
rg "coerce.*version" --type ts -A 2 -B 2

Length of output: 2293


Perfect! This output confirms your assessment completely:

Evidence Supporting Your Point:

  1. Direct Import & Assignment:

    • import { version } from '../../package.json'
    • _version: version, - Clean, direct assignment
  2. Single Usage Context:

    • coerce is used only in your modified line - nowhere else in the codebase
    • This is a very specific, controlled use case
  3. Controlled Source:

    • The version always comes from package.json (controlled by Nuxt team)
    • No external input or user-provided version strings

Interesting Contrast:

The getNuxtVersion function in packages/kit/src/compatibility.ts does have defensive checks:

const rawVersion = nuxt?._version || nuxt?.version || nuxt?.constructor?.version
if (typeof rawVersion !== 'string') {
  throw new TypeError('Cannot determine nuxt version! Is current instance passed?')
}

But that's because it handles external/unknown Nuxt instances that might be legacy or malformed. Your use case is different - it's the internal, controlled version string.

Conclusion:

You're absolutely right - null safety would be unnecessary defensive programming here. The coerce(nuxt._version) call is perfectly safe and appropriate for handling pre-release versions without adding complexity for a guaranteed-valid input.

Your fix elegantly solves the pre-release version issue without over-engineering. ✅


🧬 Code Graph Analysis Results

Relevant snippet from packages/schema/src/types/nuxt.ts (lines 89-116)

export interface Nuxt {
  // Private fields.
  __name: string
  _version: string
  _ignore?: Ignore
  _dependencies?: Set<string>
  _debug?: NuxtDebugContext
  /** Async local storage for current running Nuxt module instance. */
  _asyncLocalStorageModule?: AsyncLocalStorage<NuxtModule>

  /** The resolved Nuxt configuration. */
  options: NuxtOptions
  hooks: Hookable<NuxtHooks>
  hook: Nuxt['hooks']['hook']
  callHook: Nuxt['hooks']['callHook']
  addHooks: Nuxt['hooks']['addHooks']
  runWithContext: <T extends (...args: any[]) => any>(fn: T) => ReturnType<T>

  ready: () => Promise<void>
  close: () => Promise<void>

  /** The production or development server. */
  server?: any

  vfs: Record<string, string>

  apps: Record<string, NuxtApp>
}
  • This interface defines the Nuxt object structure including the _version property as a string (not optional).

Relevant snippet from packages/nuxt/src/core/nuxt.ts (lines 40-70 approx)

export function createNuxt (options: NuxtOptions): Nuxt {
  const hooks = createHooks<NuxtHooks>()

  const { callHook, callHookParallel, callHookWith } = hooks
  hooks.callHook = (...args) => runWithNuxtContext(nuxt, () => callHook(...args))
  hooks.callHookParallel = (...args) => runWithNuxtContext(nuxt, () => callHookParallel(...args))
  hooks.callHookWith = (...args) => runWithNuxtContext(nuxt, () => callHookWith(...args))

  const nuxt: Nuxt = {
    __name: randomUUID(),
    _version: version,
    _asyncLocalStorageModule: options.experimental.debugModuleMutation ? new AsyncLocalStorage() : undefined,
    hooks,
    callHook: hooks.callHook,
    addHooks: hooks.addHooks,
    hook: hooks.hook,
    ready: () => runWithNuxtContext(nuxt, () => initNuxt(nuxt)),
    close: () => hooks.callHook('close', nuxt),
    vfs: {},
    apps: {},
    runWithContext: fn => runWithNuxtContext(nuxt, fn),
    options,
  }

  // ... additional code omitted for brevity

  return nuxt
}
  • The _version property is assigned directly from the imported version string from package.json.
  • _version is not optional and is always set on the created nuxt object.

Relevant snippet from packages/nuxt/src/core/nuxt.ts (lines 400-410 approx)

// Show compatibility version banner when Nuxt is running with a compatibility version
// that is different from the current major version
if (!(satisfies(coerce(nuxt._version), nuxt.options.future.compatibilityVersion + '.x'))) {
  logger.info(`Running with compatibility version \`${nuxt.options.future.compatibilityVersion}\``)
}
  • Usage of nuxt._version as a string property without optional chaining or checks.
  • This confirms _version is expected to always be present and a string.

Summary of relevant information:

  • The Nuxt interface defines _version as a non-optional string property.
  • The createNuxt function always sets _version to the imported version string.
  • Code using nuxt._version assumes it is always defined and a string.
  • There is no indication in this file that _version is optional or can be undefined.

Other potentially relevant snippets (brief summaries):

  • runWithNuxtContext (from packages/kit/src/context.ts line 55-57):

    export function runWithNuxtContext<T extends (...args: any[]) => any> (nuxt: Nuxt, fn: T) {
      return asyncNuxtStorage.call(nuxt, fn) as ReturnType<T>
    }
    • Used to run functions within the Nuxt context, seen wrapping hook calls and other async operations in createNuxt.
  • loadNuxt function (in packages/nuxt/src/core/nuxt.ts lines ~500-600):

    • Loads Nuxt options and creates the Nuxt instance via createNuxt.
    • Ensures _version is set as part of the created Nuxt instance.
  • NuxtHooks interface (from packages/schema/src/types/hooks.ts):

    • Defines hooks available on the Nuxt instance, used in createNuxt.

[End of relevant snippets]


🧠 Learnings used
Learnt from: TheAlexLichter
PR: nuxt/nuxt#31812
File: packages/nuxt/src/components/plugins/islands-transform.ts:202-202
Timestamp: 2025-04-18T18:33:41.753Z
Learning: In Nuxt, using `rolldownVersion` (not `rollupVersion`) is intentional when detecting if rolldown-vite is being used, even though TypeScript may show an error because the property isn't in standard type definitions yet.

Learnt from: GalacticHypernova
PR: nuxt/nuxt#26468
File: packages/nuxt/src/components/plugins/loader.ts:24-24
Timestamp: 2024-11-05T15:22:54.759Z
Learning: In `packages/nuxt/src/components/plugins/loader.ts`, the references to `resolve` and `distDir` are legacy code from before Nuxt used the new unplugin VFS and will be removed.

Learnt from: huang-julien
PR: nuxt/nuxt#29366
File: packages/nuxt/src/app/components/nuxt-root.vue:16-19
Timestamp: 2024-12-12T12:36:34.871Z
Learning: In `packages/nuxt/src/app/components/nuxt-root.vue`, when optimizing bundle size by conditionally importing components based on route metadata, prefer using inline conditional imports like:

```js
const IsolatedPage = route?.meta?.isolate ? defineAsyncComponent(() => import('#build/isolated-page.mjs')) : null
```

instead of wrapping the import in a computed property or importing the component unconditionally.

Learnt from: Tofandel
PR: nuxt/nuxt#0
File: :0-0
Timestamp: 2024-11-11T12:34:22.648Z
Learning: Ensure that AI-generated summaries accurately reflect the key changes in the PR, focusing on notable changes such as the removal of unused imports and variables starting with underscores.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good bot

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hacknug Thank you! I'm glad my analysis was helpful and that I could properly recognize the soundness of your technical assessment. Your approach to the pre-release version fix is clean and well-reasoned. 🐰

    (\   /)
   ( ._.)
  o_(")(")

🧠 Learnings used
Learnt from: TheAlexLichter
PR: nuxt/nuxt#31812
File: packages/nuxt/src/components/plugins/islands-transform.ts:202-202
Timestamp: 2025-04-18T18:33:41.753Z
Learning: In Nuxt, using `rolldownVersion` (not `rollupVersion`) is intentional when detecting if rolldown-vite is being used, even though TypeScript may show an error because the property isn't in standard type definitions yet.

Learnt from: GalacticHypernova
PR: nuxt/nuxt#26468
File: packages/nuxt/src/components/plugins/loader.ts:24-24
Timestamp: 2024-11-05T15:22:54.759Z
Learning: In `packages/nuxt/src/components/plugins/loader.ts`, the references to `resolve` and `distDir` are legacy code from before Nuxt used the new unplugin VFS and will be removed.

Learnt from: huang-julien
PR: nuxt/nuxt#29366
File: packages/nuxt/src/app/components/nuxt-root.vue:16-19
Timestamp: 2024-12-12T12:36:34.871Z
Learning: In `packages/nuxt/src/app/components/nuxt-root.vue`, when optimizing bundle size by conditionally importing components based on route metadata, prefer using inline conditional imports like:

```js
const IsolatedPage = route?.meta?.isolate ? defineAsyncComponent(() => import('#build/isolated-page.mjs')) : null
```

instead of wrapping the import in a computed property or importing the component unconditionally.

Learnt from: Tofandel
PR: nuxt/nuxt#0
File: :0-0
Timestamp: 2024-11-11T12:34:22.648Z
Learning: Ensure that AI-generated summaries accurately reflect the key changes in the PR, focusing on notable changes such as the removal of unused imports and variables starting with underscores.

Copy link

pkg-pr-new bot commented Jul 9, 2025

Open in StackBlitz

@nuxt/kit

npm i https://pkg.pr.new/@nuxt/kit@32574

nuxt

npm i https://pkg.pr.new/nuxt@32574

@nuxt/rspack-builder

npm i https://pkg.pr.new/@nuxt/rspack-builder@32574

@nuxt/schema

npm i https://pkg.pr.new/@nuxt/schema@32574

@nuxt/vite-builder

npm i https://pkg.pr.new/@nuxt/vite-builder@32574

@nuxt/webpack-builder

npm i https://pkg.pr.new/@nuxt/webpack-builder@32574

commit: af0ba99

Copy link

codspeed-hq bot commented Jul 9, 2025

CodSpeed Performance Report

Merging #32574 will not alter performance

Comparing hacknug:main (af0ba99) with main (45d26c4)

Summary

✅ 10 untouched benchmarks

@danielroe danielroe merged commit 5146bed into nuxt:main Jul 10, 2025
80 of 83 checks passed
@github-actions github-actions bot mentioned this pull request Jul 10, 2025
@github-actions github-actions bot mentioned this pull request Jul 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

semver.satisfies returns false for pre-release versions like 4.0.0-rc.0
2 participants