Skip to content

chore: migrate to oxlint#19134

Open
logaretm wants to merge 26 commits intodevelopfrom
awad/oxlint
Open

chore: migrate to oxlint#19134
logaretm wants to merge 26 commits intodevelopfrom
awad/oxlint

Conversation

@logaretm
Copy link
Member

@logaretm logaretm commented Feb 2, 2026

Replaces eslint with oxlint, we had an outdated Eslint 8.x setup anyways and we needed to either upgrade it or move to something else. Oxlint brings so much speed gains given how slow linting is, and almost no one is running it locally project wide because of how slow it is.

The changes can look like a lot but most of it is just:

  • Comment Replacement due to rule name changes.
  • Config file swapping (from .eslintrc.js to .oxlintrc.json

I downgraded a few rules, but they will be cleaned up in a follow up PR in

Benchmarks

Overall

Metric Before (ESLint) After (Oxlint) Speedup
CI Time ~6 minutes ~10 seconds 36x*

Note that:

  • Lerna adds a considerable overhead that eats a lot of the gains we can potentially get. We removed Lerna and also we will just lint the entire project rather than go package by package.
  • CI time is hogged by building types step Not relevant anymore, typeaware mode works wonderfully after oxc-project/tsgolint#739 was merged.

SDK Packages

Package Files ESLint Oxlint Speedup
core 365 9.6s 53ms 181x
browser 136 6.8s 55ms 124x
node 105 6.1s 64ms 95x
node-core 101 6.2s 56ms 111x
nextjs 181 10.9s 79ms 138x
sveltekit 63 6.4s 71ms 90x
opentelemetry 58 4.3s 52ms 83x
cloudflare 43 3.8s 45ms 84x
remix 38 7.1s 42ms 169x
react 39 6.5s 49ms 133x
feedback 38 3.8s 48ms 79x
replay-internal 152 5.6s 38ms 147x
vue 24 4.0s 48ms 83x
svelte 15 4.0s 52ms 77x
angular 12 3.7s 37ms 100x

Dev Packages

Package Files ESLint Oxlint Speedup
browser-integration-tests 778 10.8s 209ms 52x
node-integration-tests 605 9.0s 291ms 31x
node-core-integration-tests 268 6.2s 74ms 84x
e2e-tests 10 2.6s 44ms 59x
cloudflare-integration-tests 27 2.5s 35ms 71x
test-utils 5 2.4s 21ms 114x
rollup-utils 13 ❌ error 22ms N/A
bundler-tests 3 ❌ error 51ms N/A

closes #19222

@github-actions
Copy link
Contributor

github-actions bot commented Feb 2, 2026

Codecov Results 📊


Generated by Codecov Action

@github-actions
Copy link
Contributor

github-actions bot commented Feb 2, 2026

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

Scenario Requests/s % of Baseline Prev. Requests/s Change %
GET Baseline 8,851 - 11,584 -24%
GET With Sentry 1,619 18% 2,000 -19%
GET With Sentry (error only) 5,990 68% 7,659 -22%
POST Baseline 1,182 - 1,177 +0%
POST With Sentry 582 49% 593 -2%
POST With Sentry (error only) 1,056 89% 1,048 +1%
MYSQL Baseline 3,265 - 4,021 -19%
MYSQL With Sentry 458 14% 553 -17%
MYSQL With Sentry (error only) 2,657 81% 3,305 -20%

View base workflow run


| Rule | Status | Notes |
| ---------------------------- | ------- | -------------------------------------------------- |
| `simple-import-sort/imports` | **Gap** | Import sorting - consider using Prettier or dprint |

Choose a reason for hiding this comment

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

You may be able to accomplish a lot of this via import sorting in oxfmt, if desired https://oxc.rs/docs/guide/usage/formatter/sorting.html

Copy link
Member Author

Choose a reason for hiding this comment

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

Yep, it's in the oxfmt space so will update it here. Thanks!

@github-actions
Copy link
Contributor

github-actions bot commented Feb 18, 2026

size-limit report 📦

Path Size % Change Change
@sentry/browser 25.63 kB - -
@sentry/browser - with treeshaking flags 24.13 kB - -
@sentry/browser (incl. Tracing) 42.43 kB - -
@sentry/browser (incl. Tracing, Profiling) 47.09 kB - -
@sentry/browser (incl. Tracing, Replay) 81.25 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 70.87 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 85.95 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 98.21 kB - -
@sentry/browser (incl. Feedback) 42.44 kB - -
@sentry/browser (incl. sendFeedback) 30.3 kB - -
@sentry/browser (incl. FeedbackAsync) 35.35 kB - -
@sentry/browser (incl. Metrics) 26.8 kB - -
@sentry/browser (incl. Logs) 26.94 kB - -
@sentry/browser (incl. Metrics & Logs) 27.61 kB - -
@sentry/react 27.38 kB - -
@sentry/react (incl. Tracing) 44.77 kB - -
@sentry/vue 30.08 kB - -
@sentry/vue (incl. Tracing) 44.3 kB - -
@sentry/svelte 25.66 kB - -
CDN Bundle 28.17 kB - -
CDN Bundle (incl. Tracing) 43.26 kB - -
CDN Bundle (incl. Logs, Metrics) 29.01 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 44.1 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 68.09 kB - -
CDN Bundle (incl. Tracing, Replay) 80.14 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 81 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 85.65 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 86.53 kB - -
CDN Bundle - uncompressed 82.35 kB - -
CDN Bundle (incl. Tracing) - uncompressed 128.07 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 85.19 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 130.9 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 208.85 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 244.95 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 247.77 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 257.86 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 260.67 kB - -
@sentry/nextjs (client) 47.18 kB - -
@sentry/sveltekit (client) 42.89 kB - -
@sentry/node-core 52.25 kB +0.02% +7 B 🔺
@sentry/node 174.71 kB +0.01% +5 B 🔺
@sentry/node - without tracing 97.39 kB +0.02% +10 B 🔺
@sentry/aws-serverless 113.2 kB +0.01% +7 B 🔺

View base workflow run

@logaretm logaretm force-pushed the awad/oxlint branch 4 times, most recently from f9a58bb to d41b658 Compare March 3, 2026 14:50
@logaretm logaretm marked this pull request as ready for review March 3, 2026 17:28
@logaretm logaretm requested review from a team as code owners March 3, 2026 17:28
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Migrates the monorepo’s linting setup from ESLint (8.x) to Oxlint, updating configs and package scripts so linting can run significantly faster across CI and locally.

Changes:

  • Replaces root + per-package ESLint configs with .oxlintrc.json equivalents (including rule/plugin mapping and overrides).
  • Updates root and package-level lint/fix scripts from eslint to oxlint (adds type-aware linting in the root script).
  • Adjusts inline rule-disable comments where rule names/prefixes changed (notably custom sdk/* rules).

Reviewed changes

Copilot reviewed 209 out of 211 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
yarn.lock Adds oxlint + oxlint-tsgolint dependencies and platform bindings.
scripts/bump-version.test.ts Minor string formatting change aligned with lint rules.
package.json Switches root lint/fix scripts to oxlint; adds oxlint deps; updates CI entrypoint script names.
.github/workflows/build.yml Updates lint job to run yarn lint:oxlint.
.oxlintrc.json Introduces repo-wide Oxlint configuration (plugins, rules, overrides, ignore patterns).
.eslintrc.js Removes root ESLint configuration.
dev-packages/.oxlintrc.json Adds dev-packages base Oxlint config overrides.
dev-packages/.eslintrc.js Removes dev-packages ESLint config.
dev-packages/test-utils/package.json Switches lint/fix scripts to oxlint.
dev-packages/test-utils/.oxlintrc.json Adds Oxlint config for test-utils.
dev-packages/test-utils/.eslintrc.js Removes ESLint config for test-utils.
dev-packages/size-limit-gh-action/package.json Switches lint/fix scripts to oxlint.
dev-packages/size-limit-gh-action/.oxlintrc.json Adds Oxlint config for size-limit action.
dev-packages/size-limit-gh-action/.eslintrc.cjs Removes ESLint config for size-limit action.
dev-packages/rollup-utils/.oxlintrc.json Adds Oxlint config for rollup-utils (ignores template).
dev-packages/rollup-utils/.eslintrc.cjs Removes ESLint config for rollup-utils.
dev-packages/node-overhead-gh-action/package.json Switches lint/fix scripts to oxlint.
dev-packages/node-overhead-gh-action/.oxlintrc.json Adds Oxlint config for node-overhead action.
dev-packages/node-overhead-gh-action/.eslintrc.cjs Removes ESLint config for node-overhead action.
dev-packages/node-integration-tests/package.json Switches lint/fix scripts to oxlint.
dev-packages/node-integration-tests/.oxlintrc.json Adds Oxlint config for node integration tests.
dev-packages/node-integration-tests/.eslintrc.js Removes ESLint config for node integration tests.
dev-packages/node-integration-tests/suites/tracing/tedious/test.ts Updates skipped-test disable rule reference.
dev-packages/node-core-integration-tests/package.json Switches lint/fix scripts to oxlint.
dev-packages/node-core-integration-tests/.oxlintrc.json Adds Oxlint config for node-core integration tests.
dev-packages/node-core-integration-tests/.eslintrc.js Removes ESLint config for node-core integration tests.
dev-packages/external-contributor-gh-action/package.json Switches lint/fix scripts to oxlint.
dev-packages/external-contributor-gh-action/.oxlintrc.json Adds Oxlint config for external contributor action.
dev-packages/external-contributor-gh-action/.eslintrc.cjs Removes ESLint config for external contributor action.
dev-packages/clear-cache-gh-action/package.json Switches lint/fix scripts to oxlint.
dev-packages/clear-cache-gh-action/.oxlintrc.json Adds Oxlint config for clear-cache action.
dev-packages/clear-cache-gh-action/.eslintrc.cjs Removes ESLint config for clear-cache action.
dev-packages/bundler-tests/.oxlintrc.json Adds Oxlint config for bundler-tests.
dev-packages/bundler-tests/.eslintrc.js Removes ESLint config for bundler-tests.
dev-packages/browser-integration-tests/package.json Switches lint/fix scripts to oxlint.
dev-packages/browser-integration-tests/.oxlintrc.json Adds Oxlint config for browser integration tests.
dev-packages/browser-integration-tests/.eslintrc.js Removes ESLint config for browser integration tests.
dev-packages/cloudflare-integration-tests/package.json Switches lint/fix scripts to oxlint.
dev-packages/cloudflare-integration-tests/.oxlintrc.json Adds Oxlint config for cloudflare integration tests.
dev-packages/cloudflare-integration-tests/.eslintrc.js Removes ESLint config for cloudflare integration tests.
dev-packages/e2e-tests/package.json Switches lint/fix scripts to oxlint.
dev-packages/e2e-tests/.oxlintrc.json Adds Oxlint config for e2e-tests (ignores test apps/tmp).
dev-packages/e2e-tests/.eslintrc.js Removes ESLint config for e2e-tests.
dev-packages/e2e-tests/test-applications/remix-hydrogen/.eslintrc.cjs Removes ESLint config from test application fixture.
dev-packages/e2e-tests/test-applications/remix-hydrogen/.eslintignore Removes ESLint ignore from test application fixture.
dev-packages/e2e-tests/test-applications/hydrogen-react-router-7/.eslintrc.cjs Removes ESLint config from test application fixture.
dev-packages/e2e-tests/test-applications/hydrogen-react-router-7/.eslintignore Removes ESLint ignore from test application fixture.
dev-packages/e2e-tests/test-applications/create-remix-app-v2/.eslintrc.js Removes ESLint config from test application fixture.
dev-packages/e2e-tests/test-applications/create-remix-app-v2-non-vite/.eslintrc.js Removes ESLint config from test application fixture.
dev-packages/e2e-tests/test-applications/create-remix-app-express/.eslintrc.cjs Removes ESLint config from test application fixture.
dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.eslintrc.js Removes ESLint config from test application fixture.
packages/angular/package.json Switches lint/fix scripts to oxlint.
packages/angular/.oxlintrc.json Adds Oxlint config (browser env + overrides/ignores).
packages/angular/.eslintrc.cjs Removes ESLint config for Angular package.
packages/astro/package.json Switches lint/fix scripts to oxlint.
packages/astro/.oxlintrc.json Adds Oxlint config (browser+node env).
packages/astro/.eslintrc.cjs Removes ESLint config for Astro package.
packages/aws-serverless/package.json Switches lint/fix scripts to oxlint.
packages/aws-serverless/.oxlintrc.json Adds Oxlint config (node env).
packages/aws-serverless/.eslintrc.js Removes ESLint config for aws-serverless package.
packages/browser/package.json Switches lint/fix scripts to oxlint.
packages/browser/.oxlintrc.json Adds Oxlint config (browser env + ignores).
packages/browser/.eslintrc.js Removes ESLint config for browser package.
packages/browser/.eslintignore Removes ESLint ignore for browser package.
packages/browser-utils/package.json Switches lint/fix scripts to oxlint.
packages/browser-utils/.oxlintrc.json Adds Oxlint config (browser env + metrics overrides).
packages/browser-utils/.eslintrc.js Removes ESLint config for browser-utils package.
packages/browser-utils/src/metrics/web-vitals/lib/LayoutShiftManager.ts Updates disable directives for renamed custom rules.
packages/browser-utils/src/metrics/web-vitals/lib/InteractionManager.ts Updates disable directives for renamed custom rules.
packages/bun/package.json Switches lint/fix scripts to oxlint.
packages/bun/.oxlintrc.json Adds Oxlint config (node env + overrides).
packages/bun/.eslintrc.js Removes ESLint config for bun package.
packages/cloudflare/package.json Switches lint/fix scripts to oxlint.
packages/cloudflare/.oxlintrc.json Adds Oxlint config (node env + overrides).
packages/cloudflare/.eslintrc.js Removes ESLint config for cloudflare package.
packages/core/package.json Switches lint/fix scripts to oxlint.
packages/core/.oxlintrc.json Adds Oxlint config (custom sdk rule + ignores).
packages/core/.eslintrc.js Removes ESLint config for core package.
packages/core/src/utils/tracing.ts Updates disable directive for renamed custom regexp rule.
packages/core/src/utils/string.ts Updates disable directive rule name mapping.
packages/core/src/utils/normalize.ts Updates disable directive for renamed custom regexp rule.
packages/core/src/integrations/mcp-server/correlation.ts Updates disable directive for renamed custom random rule.
packages/core/test/lib/client.test.ts Updates skipped-test disable rule reference.
packages/deno/package.json Switches lint/fix scripts to oxlint.
packages/deno/.oxlintrc.json Adds Oxlint config (overrides + ignores).
packages/deno/.eslintrc.js Removes ESLint config for deno package.
packages/ember/package.json Switches lint:js/fix scripts to oxlint.
packages/ember/.oxlintrc.json Adds Oxlint config (ember-specific overrides).
packages/ember/.eslintrc.js Removes ESLint config for ember package.
packages/ember/.eslintignore Removes ESLint ignore for ember package.
packages/ember/types/global.d.ts Moves to type-only import and adds targeted disable for explicit any.
packages/eslint-plugin-sdk/package.json Switches lint/fix scripts to oxlint.
packages/eslint-plugin-sdk/.oxlintrc.json Adds Oxlint config for eslint-plugin-sdk package.
packages/eslint-plugin-sdk/.eslintrc.js Removes ESLint config for eslint-plugin-sdk package.
packages/feedback/package.json Switches lint/fix scripts to oxlint.
packages/feedback/.oxlintrc.json Adds Oxlint config for feedback package.
packages/feedback/.eslintrc.js Removes ESLint config for feedback package.
packages/feedback/.eslintignore Removes ESLint ignore for feedback package.
packages/gatsby/package.json Switches lint/fix scripts to oxlint.
packages/gatsby/.oxlintrc.json Adds Oxlint config (env + ignores).
packages/gatsby/.eslintrc.js Removes ESLint config for gatsby package.
packages/google-cloud-serverless/package.json Switches lint/fix scripts to oxlint.
packages/google-cloud-serverless/.oxlintrc.json Adds Oxlint config (node env).
packages/google-cloud-serverless/.eslintrc.js Removes ESLint config for google-cloud-serverless package.
packages/hono/package.json Switches lint/fix scripts to oxlint.
packages/hono/.oxlintrc.json Adds Oxlint config (node env + overrides).
packages/hono/.eslintrc.js Removes ESLint config for hono package.
packages/integration-shims/package.json Switches lint/fix scripts to oxlint.
packages/integration-shims/.oxlintrc.json Adds Oxlint config for integration-shims package.
packages/integration-shims/.eslintrc.js Removes ESLint config for integration-shims package.
packages/nestjs/package.json Switches lint/fix scripts to oxlint.
packages/nestjs/.oxlintrc.json Adds Oxlint config (node env).
packages/nestjs/.eslintrc.js Removes ESLint config for nestjs package.
packages/nestjs/.eslintignore Removes ESLint ignore for nestjs package.
packages/nextjs/package.json Switches lint/fix scripts to oxlint.
packages/nextjs/.oxlintrc.json Adds Oxlint config (env, sdk rules, overrides/globals).
packages/nextjs/.eslintrc.js Removes ESLint config for nextjs package.
packages/nextjs/src/config/polyfills/perf_hooks.js Updates file-level disable directive for renamed custom rule.
packages/nextjs/src/config/loaders/valueInjectionLoader.ts Updates file-level disable directive for renamed custom rule.
packages/nextjs/src/config/loaders/wrappingLoader.ts Updates disable directives for renamed custom regexp rule.
packages/nextjs/src/config/loaders/prefixLoader.ts Updates disable directives for renamed custom regexp rule.
packages/nextjs/src/config/webpack.ts Updates disable directives for renamed custom regexp rule.
packages/nextjs/src/server/rewriteFramesIntegration.ts Updates disable directive for renamed custom regexp rule.
packages/nextjs/src/server/distDirRewriteFramesIntegration.ts Updates disable directive for renamed custom regexp rule.
packages/nextjs/src/edge/rewriteFramesIntegration.ts Updates disable directive for renamed custom regexp rule.
packages/nextjs/src/edge/distDirRewriteFramesIntegration.ts Updates disable directive for renamed custom regexp rule.
packages/nextjs/src/client/routing/parameterization.ts Updates disable directive for renamed custom regexp rule.
packages/nextjs/src/client/routing/pagesRouterRoutingInstrumentation.ts Updates disable directive for renamed custom regexp rule.
packages/node/package.json Switches lint/fix scripts to oxlint.
packages/node/.oxlintrc.json Adds Oxlint config (node env, sdk rules, overrides).
packages/node/.eslintrc.js Removes ESLint config for node package.
packages/node/src/integrations/tracing/fastify/fastify-otel/.oxlintrc.json Adds nested Oxlint config for fastify-otel subdir.
packages/node-core/package.json Switches lint/fix scripts to oxlint.
packages/node-core/.oxlintrc.json Adds Oxlint config (node env, sdk rules, overrides).
packages/node-core/.eslintrc.js Removes ESLint config for node-core package.
packages/node-core/src/integrations/context.ts Updates disable directives for renamed custom random rule.
packages/node-core/src/cron/common.ts Updates disable directive for renamed custom regexp rule.
packages/node-native/package.json Switches lint/fix scripts to oxlint.
packages/node-native/.oxlintrc.json Adds Oxlint config (node env, overrides, ignores).
packages/node-native/.eslintrc.js Removes ESLint config for node-native package.
packages/nuxt/package.json Switches lint/fix scripts to oxlint.
packages/nuxt/.oxlintrc.json Adds Oxlint config (browser+node env).
packages/nuxt/.eslintrc.js Removes ESLint config for nuxt package.
packages/nuxt/src/vite/utils.ts Updates disable directives for renamed custom regexp rule.
packages/opentelemetry/package.json Switches lint/fix scripts to oxlint.
packages/opentelemetry/.oxlintrc.json Adds Oxlint config (node env, sdk rule + test override).
packages/opentelemetry/.eslintrc.js Removes ESLint config for opentelemetry package.
packages/profiling-node/package.json Switches lint/fix scripts to oxlint.
packages/profiling-node/.oxlintrc.json Adds Oxlint config (node env, overrides, ignores).
packages/profiling-node/.eslintrc.js Removes ESLint config for profiling-node package.
packages/profiling-node/.eslintignore Removes ESLint ignore for profiling-node package.
packages/react/package.json Switches lint/fix scripts to oxlint.
packages/react/.oxlintrc.json Adds Oxlint config including react plugin + test override.
packages/react/.eslintrc.js Removes ESLint config for react package.
packages/react-router/package.json Switches lint/fix scripts to oxlint.
packages/react-router/.oxlintrc.json Adds Oxlint config (browser+node env).
packages/react-router/.eslintrc.js Removes ESLint config for react-router package.
packages/remix/package.json Switches lint/fix scripts to oxlint.
packages/remix/.oxlintrc.json Adds Oxlint config (env + ignores).
packages/remix/.eslintrc.js Removes ESLint config for remix package.
packages/remix/src/client/remixRouteParameterization.ts Updates disable directive for renamed custom regexp rule.
packages/replay-canvas/package.json Switches lint/fix scripts to oxlint.
packages/replay-canvas/.oxlintrc.json Adds Oxlint config for replay-canvas.
packages/replay-canvas/.eslintrc.js Removes ESLint config for replay-canvas.
packages/replay-canvas/.eslintignore Removes ESLint ignore for replay-canvas.
packages/replay-internal/package.json Switches multi-step lint/fix scripts to oxlint.
packages/replay-internal/.oxlintrc.json Adds Oxlint overrides for replay-internal tests/setup.
packages/replay-internal/.eslintrc.js Removes ESLint config for replay-internal.
packages/replay-internal/.eslintignore Removes ESLint ignore for replay-internal.
packages/replay-worker/package.json Switches lint/fix scripts to oxlint.
packages/replay-worker/.oxlintrc.json Adds Oxlint config (ignore + overrides).
packages/replay-worker/.eslintrc.js Removes ESLint config for replay-worker.
packages/replay-worker/.eslintignore Removes ESLint ignore for replay-worker.
packages/solid/package.json Switches lint/fix scripts to oxlint.
packages/solid/.oxlintrc.json Adds Oxlint config (browser env).
packages/solid/.eslintrc.js Removes ESLint config for solid package.
packages/solid/.eslintignore Removes ESLint ignore for solid package.
packages/solidstart/package.json Switches lint/fix scripts to oxlint.
packages/solidstart/.oxlintrc.json Adds Oxlint config (browser+node env).
packages/solidstart/.eslintrc.js Removes ESLint config for solidstart package.
packages/solidstart/.eslintignore Removes ESLint ignore for solidstart package.
packages/solidstart/src/config/utils.ts Updates disable directives for renamed custom regexp rule.
packages/solidstart/src/config/wrapServerEntryWithDynamicImport.ts Updates disable directives for renamed custom regexp rule.
packages/svelte/package.json Switches lint/fix scripts to oxlint.
packages/svelte/.oxlintrc.json Adds Oxlint config (browser env).
packages/svelte/.eslintrc.js Removes ESLint config for svelte package.
packages/sveltekit/package.json Switches lint/fix scripts to oxlint.
packages/sveltekit/.oxlintrc.json Adds Oxlint config (browser+node env).
packages/sveltekit/.eslintrc.js Removes ESLint config for sveltekit package.
packages/sveltekit/src/vite/injectGlobalValues.ts Updates disable directive for renamed custom regexp rule.
packages/sveltekit/src/vite/sourceMaps.ts Updates disable directive for renamed custom regexp rule.
packages/sveltekit/src/server-common/integrations/rewriteFramesIntegration.ts Updates disable directive for renamed custom regexp rule.
packages/tanstackstart/package.json Switches lint/fix scripts to oxlint.
packages/tanstackstart/.oxlintrc.json Adds Oxlint config (browser+node env).
packages/tanstackstart/.eslintrc.js Removes ESLint config for tanstackstart package.
packages/tanstackstart-react/package.json Switches lint/fix scripts to oxlint.
packages/tanstackstart-react/.oxlintrc.json Adds Oxlint config (browser+node env).
packages/tanstackstart-react/.eslintrc.js Removes ESLint config for tanstackstart-react package.
packages/types/package.json Switches lint/fix scripts to oxlint.
packages/types/.oxlintrc.json Adds Oxlint config (env + rule override).
packages/types/.eslintrc.js Removes ESLint config for types package.
packages/vercel-edge/package.json Switches lint/fix scripts to oxlint.
packages/vercel-edge/.oxlintrc.json Adds Oxlint config (env + sdk rule + overrides).
packages/vercel-edge/.eslintrc.js Removes ESLint config for vercel-edge package.
packages/vue/package.json Switches lint/fix scripts to oxlint.
packages/vue/.oxlintrc.json Adds Oxlint config (browser env).
packages/vue/.eslintrc.js Removes ESLint config for vue package.
packages/vue/.eslintignore Removes ESLint ignore for vue package.
packages/wasm/package.json Switches lint/fix scripts to oxlint.
packages/wasm/.oxlintrc.json Adds Oxlint config for wasm package.
packages/wasm/.eslintrc.js Removes ESLint config for wasm package.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Autofix Details

Bugbot Autofix prepared a fix for the issue found in the latest run.

  • ✅ Fixed: Root fix command scope narrower than lint command
    • Changed fix:oxlint to target '.' instead of 'packages/' to match lint:oxlint scope and ensure auto-fixes apply to all directories including dev-packages/.

Create PR

Or push these changes by commenting:

@cursor push f67cfc995b
Preview (f67cfc995b)
diff --git a/package.json b/package.json
--- a/package.json
+++ b/package.json
@@ -22,7 +22,7 @@
     "clean:watchman": "watchman watch-del \".\"",
     "clean:all": "run-s clean:build clean:tarballs clean:caches clean:deps clean:watchman",
     "fix": "run-s fix:oxfmt fix:oxlint",
-    "fix:oxlint": "oxlint packages/ --fix",
+    "fix:oxlint": "oxlint . --fix",
     "fix:oxfmt": "oxfmt . --write",
     "format:check": "oxfmt . --check",
     "format": "oxfmt . --write",
This Bugbot Autofix run was free. To enable autofix for future PRs, go to the Cursor dashboard.

Copy link
Member

@s1gr1d s1gr1d left a comment

Choose a reason for hiding this comment

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

Nice 🚀

"fix": "run-s fix:oxfmt fix:eslint",
"fix:eslint": "nx run-many -t fix",
"fix": "run-s fix:oxfmt fix:oxlint",
"fix:oxlint": "oxlint . --fix",
Copy link
Member

@s1gr1d s1gr1d Mar 4, 2026

Choose a reason for hiding this comment

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

It's the same with lint:oxfmt but I think we can name the script agnostically like fix:lint as the underlying method of linting should be irrelevant. But this is just a minor comment - this only popped up because now we have a git diff from eslint to oxlint.

Copy link
Member Author

@logaretm logaretm Mar 4, 2026

Choose a reason for hiding this comment

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

I agree, I wanted to change our commands scheme here to make it more intuitive.

I'm thinking lint, format, format:check and lint:fix, but I will do that in a follow up PR.

Copy link
Member

@chargome chargome left a comment

Choose a reason for hiding this comment

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

Can you also check the agents.md etc for any mentions of eslint and change that if applicable 🙏

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

"fix": "run-s fix:oxfmt fix:eslint",
"fix:eslint": "nx run-many -t fix",
"fix": "run-s fix:oxfmt fix:oxlint",
"fix:oxlint": "oxlint . --fix",
Copy link

Choose a reason for hiding this comment

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

Fix command missing --type-aware flag unlike lint

Medium Severity

The fix:oxlint command runs oxlint . --fix without --type-aware, while lint:oxlint runs with --type-aware (and the OXLINT_TSGOLINT_DANGEROUSLY_SUPPRESS_PROGRAM_DIAGNOSTICS env var). This means type-aware rules like typescript/no-floating-promises, typescript/consistent-type-imports, and typescript/no-unnecessary-type-assertion are checked during yarn lint (and in CI) but are never auto-fixed by yarn fix. Developers running yarn fix locally will get a false sense of a clean state, only to have CI fail on type-aware rule violations they can't auto-fix.

Additional Locations (1)

Fix in Cursor Fix in Web

Comment on lines +1 to 4
/* oxlint-disable sdk/no-unsafe-random-apis */
// Polyfill for Node.js perf_hooks module in edge runtime
// This mirrors the polyfill from packages/vercel-edge/rollup.npm.config.mjs
const __sentry__timeOrigin = Date.now();
Copy link

Choose a reason for hiding this comment

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

Bug: The Oxlint configuration is missing the jsPlugins setting, causing custom lint rules like sdk/no-unsafe-random-apis to be silently ignored despite updated disable comments.
Severity: HIGH

Suggested Fix

Update the root .oxlintrc.json file to include the jsPlugins configuration. This will properly load the custom @sentry-internal/eslint-plugin-sdk plugin, ensuring that its rules are recognized and enforced by Oxlint across the project.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: packages/nextjs/src/config/polyfills/perf_hooks.js#L1-L4

Potential issue: The migration to Oxlint is incomplete as the configuration is missing
the `jsPlugins` setting required to load the custom `@sentry-internal/eslint-plugin-sdk`
plugin. Consequently, custom lint rules such as `sdk/no-unsafe-random-apis` and
`sdk/no-regexp-constructor` are not being enforced. Although the disable comments were
updated to the new `oxlint-disable-next-line` syntax, Oxlint ignores them because it is
unaware of these rules. This could allow developers to introduce code that breaks
caching in React Server Components or creates ReDoS vulnerabilities, as the linter will
no longer flag these issues.

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.

Migrate to oxlint

6 participants