-
Notifications
You must be signed in to change notification settings - Fork 47.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
eslint-plugin-react-hooks & "Flat Config" (ESLint 9) #28313
Comments
Thank you for reaching out. What would be involved in creating such a wrapper? Does it make more sense to file a PR and then see how it'll look? We're only on ESLint 7 though so I guess we need to upgrade that first to test. |
It's not too much work (famous last words, I know). In theory the plugin should be able to get away with exporting an object containing
👍
Yeah it feels like it'd probably be cleanest to upgrade to ESLint 8 first, just in case any breaking changes impact the plugin. |
Note that even wiring up the plugin manually doesn't enable it to work with the now-released ESLint 9: the plugin currently uses APIs like e.g.
|
Eslint officially released v9.0.0 today. However, the Hope you'll add support for v9 soon! |
Should we raise a separate issue for v9 API support? |
Currently under discussion in jsx-eslint/eslint-plugin-react#3699. |
ESLint v9 support will be done in #28773 |
@eps1lon how far away from merge/release is this update to support eslint v9? |
Hey @eps1lon, greetings! I just wanted to ask, is #28773 part of the I am currently in the process of migrating to flat config, and the plugin is giving me an error.
If needed, here is a my repository where the issue can be reproduced by running https://github.com/virtuallyunknown/eslint-flat-config-migration Relevant files: Cheers! |
got the same error and I turn off the rules about react-hooks... |
The issue seems to have been resolved in the canary release. If you are using |
ESLint v9 support is available in the Canary release channel (earliest version 5.1.0-canary-cb151849e1-20240424) and will be released as stable with the stable release of React 19. |
I am not sure if this feedback is of any value, but it looks like the types from // @ts-check
// @typescript-eslint/utils: 7.7.1
// eslint-plugin-react-hooks: 5.1.0-canary-cb151849e1-20240424
import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
/** @type {import('eslint').Linter.FlatConfig[]} */
export const configuration1 = [
{
plugins: {
'react-hooks': eslintPluginReactHooks
}
}
];
/** @type {import('@typescript-eslint/utils').TSESLint.FlatConfig.ConfigFile} */
export const configuration2 = [
{
plugins: {
'react-hooks': eslintPluginReactHooks
}
}
]; I don't want to paste the error message because it's a giant wall of text, but feel free to try it on your own. This appears to be a type error only, and as far as I can tell the plugin is working as expected, so thanks for the updates, much appreciated! |
I have been, so have all of us, for far too long, that's the general consensus here as eslint v9 has been out more than 7 months now.
Not always an easy fix for enterprise and corporations who rely on stability of versions so beta is too risky, or even people who start a new project and automatically get the latest version of a basic dependency like eslint to find the most popular plugins aren't supported yet.
I have been, so have all of us, for far too long, that's the general consensus here as eslint v9 has been out more than 7 months now.
Not always an easy fix for enterprise and corporations who rely on stability of versions so beta is too risky, or even people who start a new project and automatically get the latest version of a basic dependency like eslint to find the most popular plugins aren't supported yet.
Fair, but QA procedures have been passed to get to be merged. The general consensus of this thread (and others) is that this is taking a bit too long for something which is already fixed. React was the "titan company" attempting to be more open source and responsive (and up until now my experience was that they were succeeding in that)
You are welcome to unsubscribe to the email updates just as I was advised to "Get subscribed and read your emails" |
If you don't want to use the beta version, you can also override the dependency in E.g.:
E.g.
|
Thanks @OmniSliver, I know there are workarounds but I think the point here is that we shouldn't be scouring through an 8 month old issue with over 100 replies to find a workaround, especially when the fix is merged to main branch and ready to use (except it isn't released which is probably built into a single command line script for the project maintainers) My argument stands though, enterprises and corporations have little to zero appetite for workarounds for non-stable releases, the fact that the "fix" is called |
@ChromeQ while I generally agree with your sentiment... this is a linter. Do your policies really prevent you from running the release candidate of a development dependency that doesn't even play a role in building your final artifacts? I've spent a non-trivial amount of time designing and defending secure development practices, and I don't think that would be a practicable stance. Along with everybody here, I really wish this had moved forward faster... but let's not exaggerate the inconvenience. |
For the new folks arriving here like me, here is my understanding of the current state of the world after spending way too much time digging through this thread:
|
We just released |
@eps1lon Thanks. Will |
Works great, thank you!!! If anyone needs a reference, this is how I got it working… https://github.com/MetroStar/comet-starter/blob/d4e97fb56a73f61656d2cd23eca158772d8d1429/eslint.config.js#L50 |
For follow up about when I can finally update to v9: facebook/react#28313 v8 reaches EOL in october
ESLint v9 is now supported, but the original issue here was about adding a flat-config helper and/or documentation. Are those still being worked on? I assume that's why this issue is still open. |
|
Thanks a lot. It works well. Hope there's nothing breaking 🤞🏻 |
👋 Coming over from eslint/eslint#18093: ESLint is migrating to a new "flat config" format that will be the default in ESLint v9.
It doesn't look like
eslint-plugin-react-hooks
has documented support yet. But, based on searching around (e.g. vercel/next.js#49337), ESLint v9 is basically supported if you wire it up manually in your config:Most community plugins provide a more convenient wrapper. For example,
eslint-plugin-jsdoc
provides ajsdoc.configs['flat/recommended']
object:Would the React team be open to a PR adding in a preset object like that? And either way, updating the docs on https://www.npmjs.com/package/eslint-plugin-react-hooks?
Note: this was also filed as reactjs/react.dev#6430.
I'm posting this issue here as a reference & cross-linking it to the table in eslint/eslint#18093. If there's anything technical blocking the extension from working with flat configs, please let us know - we'd be happy to try to help! 💜
Additional resources:
(sorry for not using the issue templates - I wasn't sure whether this would count as a bug)
The text was updated successfully, but these errors were encountered: