Skip to content

Fix ESLint: restore @wordpress/eslint-plugin rules compatibility - #2980

Merged
Crabcyborg merged 5 commits into
masterfrom
fix/eslint-wordpress-plugin-compatibility
Feb 25, 2026
Merged

Fix ESLint: restore @wordpress/eslint-plugin rules compatibility#2980
Crabcyborg merged 5 commits into
masterfrom
fix/eslint-wordpress-plugin-compatibility

Conversation

@shervElmi

@shervElmi shervElmi commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Problem

@wordpress/eslint-plugin hasn't migrated to ESLint 9 yet, and since Formidable Forms uses ESLint 9, all rules from @wordpress/eslint-plugin and some other ESLint plugins were excluded from the ESLint configuration. This prevented npm run lint:fix from automatically fixing violations of these rules.

Summary by CodeRabbit

  • Documentation

    • Standardized JSDoc return annotations across the codebase for consistent API docs and tooling.
  • Chores

    • Updated linting configuration to a modern format and compatibility mode.
    • Upgraded development tooling, including ESLint-related plugins and React Hooks linting.

@shervElmi

Copy link
Copy Markdown
Contributor Author

@Crabcyborg, I'm aware that this PR doesn't fix the 387 ESLint errors that are now being detected. I'll address them separately by opening a PR that adds new Formidable Forms ESLint rules, with this PR as the base branch.

@coderabbitai

coderabbitai Bot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5d46efc and 366b5cb.

📒 Files selected for processing (1)
  • eslint.config.mjs
🚧 Files skipped from review as they are similar to previous changes (1)
  • eslint.config.mjs

📝 Walkthrough

Walkthrough

Large-scale JSDoc normalization converting plural @returns to singular @return across many JS modules; ESLint moved to Flat Config (ESM) via FlatCompat and related devDependency updates in package.json. No functional API or runtime changes aside from one minor undefined→null normalization.

Changes

