Repository navigation
Conversation
- Convert eslint-disable comments to biome-ignore with reasons; drop the react/prop-types ones, which have no Biome equivalent - Type the error detail in handleStacResponse instead of implicit any - Use type-only imports where values are only used as types - Mark the web-vitals import promise in the example as intentionally unawaited Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Biome formats identically to the previous Prettier config (no changes on the existing code) and covers the custom ESLint rules (noConsole, hooks at top level, self-closing elements, array index keys, explicit any). noFloatingPromises and noMisusedPromises replace the corresponding typescript-eslint type-checked rules. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Replaces ESLint, Prettier and 8 plugin and config packages with Biome 2.5.14. ESLint 9 is now marked deprecated on npm, and
eslint-plugin-reactblocks ESLint 10, so staying on ESLint wasn't a good option.Formatting
biome.jsoncmirrors.prettierrc(single quotes, ES5 trailing commas, semicolons, 100 cols, 2 spaces).biome formatproduces zero changes on the existing code.Linting
Biome's
recommendedpreset (roughlyeslint:recommended+ typescript-eslint recommended), plus the previous custom rules:no-consolesuspicious/noConsolereact-hooks/rules-of-hookscorrectness/useHookAtTopLevelreact/self-closing-compstyle/useSelfClosingElementsreact/no-array-index-keysuspicious/noArrayIndexKey@typescript-eslint/no-explicit-any(warn)suspicious/noExplicitAny(warn)no-unused-vars/_prefixnoUnusedVariables/noUnusedFunctionParameters(ignore_by default)@typescript-eslint/no-floating-promises,no-misused-promisesnursery/noFloatingPromises,nursery/noMisusedPromisesVerified with a probe file that each of these rules fires.
Coverage differences
unbound-method,restrict-template-expressions,no-base-to-string, …) have no equivalent. The promise rules are carried over, but are still in Biome'snurserygroup.useAwaitThenableis off. It reported 30 false positives onawait act(async () => {}), because Biome's inference doesn't resolve React'sactoverloads.react/jsx-pascal-casehas no Biome equivalent.useExhaustiveDependencies, which ESLint never enabled. The one existing hit (useStacSearch.ts, reset effect) is suppressed with a reason rather than changing hook behaviour in a tooling PR.a11yandnoShadowRestrictedNames, and allows Tailwind v3's@tailwind, so it's linted about as strictly as before; the app is due to be rebuilt.Code changes (separate commit)
eslint-disable→biome-ignorecomments, each with a reason.react/prop-typesones were removed.handleStacResponse:let detailwas implicitlyany; now typed asGenericObject | string, matchingApiError.useImportTypefix turnedimport Reactintoimport type React. That breakstscunder our"jsx": "react". Fixed with"jsxRuntime": "reactClassic"inbiome.jsonc.Scripts and CI
pnpm lint→biome check .(lint + format check); newpnpm format→biome format --write .biome ci ., which emits GitHub annotationsuseOptionalChainin tests,noNonNullAssertion, one unused test import). Warnings don't fail CI.Note on pnpm's
minimumReleaseAgepnpm 12 rejects versions published less than 24 hours ago. When
pnpm addhits this, it silently writes aminimumReleaseAgeExcludelist topnpm-workspace.yaml. Check that file before committing after adding a dependency. Biome 2.5.15 is under 24 hours old, so this PR uses 2.5.14; #68 also holds backviteandglobalsfor the same reason.Verification
From a clean
pnpm install --frozen-lockfile:pnpm lintandbiome ci .(0 errors),pnpm test(94/94),pnpm build, andtsc --noEmitall pass.Editor
Install the Biome VS Code extension (
biomejs.biome) and set it as the default formatter instead of Prettier.🤖 Generated with Claude Code