feat!: migrate ESLint 3 to ESLint 9 flat config with typescript-eslint#950
Draft
kdaviduik wants to merge 4 commits intotypescript-migration-part-4from
Draft
feat!: migrate ESLint 3 to ESLint 9 flat config with typescript-eslint#950kdaviduik wants to merge 4 commits intotypescript-migration-part-4from
kdaviduik wants to merge 4 commits intotypescript-migration-part-4from
Conversation
Contributor
Author
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
730d840 to
a9c5b43
Compare
c47c4dd to
b8b74d9
Compare
ffe9ea0 to
1de124b
Compare
This was referenced Mar 13, 2026
1de124b to
4296a8c
Compare
3bc6f43 to
17942a1
Compare
4296a8c to
850f5d1
Compare
This was referenced Mar 14, 2026
17942a1 to
6ff31cb
Compare
850f5d1 to
f3f0e73
Compare
Replaces ESLint 3.3.1 + unmaintained eslint-plugin-shopify v13 with ESLint 9 flat config + typescript-eslint v8. This enables type-aware linting for .ts files during the ongoing TypeScript migration. Key decisions: - 22 TypeScript rules configured (12 PRD-specified + 10 additional safety rules including switch-exhaustiveness-check with requireDefaultForNonUnion, prefer-nullish-coalescing, consistent-type-imports) - src/types/ override suppresses known any/Function debt (deferred to PR 20) - Test files excluded (test linting added in Phase 5) - src/utils/ and src/styles/ now linted (18 files previously excluded by .eslintignore workaround) - Removed redundant lint from test script (CI already runs lint separately) - Used fileURLToPath workaround for __dirname (Node 18 compat) Also fixes lint violations found by expanded coverage: - hasOwnProperty -> Object.hasOwn() in product-set.js - Removed unused isObject function in merge.js - Removed unused element param in frame-utils.js - Underscore-prefixed unused err binding in ui.js - Cleaned up stale eslint-disable directives across 4 files Local workflow change: `pnpm test` no longer runs lint (CI runs it separately). Run `pnpm run lint` explicitly for local lint checks. BREAKING CHANGE: ESLint config format changed from .eslintrc to eslint.config.mjs. Any custom ESLint integrations must update.
The previous commit inadvertently included regenerated CSS output from pnpm run build, which modernized vendor prefixes and CSS custom properties. Those changes belong in the browserslist PR (part-4), not this ESLint migration PR. Reverting to the exact part-4 version.
- Remove hardcoded "22" rule count from task 5.4 (single-source-of-truth is eslint.config.mjs, not a prose count that goes stale) - Update Phase 3 summary table to reflect PR 5 submission - Replace "PR 20" reference in eslint.config.mjs comment with "type refinement phase" to avoid stale PR number coupling - Remove specific "5 stale" directive count from task 5.7 (exact count is unnecessary and was inaccurate — it was 6)
The catch binding was underscore-prefixed (_err), not removed.
f3f0e73 to
f6df438
Compare
6ff31cb to
6b5888f
Compare
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 3.3.1 + unmaintained eslint-plugin-shopify v13 with
ESLint 9 flat config + typescript-eslint v8. This enables type-aware
linting for .ts files during the ongoing TypeScript migration.
Key decisions:
safety rules including switch-exhaustiveness-check,
prefer-nullish-coalescing, consistent-type-imports)
by .eslintignore workaround)
Also fixes lint violations found by expanded coverage:
BREAKING CHANGE: ESLint config format changed from .eslintrc to
eslint.config.mjs. Any custom ESLint integrations must update.