Replace ESLint and Prettier with Oxc tooling#598
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR migrates the monorepo from ESLint + Prettier (including the internal @reflag/eslint-config) to Oxc tooling (oxlint + oxfmt), and wires formatting/linting into local developer workflows and CI.
Changes:
- Replace ESLint/Prettier scripts and configs across packages with
oxlint/oxfmt; removetsconfig.eslint.jsonand per-packageeslint.config.jsfiles. - Add repo-wide Oxc configuration (
.oxlintrc.json,.oxfmtrc.json) and pre-commit formatting/linting via Husky + lint-staged. - Normalize various import orders / whitespace changes that follow the new formatter’s output.
Reviewed changes
Copilot reviewed 125 out of 127 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/vue-sdk/vite.config.mjs | Formatting-only change (import spacing). |
| packages/vue-sdk/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/vue-sdk/package.json | Switch scripts to oxlint/oxfmt; adjust package entrypoints/exports layout. |
| packages/vue-sdk/eslint.config.js | Removed ESLint config. |
| packages/tsconfig/package.json | JSON field reordering. |
| packages/rest-api-sdk/package.json | JSON field reordering (publishConfig moved). |
| packages/react-sdk/vite.config.mjs | Formatting-only change (import spacing). |
| packages/react-sdk/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/react-sdk/test/usage.test.tsx | Import ordering for formatting consistency. |
| packages/react-sdk/package.json | Switch scripts to oxlint/oxfmt; adjust exports ordering; keep peer deps. |
| packages/react-sdk/eslint.config.js | Removed ESLint config. |
| packages/react-sdk/dev/nextjs-flag-demo/tsconfig.json | Formatting changes (arrays condensed). |
| packages/react-sdk/dev/nextjs-flag-demo/package.json | Replace next lint with oxlint/oxfmt scripts; remove ESLint deps. |
| packages/react-sdk/dev/nextjs-flag-demo/components/Providers.tsx | Formatting-only change (blank line). |
| packages/react-sdk/dev/nextjs-flag-demo/components/Flags.tsx | Formatting-only change (blank line). |
| packages/react-sdk/dev/nextjs-flag-demo/app/page.tsx | Formatting-only change (blank line). |
| packages/react-sdk/dev/nextjs-flag-demo/app/layout.tsx | Formatting-only change (blank line). |
| packages/react-sdk/dev/nextjs-flag-demo/.eslintrc.json | Removed Next.js ESLint config. |
| packages/react-sdk/dev/nextjs-bootstrap-demo/tsconfig.json | Formatting changes (arrays condensed). |
| packages/react-sdk/dev/nextjs-bootstrap-demo/package.json | Replace next lint with oxlint/oxfmt scripts; remove ESLint deps. |
| packages/react-sdk/dev/nextjs-bootstrap-demo/components/Flags.tsx | Formatting-only change (blank line). |
| packages/react-sdk/dev/nextjs-bootstrap-demo/app/page.tsx | Formatting-only change (blank line). |
| packages/react-sdk/dev/nextjs-bootstrap-demo/app/layout.tsx | Import ordering (format-driven). |
| packages/react-sdk/dev/nextjs-bootstrap-demo/.eslintrc.json | Removed Next.js ESLint config. |
| packages/react-native-sdk/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/react-native-sdk/src/index.tsx | Import ordering (format-driven). |
| packages/react-native-sdk/package.json | Switch scripts to oxlint/oxfmt; adjust exports ordering; restore peer deps block. |
| packages/react-native-sdk/eslint.config.js | Removed ESLint config. |
| packages/react-native-sdk/dev/expo/package.json | JSON field reordering. |
| packages/react-native-sdk/dev/expo/App.tsx | Fix effect subscription cleanup + avoid stale state update; adjust deps. |
| packages/react-native-sdk/dev/bare-rn/metro.config.js | Formatting (quotes/spacing). |
| packages/react-native-sdk/dev/bare-rn/index.js | Formatting (quotes/spacing). |
| packages/react-native-sdk/dev/bare-rn/babel.config.js | Formatting (quotes/spacing). |
| packages/react-native-sdk/dev/bare-rn/App.tsx | Formatting-only changes (quotes/JSX/spacing). |
| packages/react-native-sdk/dev/bare-rn/.prettierrc.js | Removed Prettier config. |
| packages/react-native-sdk/dev/bare-rn/.eslintrc.js | Removed ESLint config. |
| packages/openfeature-node-provider/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/openfeature-node-provider/package.json | Switch scripts to oxlint/oxfmt; reorder deps blocks. |
| packages/openfeature-node-provider/example/serve.ts | Import ordering (format-driven). |
| packages/openfeature-node-provider/example/reflag.ts | Formatting-only change (blank line). |
| packages/openfeature-node-provider/example/package.json | JSON field reordering; move packageManager to end. |
| packages/openfeature-node-provider/example/app.ts | Replace side-effect import with explicit provider import + guard; import reordering. |
| packages/openfeature-node-provider/eslint.config.js | Removed ESLint config. |
| packages/openfeature-browser-provider/vite.config.js | Formatting-only change (import spacing). |
| packages/openfeature-browser-provider/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/openfeature-browser-provider/package.json | Switch scripts to oxlint/oxfmt; add packageManager; reorder fields. |
| packages/openfeature-browser-provider/example/package.json | Replace next lint with oxlint/oxfmt scripts; remove ESLint deps. |
| packages/openfeature-browser-provider/example/components/OpenFeatureProvider.tsx | Import ordering/spacing. |
| packages/openfeature-browser-provider/example/components/HuddleFeature.tsx | Import ordering/spacing. |
| packages/openfeature-browser-provider/example/components/Context.tsx | Remove unused catch param (format/lint driven). |
| packages/openfeature-browser-provider/example/app/page.tsx | Remove unused import + reorder. |
| packages/openfeature-browser-provider/example/app/layout.tsx | Formatting-only change (blank line). |
| packages/openfeature-browser-provider/example/app/featureManagement.ts | Import ordering/spacing. |
| packages/openfeature-browser-provider/example/.eslintrc.json | Removed Next.js ESLint config. |
| packages/openfeature-browser-provider/eslint.config.js | Removed ESLint config. |
| packages/node-sdk/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/node-sdk/test/utils.test.ts | Formatting-only change (blank line). |
| packages/node-sdk/test/flusher.test.ts | Formatting-only change (blank line). |
| packages/node-sdk/test/flagsFallbackProvider.test.ts | Formatting-only change (blank line). |
| packages/node-sdk/src/config.ts | Formatting-only change (remove blank line). |
| packages/node-sdk/package.json | Switch scripts to oxlint/oxfmt; reorder fields; keep publish metadata. |
| packages/node-sdk/examples/express/serve.ts | Import ordering/spacing. |
| packages/node-sdk/examples/express/package.json | Rename + make private; JSON field reordering; add packageManager. |
| packages/node-sdk/examples/express/app.ts | Change type import to @reflag/node-sdk; reorder imports. |
| packages/node-sdk/examples/express/app.test.ts | Import ordering/spacing. |
| packages/node-sdk/eslint.config.js | Removed ESLint config. |
| packages/management-sdk/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/management-sdk/src/api.ts | Import ordering (format-driven). |
| packages/management-sdk/package.json | Switch scripts to oxlint/oxfmt; reorder fields. |
| packages/management-sdk/examples/customer-admin-panel/package.json | Replace placeholder lint with oxlint/oxfmt scripts. |
| packages/management-sdk/examples/customer-admin-panel/app/flags/user/page.tsx | Import ordering/spacing. |
| packages/management-sdk/examples/customer-admin-panel/app/flags/page.tsx | Import ordering/spacing. |
| packages/management-sdk/examples/customer-admin-panel/app/flags/company/page.tsx | Import ordering/spacing. |
| packages/management-sdk/eslint.config.js | Removed ESLint config. |
| packages/flag-evaluation/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/flag-evaluation/package.json | Switch scripts to oxlint/oxfmt; reorder deps blocks. |
| packages/flag-evaluation/eslint.config.js | Removed ESLint config. |
| packages/eslint-config/package.json | Deleted internal ESLint config package. |
| packages/eslint-config/base.js | Deleted internal ESLint base config. |
| packages/cli/utils/version.ts | Formatting-only change (blank line). |
| packages/cli/utils/gen.ts | Import ordering/spacing. |
| packages/cli/utils/auth.ts | Import spacing (blank line). |
| packages/cli/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/cli/stores/config.ts | Import ordering (node: imports first). |
| packages/cli/package.json | Switch scripts to oxlint/oxfmt; add husky/lint-staged wiring; reorder fields. |
| packages/cli/eslint.config.js | Removed ESLint config. |
| packages/cli/commands/rules.ts | Import ordering (node: imports first). |
| packages/cli/commands/new.ts | Formatting-only change (remove blank line). |
| packages/cli/commands/mcp.ts | Import ordering (node: imports first). |
| packages/cli/commands/init.ts | Import ordering (node: imports first). |
| packages/cli/commands/flags.ts | Import ordering (node: imports first). |
| packages/browser-sdk/vite.config.mjs | Formatting-only change (import spacing). |
| packages/browser-sdk/tsconfig.eslint.json | Removed ESLint-specific TS config. |
| packages/browser-sdk/test/usage.test.ts | Formatting-only change (remove blank line). |
| packages/browser-sdk/test/sse.test.ts | Formatting-only change (remove blank line). |
| packages/browser-sdk/test/rateLimiter.test.ts | Formatting-only change (remove blank line). |
| packages/browser-sdk/test/init.test.ts | Formatting-only change (remove blank line). |
| packages/browser-sdk/test/flags.test.ts | Import ordering/spacing. |
| packages/browser-sdk/test/e2e/feedback-widget.browser.spec.ts | Formatting-only change (blank line). |
| packages/browser-sdk/test/e2e/acceptance.browser.spec.ts | Formatting-only change (blank line). |
| packages/browser-sdk/test/client.test.ts | Formatting-only change (remove blank line). |
| packages/browser-sdk/src/ui/packages/floating-ui-preact-dom/useFloating.ts | Import ordering (format-driven). |
| packages/browser-sdk/src/ui/Dialog.tsx | Import ordering (format-driven). |
| packages/browser-sdk/src/toolbar/Toolbar.tsx | Formatting-only change (remove blank line). |
| packages/browser-sdk/src/toolbar/Switch.tsx | Remove unnecessary Fragment wrapper; JSX structure simplified. |
| packages/browser-sdk/src/toolbar/index.ts | Formatting-only change (remove blank line). |
| packages/browser-sdk/src/sse.ts | Import ordering (format-driven). |
| packages/browser-sdk/src/httpClient.ts | Import ordering (format-driven). |
| packages/browser-sdk/src/hooksManager.ts | Import ordering (format-driven). |
| packages/browser-sdk/src/flag/flags.ts | Formatting-only change (remove blank line). |
| packages/browser-sdk/src/flag/flagCache.ts | Formatting-only change (remove blank line). |
| packages/browser-sdk/src/feedback/ui/StarRating.tsx | Replace fragment shorthand with explicit Fragment. |
| packages/browser-sdk/src/feedback/ui/index.ts | Formatting-only change (remove blank line). |
| packages/browser-sdk/src/feedback/ui/FeedbackForm.tsx | Formatting-only change (remove blank line). |
| packages/browser-sdk/src/feedback/ui/FeedbackDialog.tsx | Replace fragment shorthand with explicit Fragment; import ordering. |
| packages/browser-sdk/src/feedback/feedback.ts | Import ordering (format-driven). |
| packages/browser-sdk/src/client.ts | Import ordering (format-driven). |
| packages/browser-sdk/src/bulkQueue.ts | Import ordering (format-driven). |
| packages/browser-sdk/package.json | Switch scripts to oxlint/oxfmt; reorder fields; add packageManager. |
| packages/browser-sdk/eslint.config.js | Removed ESLint config. |
| package.json | Add oxlint/oxfmt + lint-staged + husky; update root scripts and CI entrypoints. |
| .oxlintrc.json | Add repository-wide oxlint configuration and ignore patterns. |
| .oxfmtrc.json | Add repository-wide oxfmt configuration and import-sorting rules. |
| .husky/pre-commit | Add pre-commit lint-staged hook. |
| .gitignore | Remove obsolete eslint report ignore entry. |
| .github/workflows/package-ci.yml | Replace Prettier step with yarn fmt; remove ESLint annotation step. |
Comments suppressed due to low confidence (1)
packages/node-sdk/examples/express/package.json:15
- This example now imports
BoundReflagClientfrom@reflag/node-sdk(see app.ts), but@reflag/node-sdkis not listed in this example package’s dependencies. With Yarn PnP/workspaces this will typically fail to resolve at runtime/typecheck time. Add@reflag/node-sdkas a dependency (e.g.,workspace:*/workspace:^) or switch the import back to a relative workspace path.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- openfeature-node-provider example: drop unreachable null-check, use side-effect import for ./reflag plus type-only CreateTodosConfig - .changeset/config.json: remove stale @reflag/eslint-config ignore entry (package was removed in this branch) - node-sdk: bump vite devDependency to ~6.4.2 to match main and reorder package.json fields so it auto-merges against main - yarn.lock: refresh for vite 6.4.2
Resolved conflicts: - packages/node-sdk/package.json: keep oxlint/oxfmt scripts, vite ~6.4.2 - packages/node-sdk/examples/express/package.json: keep oxfmt field order, include @reflag/node-sdk workspace dep from main - packages/node-sdk/examples/express/app.ts: keep oxfmt import order with reflag default import - yarn.lock: regenerated via yarn install
Resolved conflicts: - packages/openfeature-node-provider/package.json: bump @reflag/node-sdk dependency to 1.5.0 from main's Version Packages PR; keep oxfmt field order - yarn.lock: regenerated via yarn install
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.