Cohort / File(s) Summary
ESLint Configuration
eslint.config.mjs
Migrated to ESLint flat-config (ESM) using FlatCompat, set up __dirname/__filename, replaced direct WordPress preset usage with compat.extends, removed explicit plugin registrations now handled by FlatCompat; added migration comments and granular overrides.
Package Manifest
package.json
Bumped @wordpress/eslint-plugin (^24.1.0→^24.2.0); added eslint-plugin-react-hooks ^7.0.1; globals entries reorganized/updated.
JSDoc Standardization — Admin, Core, Components
js/admin/*, js/src/admin/*, js/src/core/*, js/src/common/*
Replaced @returns@return across admin utilities, core factories, events, UI, and common components; incidental const/let minor local refactors (no behavioral change). One functional change: getSingleState converts undefined→null before returning.
JSDoc Standardization — Form Templates & Related UI
js/src/form-templates/*, js/src/welcome-tour/*
Consistent @returns@return updates across templates, events, UI, and welcome-tour modules; documentation-only edits.
JSDoc Standardization — Onboarding & Settings
js/src/onboarding-wizard/*, js/src/settings-components/*
Normalized return tags in onboarding flows and settings components (radio, slider, toggle, token-input, unit-input); no logic changes.
JSDoc Standardization — Web Components
js/src/web-components/*
Updated JSDoc return tags in web component classes and methods; one syntactic method signature whitespace cleanup.
Integrations & Misc JS
js/formidable.js, js/plugin-search.js, js/packages/floating-links/*, square/js/frontend.js, stripe/js/frmstrp.js
Applied @returns@return formatting to integration and utility scripts; no functional changes.
Tests & Minor Cleanup
tests/cypress/e2e/Forms/formPageDataValidation.cy.js
Removed an empty line in a Cypress assertion block; no behavioral change.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped through docs, changed tags in a breeze,
From plural to singular with nimble ease.
ESLint now flat, modules in tune,
A tidy codebase beneath the moon,
Hooray — the rabbit did it, with a joyful sneeze!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main objective: restoring ESLint WordPress plugin compatibility for ESLint 9 through FlatCompat integration, which aligns with the primary change in the changeset.
Docstring Coverage ✅ Passed Docstring coverage is 97.49% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/eslint-wordpress-plugin-compatibility

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

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

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

⚠️ Outside diff range comments (1)
js/src/admin/components/dependent-updater-component.js (1)

49-54: ⚠️ Potential issue | 🟡 Minor

Potential crash when propagateInputs is empty.

If none of the names in willChangeData match any DOM input, propagateInputs will be an empty array. Line 53 then accesses index 0 unconditionally, throwing a TypeError: Cannot read properties of undefined (reading 'dispatchEvent').

🛡️ Proposed fix to guard the dispatch call
 updateAllDependentElements( value ) {
+  if ( ! this.data.propagateInputs.length ) {
+    return;
+  }
   this.data.propagateInputs.forEach( input => {
     input.value = value;
   } );
   this.data.propagateInputs[ 0 ].dispatchEvent( this.data.changeEvent );
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@js/src/admin/components/dependent-updater-component.js` around lines 49 - 54,
The method updateAllDependentElements currently assumes
this.data.propagateInputs has at least one element and unconditionally calls
this.data.propagateInputs[0].dispatchEvent(this.data.changeEvent); to avoid the
TypeError when propagateInputs is empty, add a guard: check that
this.data.propagateInputs exists and has length > 0 before accessing index 0 (or
alternatively iterate and dispatch on each input). Update
updateAllDependentElements to only call dispatchEvent when an input is present,
referencing this.data.propagateInputs and this.data.changeEvent.
🧹 Nitpick comments (6)
js/src/form-templates/elements/applicationTemplatesElement.js (1)

26-30: Align function description with actual return behavior.

createApplicationTemplates is documented as “Create and return…”, but it mutates module state and returns nothing. Consider adjusting the sentence to avoid “return”.

Suggested doc-only tweak
- * Create and return the application templates HTML element.
+ * Create the application templates HTML element.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@js/src/form-templates/elements/applicationTemplatesElement.js` around lines
26 - 30, Update the JSDoc for createApplicationTemplates to reflect that it
mutates module state and does not return a value: change the description from
"Create and return the application templates HTML element." to something like
"Create and populate the application templates HTML element." and keep or ensure
the `@return` is {void}; reference the function name createApplicationTemplates
and the module-level mutation to make the intent clear.
js/src/core/ui/counter.js (1)

9-11: Align counter JSDoc with nullable return behavior.

counter(...) returns null for invalid elements, so the return type should include null.

Proposed doc fix
- * `@throws` {Error} When element is not found or invalid
- * `@return` {HTMLElement} The updated element for method chaining
+ * `@return` {HTMLElement|null} The updated element for method chaining, or null when target is invalid
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@js/src/core/ui/counter.js` around lines 9 - 11, Update the JSDoc for the
counter function to reflect that it can return null for invalid elements: change
the `@return` annotation from {HTMLElement} to {HTMLElement|null} and, if the
implementation no longer throws for invalid elements, update or remove the
`@throws` {Error} line to match the actual behavior in function counter so the
documentation and implementation remain consistent.
js/admin/dom.js (1)

458-459: Fix getCookie description/type mismatch.

The annotation says string|null, but the description still says undefined for missing cookies.

Proposed doc fix
- * `@return` {string|null} The value of the cookie, or undefined if the cookie does not exist.
+ * `@return` {string|null} The value of the cookie, or null if the cookie does not exist.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@js/admin/dom.js` around lines 458 - 459, Update the JSDoc for getCookie so
the return type and description match: change the description text that
currently says "undefined" for missing cookies to state "null" (or alternatively
change the `@return` to `string|undefined` if you prefer undefined semantics), and
ensure the `@return` line reads `@return {string|null} The value of the cookie, or
null if the cookie does not exist.` so the comment and type annotation are
consistent with the getCookie implementation.
js/src/web-components/frm-typography-component/frm-typography-component.js (1)

212-213: Remove contradictory wording from afterViewInit return doc.

@return {void} should not describe a returned unit value.

Proposed doc fix
- * `@return` {void} - The unit value.
+ * `@return` {void}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@js/src/web-components/frm-typography-component/frm-typography-component.js`
around lines 212 - 213, The JSDoc for the afterViewInit method contains
contradictory wording: the `@return` {void} tag should not describe a returned
"unit value"; edit the JSDoc block for afterViewInit to remove the phrase "The
unit value." so the `@return` {void} has no misleading description (or remove the
`@return` tag entirely if you prefer no return tag for void methods).
js/src/onboarding-wizard/dataUtils/setupUsageData.js (1)

30-31: Align processDataForStep JSDoc with actual return value.

Current code can return undefined, but the JSDoc says FormData|null. Please either initialize formData to null or update the type to include undefined.

Option A (keep current logic, fix doc)
- * `@return` {FormData|null} The FormData to be submitted for the step, or null if there's no data.
+ * `@return` {FormData|undefined} The FormData to be submitted for the step, or undefined if there's no data.
Option B (keep doc intent, fix code)
 function processDataForStep( processedStep, nextStepName ) {
-	let formData;
+	let formData = null;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@js/src/onboarding-wizard/dataUtils/setupUsageData.js` around lines 30 - 31,
The JSDoc for processDataForStep claims it returns FormData|null but the
function can return undefined; fix this by making the function follow the
documented contract: initialize the local variable formData to null (instead of
leaving it undefined) in processDataForStep and ensure every code path
explicitly returns either formData (a FormData instance) or null; update any
early returns to return null rather than leaving an implicit undefined so the
runtime behavior matches the JSDoc.
js/src/web-components/frm-tab-navigator-component/frm-tab-navigator-component.js (1)

14-14: Fix JSDoc return types to match actual return values.

Several updated @return annotations don’t match implementation: multiple methods return Element (not string), and two methods are nullable (initView, getTabUnderline).

Proposed JSDoc corrections
- * `@return` {Element} - The wrapper element.
+ * `@return` {Element|null} - The wrapper element.
- * `@return` {string} - The tab delimiter.
+ * `@return` {Element} - The tab delimiter.
- * `@return` {string} - The tab headings.
+ * `@return` {Element} - The tab headings.
- * `@return` {string} - The tab container.
+ * `@return` {Element} - The tab container.
- * `@return` {string} - The tab heading.
+ * `@return` {Element} - The tab heading.
- * `@return` {string} - The tab container.
+ * `@return` {Element} - The tab container.
- * `@return` {Element} - The tab underline.
+ * `@return` {Element|null} - The tab underline.

Also applies to: 55-56, 72-73, 91-92, 113-114, 128-129, 146-146

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@js/src/web-components/frm-tab-navigator-component/frm-tab-navigator-component.js`
at line 14, Update the incorrect JSDoc `@return` annotations in
frm-tab-navigator-component.js so they match actual return values: change return
types that are currently "string" to "Element" for methods that return DOM
elements (e.g., the wrapper getter, tab list/item/anchor getters such as
getWrapperElement, getTabList, getTabItems, getTabAnchors, and any similar
accessors), and mark initView and getTabUnderline as nullable (e.g., `@return`
{Element|null}) since they can return null; ensure getActiveTabId (or any method
that truly returns a string) keeps `@return` {string}. Adjust only the `@return`
types in the JSDoc blocks for the listed functions to reflect Element vs string
and nullable Element where applicable.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@js/src/admin/admin.js`:
- Around line 8752-8754: The code assumes contextualShortcodes and each queried
element exist before using them: guard access to contextualShortcodes and the
element found by document.querySelector before calling matches/toggling. In the
block where shouldShowShortcodes is computed and the loop over
contextualShortcodes runs, first check that contextualShortcodes is an array/has
length and that selector is defined, then when building shortcodeLi from
document.querySelector(...)?closest('li') ensure you test the query result (or
shortcodeLi) is not null before using it; apply these guards around the usage of
shouldShowShortcodes, the for (const shortcode of contextualShortcodes) loop,
and any operations on shortcodeLi to avoid runtime exceptions.

In `@js/src/core/utils/async.js`:
- Line 10: The current addToRequestQueue implementation calls .catch(task) which
re-invokes the task on rejection; update addToRequestQueue (and any usage of
lastPromise) so failed tasks are not retried automatically: change the rejection
handler to swallow or log the error instead of re-running task (e.g., .catch(err
=> { /* log err */ }) ), preserving the promise chain by returning a resolved
value or the error as appropriate so subsequent queued tasks still run and do
not double-execute non-idempotent operations.

