Skip to content

refactor(kit,nuxt,ui-templates,vite): address deprecations + improve regexp perf#33093

Merged
danielroe merged 6 commits intomainfrom
chore/lint
Aug 31, 2025
Merged

refactor(kit,nuxt,ui-templates,vite): address deprecations + improve regexp perf#33093
danielroe merged 6 commits intomainfrom
chore/lint

Conversation

@danielroe
Copy link
Copy Markdown
Member

🔗 Linked issue

📚 Description

this adds typescript config and prevents use of deprecated methods (or explicitly allows them internally)

it also fixes some issues of regexp performance.

@bolt-new-by-stackblitz
Copy link
Copy Markdown

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

@socket-security
Copy link
Copy Markdown

socket-security bot commented Aug 31, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedstrip-literal@​3.0.01001007578100
Addedrc9@​2.1.210010010076100
Addedplaywright-core@​1.55.087100779980
Addedstd-env@​3.9.010010010079100
Addedtinyexec@​1.0.19910010080100
Addedpostcss@​8.5.6991008184100
Addedpathe@​2.0.31001009282100
Addedohash@​2.0.1110010010084100
Addedsemver@​7.7.210010010085100
Addedsvgo@​4.0.09910010085100
Addedjiti@​2.5.19810010088100
Addedtypescript@​5.9.210010089100100
Addedprettier@​3.6.29910010089100

View full report

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new bot commented Aug 31, 2025

Open in StackBlitz

@nuxt/kit

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

nuxt

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

@nuxt/rspack-builder

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

@nuxt/schema

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

@nuxt/vite-builder

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

@nuxt/webpack-builder

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

commit: 5e65c60

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Aug 31, 2025

Warning

Rate limit exceeded

@danielroe has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 12 minutes and 6 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 6806f96 and 5e65c60.

📒 Files selected for processing (2)
  • packages/nuxt/src/core/plugins/plugin-metadata.ts (1 hunks)
  • test/nuxt/nuxt-time.test.ts (3 hunks)

Walkthrough

The PR adds TypeScript-aware ESLint configuration (imports @typescript-eslint/parser and a TS lint block) and inserts numerous eslint-disable comments for deprecated rules. It systematically refactors many regular expressions to use non-capturing groups, converts some String.match() usages to RegExp.test(), and removes/adjusts global flags in split/replace patterns. Functional changes include helper start/end resolvers in page-meta, regex/splitting adjustments in ui-templates, a preset swap from presetUno to presetWind3, and extensive test updates (regex changes and flaky-test retries). Most edits are stylistic or lint-related; a few files have non-trivial logic rearrangements around parsing and template handling.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/lint

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.
    • 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.
  • 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 the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

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

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit 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

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • 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
Copy Markdown
Contributor

@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: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
packages/nuxt/src/core/runtime/nitro/handlers/island.ts (1)

76-86: Array merge is inadvertently overwritten in islandHead accumulation

After pushing into the existing array, the subsequent assignment overwrites it with value, discarding previous entries. Guard by merging only for arrays and otherwise assigning.

Apply this diff:

-  for (const [key, value] of Object.entries(resolveUnrefHeadInput(entry.input as any) as SerializableHead)) {
-    const currentValue = islandHead[key as keyof SerializableHead]
-    if (Array.isArray(currentValue)) {
-      currentValue.push(...value)
-    }
-    islandHead[key as keyof SerializableHead] = value
-  }
+  for (const [key, value] of Object.entries(resolveUnrefHeadInput(entry.input as any) as SerializableHead)) {
+    const k = key as keyof SerializableHead
+    const curr = islandHead[k] as unknown
+    if (Array.isArray(value)) {
+      if (Array.isArray(curr)) {
+        (curr as unknown[]).push(...value)
+      } else {
+        islandHead[k] = value as any
+      }
+    } else {
+      islandHead[k] = value as any
+    }
+  }
packages/nuxt/src/core/nuxt.ts (1)

851-851: Regex likely won’t match absolute paths; restart trigger may never fire.

RESTART_RE is anchored to start/end. It is tested against an absolute path (Line 701), so it won’t match “.../app.vue”. Make it segment-aware.

Apply:

-const RESTART_RE = /^(?:app|error|app\.config)\.(?:js|ts|mjs|jsx|tsx|vue)$/i
+const RESTART_RE = /(?:^|[\\/])(?:app|error|app\.config)\.(?:js|ts|mjs|jsx|tsx|vue)$/i

Alternatively, test the basename at use-site.

packages/nuxt/src/components/plugins/islands-transform.ts (1)

59-65: Avoid lastIndex pitfalls from using a global regex with .test()

SCRIPT_RE is global; calling .test() mutates lastIndex and can affect subsequent uses. Use a non-global literal for the check.

-        if (!SCRIPT_RE.test(code)) {
+        if (!/<script[^>]*>/i.test(code)) {
           s.prepend('<script setup>' + IMPORT_CODE + '</script>')
         } else {
           s.replace(SCRIPT_RE, (full) => {
             return full + IMPORT_CODE
           })
         }
packages/ui-templates/lib/render.ts (1)

61-66: Regression: SVG URLs in CSS are no longer captured/inlined

Dropping the capture from the url(...) branch means src is undefined for CSS URLs, so .svg assets won’t be inlined anymore.

-        for (const [_, src] of html.matchAll(/src="([^"]+)"|url\([^)]+\)/g)) {
-          if (src?.match(/\.svg$/)) {
-            svgSources.push(src)
-          }
-        }
+        for (const match of html.matchAll(/src="(?<src>[^"]+)"|url\((?<url>[^)]+)\)/g)) {
+          const src = (match.groups?.src || match.groups?.url)?.replace(/^['"]|['"]$/g, '')
+          if (src?.endsWith('.svg')) {
+            svgSources.push(src)
+          }
+        }
🧹 Nitpick comments (9)
packages/nuxt/src/core/nitro.ts (1)

269-277: Scoped deprecation suppression is appropriate

Inline disabling for this one check keeps lint noise down without broad suppression. Consider adding a TODO with the Nuxt v5 removal plan next to it.

packages/kit/src/plugin.ts (1)

45-52: Targeted suppression around legacy plugin.ssr looks good

This preserves existing behaviour while silencing the warning. Optionally emit a dev-time deprecation warning when ssr is present to help users migrate to mode: 'server' or filename suffixes.

packages/nuxt/src/core/templates.ts (1)

61-61: Non-capturing group improves regex perf with no behaviour change

Good switch to (?:...). Minor nit: /(?:4[5-7])/ is a tad shorter and a brief comment noting these map to - . / (ASCII 45–47) would aid readability.

Also applies to: 71-72, 91-92

packages/nuxt/src/components/plugins/lazy-hydration-transform.ts (1)

84-84: Avoid regex for hot-path prefix stripping

Tiny perf/readability win: use string prefix checks/slices instead of a regex inside the AST walk.

-            const pascalName = pascalCase(node.name.replace(/^(?:Lazy|lazy-)/, ''))
+            const name = node.name
+            const base = name.startsWith('Lazy') ? name.slice(4) : (name.startsWith('lazy-') ? name.slice(5) : name)
+            const pascalName = pascalCase(base)
packages/vite/src/utils/warmup.ts (1)

27-27: Safer removal of import query preserves delimiters

Current replace can collapse adjacent params (e.g. ?a=1&import&b=2?a=1b=2). Keep the preceding delimiter when the match is followed by &.

-  url = url.replace(/[?&]import=?(?:&|$)/, '').replace(/[?&]$/, '')
+  url = url
+    .replace(/([?&])import=?(?:&|$)/, (m, p1) => m.endsWith('&') ? p1 : '')
+    .replace(/[?&]$/, '')
packages/nuxt/src/core/plugins/plugin-metadata.ts (1)

41-49: Cache the negative path to avoid repeated scans

When returning early with {}, consider caching it to prevent repeated checks on identical content.

-  if (!/(?:defineNuxtPlugin|definePayloadPlugin)\s*\([\w(]/.test(code)) {
-    return {}
-  }
+  if (!/(?:defineNuxtPlugin|definePayloadPlugin)\s*\([\w(]/.test(code)) {
+    metaCache[code] = {}
+    return metaCache[code]
+  }
packages/nuxt/src/dirs.ts (1)

5-5: Match directory name, not just suffix.

Using a suffix regex can misfire on directories like "my-shared". Prefer checking the last path segment.

Apply:

-import { dirname, resolve } from 'pathe'
+import { basename, dirname, resolve } from 'pathe'

-let _distDir = dirname(fileURLToPath(import.meta.url))
-if (/(?:chunks|shared)$/.test(_distDir)) { _distDir = dirname(_distDir) }
+let _distDir = dirname(fileURLToPath(import.meta.url))
+if (['chunks', 'shared'].includes(basename(_distDir))) { _distDir = dirname(_distDir) }
eslint.config.mjs (1)

99-113: Scope TS parser/rule to TS files to avoid unnecessary JS/MJS overhead

Applying the TS parser and @typescript-eslint/no-deprecated across .js/.mjs can slow linting and cause noise. Consider narrowing to TypeScript-only globs.

-    files: ['packages/**/*.{mjs,js,ts}', '**/*.{spec,test}.{mjs,js,ts}'],
+    files: ['packages/**/*.{ts,mts,cts}', '**/*.{spec,test}.{ts,mts,cts}'],
test/basic.test.ts (1)

2135-2139: Minor: normalise CSS url(...) values to avoid quote-related false negatives

url(...) may be quoted. Normalising improves robustness of the startsWith checks.

-    for (const match of html.matchAll(/(?:href|src)="(.*?)"|url\(([^)]*)\)/g)) {
-      const url = match[1] || match[2]!
+    for (const match of html.matchAll(/(?:href|src)="(.*?)"|url\(([^)]*)\)/g)) {
+      const url = (match[1] || match[2]!)?.replace(/^['"]|['"]$/g, '')
       expect(url.startsWith('/_nuxt/') || isPublicFile('/', url)).toBeTruthy()
     }

(Apply the same normalisation in the other loops.)

Also applies to: 2166-2170, 2181-2187, 2211-2215

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 6f4da1b and 7b32df3.

⛔ Files ignored due to path filters (2)
  • package.json is excluded by !package.json, !**/package.json
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !pnpm-lock.yaml
📒 Files selected for processing (25)
  • eslint.config.mjs (3 hunks)
  • packages/kit/src/context.ts (2 hunks)
  • packages/kit/src/internal/esm.ts (3 hunks)
  • packages/kit/src/plugin.ts (1 hunks)
  • packages/nuxt/src/components/plugins/islands-transform.ts (2 hunks)
  • packages/nuxt/src/components/plugins/lazy-hydration-transform.ts (1 hunks)
  • packages/nuxt/src/components/scan.ts (1 hunks)
  • packages/nuxt/src/core/builder.ts (1 hunks)
  • packages/nuxt/src/core/nitro.ts (1 hunks)
  • packages/nuxt/src/core/nuxt.ts (1 hunks)
  • packages/nuxt/src/core/plugins/plugin-metadata.ts (1 hunks)
  • packages/nuxt/src/core/runtime/nitro/handlers/island.ts (2 hunks)
  • packages/nuxt/src/core/templates.ts (1 hunks)
  • packages/nuxt/src/dirs.ts (1 hunks)
  • packages/nuxt/src/head/runtime/composables.ts (3 hunks)
  • packages/nuxt/src/pages/plugins/page-meta.ts (4 hunks)
  • packages/nuxt/test/pages.test.ts (1 hunks)
  • packages/ui-templates/lib/dev.ts (1 hunks)
  • packages/ui-templates/lib/render.ts (3 hunks)
  • packages/ui-templates/uno.config.ts (1 hunks)
  • packages/vite/src/dirs.ts (1 hunks)
  • packages/vite/src/runtime/vite-node.mjs (1 hunks)
  • packages/vite/src/utils/warmup.ts (1 hunks)
  • test/basic.test.ts (14 hunks)
  • test/nuxt/nuxt-time.test.ts (3 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Follow standard TypeScript conventions and best practices

Files:

  • packages/nuxt/src/core/builder.ts
  • packages/nuxt/src/core/nitro.ts
  • packages/vite/src/utils/warmup.ts
  • packages/kit/src/plugin.ts
  • packages/nuxt/src/pages/plugins/page-meta.ts
  • packages/nuxt/test/pages.test.ts
  • packages/nuxt/src/core/plugins/plugin-metadata.ts
  • packages/nuxt/src/components/plugins/lazy-hydration-transform.ts
  • packages/nuxt/src/core/nuxt.ts
  • packages/nuxt/src/head/runtime/composables.ts
  • packages/nuxt/src/core/templates.ts
  • packages/nuxt/src/core/runtime/nitro/handlers/island.ts
  • packages/ui-templates/uno.config.ts
  • packages/kit/src/context.ts
  • test/basic.test.ts
  • packages/vite/src/dirs.ts
  • packages/nuxt/src/dirs.ts
  • packages/nuxt/src/components/scan.ts
  • test/nuxt/nuxt-time.test.ts
  • packages/kit/src/internal/esm.ts
  • packages/nuxt/src/components/plugins/islands-transform.ts
  • packages/ui-templates/lib/dev.ts
  • packages/ui-templates/lib/render.ts
**/*.{test,spec}.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Write unit tests for core functionality using vitest

Files:

  • packages/nuxt/test/pages.test.ts
  • test/basic.test.ts
  • test/nuxt/nuxt-time.test.ts
🧠 Learnings (6)
📓 Common learnings
Learnt from: GalacticHypernova
PR: nuxt/nuxt#29661
File: packages/kit/src/template.ts:227-229
Timestamp: 2024-11-28T21:22:40.496Z
Learning: In `packages/kit/src/template.ts`, when updating the `EXTENSION_RE` regular expression for TypeScript configuration, avoid using patterns like `(\.\w+)+$` as they can result in catastrophic backtracking.
📚 Learning: 2024-11-28T21:22:40.496Z
Learnt from: GalacticHypernova
PR: nuxt/nuxt#29661
File: packages/kit/src/template.ts:227-229
Timestamp: 2024-11-28T21:22:40.496Z
Learning: In `packages/kit/src/template.ts`, when updating the `EXTENSION_RE` regular expression for TypeScript configuration, avoid using patterns like `(\.\w+)+$` as they can result in catastrophic backtracking.

Applied to files:

  • packages/nuxt/src/core/builder.ts
  • packages/nuxt/src/core/templates.ts
  • test/basic.test.ts
  • packages/vite/src/dirs.ts
  • packages/nuxt/src/components/scan.ts
  • packages/nuxt/src/components/plugins/islands-transform.ts
  • packages/ui-templates/lib/render.ts
📚 Learning: 2024-12-12T12:36:34.871Z
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.

Applied to files:

  • packages/nuxt/src/core/builder.ts
📚 Learning: 2024-11-05T15:22:54.759Z
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.

Applied to files:

  • packages/nuxt/src/core/builder.ts
  • packages/nuxt/src/core/nuxt.ts
  • packages/nuxt/src/dirs.ts
📚 Learning: 2025-07-18T16:46:07.446Z
Learnt from: CR
PR: nuxt/nuxt#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-07-18T16:46:07.446Z
Learning: Applies to **/*.{test,spec}.{ts,tsx,js,jsx} : Write unit tests for core functionality using `vitest`

Applied to files:

  • test/nuxt/nuxt-time.test.ts
📚 Learning: 2025-07-18T16:46:07.446Z
Learnt from: CR
PR: nuxt/nuxt#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-07-18T16:46:07.446Z
Learning: Applies to **/e2e/**/*.{ts,js} : Write end-to-end tests using Playwright and `nuxt/test-utils`

Applied to files:

  • test/nuxt/nuxt-time.test.ts
🧬 Code graph analysis (2)
packages/vite/src/utils/warmup.ts (1)
packages/nuxt/src/app/components/test-component-wrapper.ts (1)
  • url (8-26)
packages/nuxt/src/core/nuxt.ts (1)
packages/kit/src/context.ts (1)
  • nuxtCtx (9-9)
⏰ 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). (2)
  • GitHub Check: code
  • GitHub Check: build
🔇 Additional comments (16)
packages/ui-templates/uno.config.ts (1)

1-1: Ensure UnoCSS is v66.0.0 or later for presetWind3
No changes to the import are required, as presetWind3 has been included in unocss since v66.0.0.

packages/vite/src/runtime/vite-node.mjs (1)

18-18: Expanded eslint-disable is fine and remains scoped to a single line

Keeps the workaround local while you migrate off process.server in future.

packages/nuxt/test/pages.test.ts (1)

44-44: LGTM: non-capturing group is correct here

Semantics unchanged; avoids creating an unnecessary capture.

packages/nuxt/src/core/builder.ts (1)

29-32: LGTM: use RegExp.test for boolean checks

This removes unnecessary array allocation from String.match while preserving behaviour.

Also applies to: 33-36

packages/kit/src/context.ts (1)

32-33: LGTM: targeted deprecation suppressions

Localised disables keep noise down until unctx exposes the replacement.

Also applies to: 53-55

packages/kit/src/internal/esm.ts (1)

36-37: Scoped deprecation suppressions look good

Lint disables are narrowly scoped and do not alter runtime behaviour. No further action required.

Also applies to: 77-79, 86-87

packages/nuxt/src/head/runtime/composables.ts (1)

55-56: Deprecation suppressions are appropriate

The added no-deprecated suppressions are minimal and local to the deprecated paths. Safe change.

Also applies to: 64-66, 73-75

packages/nuxt/src/core/runtime/nitro/handlers/island.ts (1)

17-17: Regex non-capturing change is correct

Switching to a non-capturing group is semantically identical and avoids unnecessary captures.

packages/vite/src/dirs.ts (1)

5-5: LGTM

Switching to RegExp.test with a non-capturing group is clearer and avoids creating match arrays.

packages/ui-templates/lib/dev.ts (1)

31-31: LGTM: split without the global flag is equivalent.

In JS, RegExp flags don’t affect String.prototype.split’s global matching. Safe change.

packages/nuxt/src/core/nuxt.ts (1)

127-135: Temporary deprecation suppressions are acceptable.

The targeted eslint disables keep compatibility without runtime impact. Clear TODO for Nuxt v5.

packages/nuxt/src/pages/plugins/page-meta.ts (1)

149-153: Good: use fnNode bounds to de-dup and slice declarations correctly.

Switching to resolveStart/resolveEnd avoids misidentifying/overlapping function declarations and fixes ordering checks within the same scope.

Also applies to: 281-282, 298-300, 365-370

packages/nuxt/src/components/scan.ts (1)

14-15: LGTM: remove unnecessary captures.

Non-capturing groups keep semantics (mode still from [1]) and reduce regex overhead.

eslint.config.mjs (2)

8-8: TS parser import looks good

Importing @typescript-eslint/parser is appropriate for enabling TS-aware linting.


18-19: Enabling TypeScript tooling in the Nuxt config is appropriate

Turning on features.typescript: true aligns with the rest of this PR.

test/nuxt/nuxt-time.test.ts (1)

106-112: Good move to vi.spyOn for DOM selection

Switching to vi.spyOn(document, 'querySelectorAll') keeps the original API surface and is cleaner than monkey-patching.

Comment thread packages/nuxt/src/components/plugins/islands-transform.ts
Comment thread packages/nuxt/src/core/plugins/plugin-metadata.ts
Comment thread test/nuxt/nuxt-time.test.ts Outdated
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented Aug 31, 2025

CodSpeed Performance Report

Merging #33093 will not alter performance

Comparing chore/lint (5e65c60) with main (6f4da1b)

Summary

✅ 10 untouched benchmarks

@danielroe danielroe merged commit dc427fe into main Aug 31, 2025
46 of 47 checks passed
@danielroe danielroe deleted the chore/lint branch August 31, 2025 20:32
@github-actions github-actions bot mentioned this pull request Aug 31, 2025
danielroe added a commit that referenced this pull request Sep 2, 2025
@github-actions github-actions bot mentioned this pull request Sep 2, 2025
@coderabbitai coderabbitai bot mentioned this pull request Dec 26, 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.

1 participant