---

Outside diff comments:
In `@js/src/admin/components/dependent-updater-component.js`:
- Around line 49-54: The method updateAllDependentElements currently assumes
this.data.propagateInputs has at least one element and unconditionally calls
this.data.propagateInputs[0].dispatchEvent(this.data.changeEvent); to avoid the
TypeError when propagateInputs is empty, add a guard: check that
this.data.propagateInputs exists and has length > 0 before accessing index 0 (or
alternatively iterate and dispatch on each input). Update
updateAllDependentElements to only call dispatchEvent when an input is present,
referencing this.data.propagateInputs and this.data.changeEvent.

---

Nitpick comments:
In `@js/admin/dom.js`:
- Around line 458-459: Update the JSDoc for getCookie so the return type and
description match: change the description text that currently says "undefined"
for missing cookies to state "null" (or alternatively change the `@return` to
`string|undefined` if you prefer undefined semantics), and ensure the `@return`
line reads `@return {string|null} The value of the cookie, or null if the cookie
does not exist.` so the comment and type annotation are consistent with the
getCookie implementation.

In `@js/src/core/ui/counter.js`:
- Around line 9-11: Update the JSDoc for the counter function to reflect that it
can return null for invalid elements: change the `@return` annotation from
{HTMLElement} to {HTMLElement|null} and, if the implementation no longer throws
for invalid elements, update or remove the `@throws` {Error} line to match the
actual behavior in function counter so the documentation and implementation
remain consistent.

In `@js/src/form-templates/elements/applicationTemplatesElement.js`:
- Around line 26-30: Update the JSDoc for createApplicationTemplates to reflect
that it mutates module state and does not return a value: change the description
from "Create and return the application templates HTML element." to something
like "Create and populate the application templates HTML element." and keep or
ensure the `@return` is {void}; reference the function name
createApplicationTemplates and the module-level mutation to make the intent
clear.

In `@js/src/onboarding-wizard/dataUtils/setupUsageData.js`:
- Around line 30-31: The JSDoc for processDataForStep claims it returns
FormData|null but the function can return undefined; fix this by making the
function follow the documented contract: initialize the local variable formData
to null (instead of leaving it undefined) in processDataForStep and ensure every
code path explicitly returns either formData (a FormData instance) or null;
update any early returns to return null rather than leaving an implicit
undefined so the runtime behavior matches the JSDoc.

In
`@js/src/web-components/frm-tab-navigator-component/frm-tab-navigator-component.js`:
- Line 14: Update the incorrect JSDoc `@return` annotations in
frm-tab-navigator-component.js so they match actual return values: change return
types that are currently "string" to "Element" for methods that return DOM
elements (e.g., the wrapper getter, tab list/item/anchor getters such as
getWrapperElement, getTabList, getTabItems, getTabAnchors, and any similar
accessors), and mark initView and getTabUnderline as nullable (e.g., `@return`
{Element|null}) since they can return null; ensure getActiveTabId (or any method
that truly returns a string) keeps `@return` {string}. Adjust only the `@return`
types in the JSDoc blocks for the listed functions to reflect Element vs string
and nullable Element where applicable.

In `@js/src/web-components/frm-typography-component/frm-typography-component.js`:
- Around line 212-213: The JSDoc for the afterViewInit method contains
contradictory wording: the `@return` {void} tag should not describe a returned
"unit value"; edit the JSDoc block for afterViewInit to remove the phrase "The
unit value." so the `@return` {void} has no misleading description (or remove the
`@return` tag entirely if you prefer no return tag for void methods).

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7762044 and 5d46efc.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (96)
  • eslint.config.mjs
  • js/admin/dom.js
  • js/admin/embed.js
  • js/admin/style.js
  • js/formidable.js
  • js/packages/floating-links/s11-floating-links.js
  • js/plugin-search.js
  • js/src/addons-page/addons/categorizeAddons.js
  • js/src/addons-page/events/addonToggleListener.js
  • js/src/addons-page/events/index.js
  • js/src/addons-page/events/searchListener.js
  • js/src/addons-page/ui/searchState.js
  • js/src/addons-page/ui/setupInitialView.js
  • js/src/addons-page/ui/showEmptyState.js
  • js/src/addons-page/ui/showSelectedCategory.js
  • js/src/admin/addon-state.js
  • js/src/admin/admin.js
  • js/src/admin/components/dependent-updater-component.js
  • js/src/admin/styles.js
  • js/src/api/class-addon-api.js
  • js/src/common/components/icon.js
  • js/src/common/utilities/values.js
  • js/src/core/events/optionBoxListener.js
  • js/src/core/factory/createPageElements.js
  • js/src/core/factory/createPageState.js
  • js/src/core/page-skeleton/elements/emptyStateElement.js
  • js/src/core/page-skeleton/events/categoryListener.js
  • js/src/core/page-skeleton/events/index.js
  • js/src/core/ui/addProgressToCardBoxes.js
  • js/src/core/ui/counter.js
  • js/src/core/utils/async.js
  • js/src/core/utils/error.js
  • js/src/core/utils/url.js
  • js/src/core/utils/validation.js
  • js/src/core/utils/visibility.js
  • js/src/form-templates/elements/applicationTemplatesElement.js
  • js/src/form-templates/events/applicationTemplateListener.js
  • js/src/form-templates/events/createFormButtonListener.js
  • js/src/form-templates/events/createTemplateListeners.js
  • js/src/form-templates/events/favoriteButtonListener.js
  • js/src/form-templates/events/getFreeTemplatesListener.js
  • js/src/form-templates/events/index.js
  • js/src/form-templates/events/searchListener.js
  • js/src/form-templates/events/useTemplateButtonListener.js
  • js/src/form-templates/initializeFormTemplates.js
  • js/src/form-templates/templates/applicationTemplates.js
  • js/src/form-templates/templates/categorizeTemplates.js
  • js/src/form-templates/ui/initializeModal.js
  • js/src/form-templates/ui/pageTitle.js
  • js/src/form-templates/ui/searchState.js
  • js/src/form-templates/ui/setupInitialView.js
  • js/src/form-templates/ui/showEmptyState.js
  • js/src/form-templates/ui/showError.js
  • js/src/form-templates/ui/showHeaderCancelButton.js
  • js/src/form-templates/ui/showModal.js
  • js/src/form-templates/ui/showSelectedCategory.js
  • js/src/form-templates/utils/validation.js
  • js/src/onboarding-wizard/dataUtils/setupUsageData.js
  • js/src/onboarding-wizard/events/backButtonListener.js
  • js/src/onboarding-wizard/events/consentTrackingButtonListener.js
  • js/src/onboarding-wizard/events/index.js
  • js/src/onboarding-wizard/events/installAddonsButtonListener.js
  • js/src/onboarding-wizard/events/skipStepButtonListener.js
  • js/src/onboarding-wizard/initializeOnboardingWizard.js
  • js/src/onboarding-wizard/ui/rootline.js
  • js/src/onboarding-wizard/ui/setupInitialView.js
  • js/src/onboarding-wizard/utils/navigateToStep.js
  • js/src/settings-components/components/radio-component.js
  • js/src/settings-components/components/slider-component.js
  • js/src/settings-components/components/toggle-group/toggle-group.js
  • js/src/settings-components/components/token-input/event-handlers.js
  • js/src/settings-components/components/token-input/proxy-input-style.js
  • js/src/settings-components/components/token-input/token-actions.js
  • js/src/settings-components/components/token-input/token-elements.js
  • js/src/settings-components/components/token-input/token-input.js
  • js/src/settings-components/components/unit-input.js
  • js/src/web-components/frm-colorpicker-component/frm-colorpicker-component.js
  • js/src/web-components/frm-dropdown-component/frm-dropdown-component.js
  • js/src/web-components/frm-range-slider-component/frm-range-slider-component.js
  • js/src/web-components/frm-tab-navigator-component/frm-tab-navigator-component.js
  • js/src/web-components/frm-typography-component/frm-typography-component.js
  • js/src/web-components/frm-web-component.js
  • js/src/welcome-tour/elements/beginTourModalElement.js
  • js/src/welcome-tour/events/checklistEvents.js
  • js/src/welcome-tour/events/dismissEvents.js
  • js/src/welcome-tour/events/index.js
  • js/src/welcome-tour/events/stylerUpdateButtonEvents.js
  • js/src/welcome-tour/ui/checklist.js
  • js/src/welcome-tour/ui/modal.js
  • js/src/welcome-tour/ui/spotlight.js
  • js/src/welcome-tour/utils/markStepAsCompleted.js
  • js/src/welcome-tour/utils/pageDetection.js
  • package.json
  • square/js/frontend.js
  • stripe/js/frmstrp.js
  • tests/cypress/e2e/Forms/formPageDataValidation.cy.js
💤 Files with no reviewable changes (1)
  • tests/cypress/e2e/Forms/formPageDataValidation.cy.js

Comment thread js/src/admin/admin.js
Comment thread js/src/core/utils/async.js
@deepsource-io

deepsource-io Bot commented Feb 25, 2026

Copy link
Copy Markdown

DeepSource Code Review

We reviewed changes in 7762044...366b5cb on this pull request. Below is the summary for the review, and you can see the individual issues we found as inline review comments.

See full review on DeepSource ↗

Important

Some issues found as part of this review are outside of the diff in this pull request and aren't shown in the inline review comments due to GitHub's API limitations. You can see those issues on the DeepSource dashboard.

PR Report Card

Overall Grade  

Focus Area: Reliability
Security  

Reliability  

Complexity  

Hygiene  

Code Review Summary

Analyzer Status Updated (UTC) Details
PHP Feb 25, 2026 2:25p.m. Review ↗
JavaScript Feb 25, 2026 2:25p.m. Review ↗

Comment thread js/src/admin/admin.js
Comment thread js/src/common/components/icon.js
Comment thread js/src/common/components/icon.js
@Crabcyborg Crabcyborg added this to the 6.29 milestone Feb 25, 2026
@Crabcyborg

Copy link
Copy Markdown
Contributor

I'm aware that this PR doesn't fix the 387 ESLint errors that are now being detected. I'll address them separately by opening a PR that adds new Formidable Forms ESLint rules, with this PR as the base branch.

Thanks @shervElmi.

I don't want to merge this with errors, so I added some overrides for now to ignore the errors in the problematic files.

We can remove those when the issues are actually fixed.

@Crabcyborg Crabcyborg left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks @shervElmi!

🚀

@Crabcyborg
Crabcyborg merged commit 63a8183 into master Feb 25, 2026
19 of 21 checks passed
@Crabcyborg
Crabcyborg deleted the fix/eslint-wordpress-plugin-compatibility branch February 25, 2026 14:38
stephywells pushed a commit that referenced this pull request Apr 4, 2026
…compatibility

Fix ESLint: restore @wordpress/eslint-plugin rules compatibility
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.

2 participants