React rocks with quick-lint-js 2.0
React is the most popular web framework in 2016-2021. quick-lint-js version 2.0 makes React easier by catching common mistakes.
We are proud to announce version 2.0 of quick-lint-js!
<%- callsToAction() %>Notable quick-lint-js 2.0 features:
- JSX (React) support
- @@@ Over 110 times faster than ESLint for React code
- 18 new errors
See the full change log here.
How does quick-lint-js compare to ESLint? See for yourself:
let headingLinks = [];
for (let el of $("a")) {
if (el.parentNode.tag = "H1") {
headingLinks.push(el);
}
}
Expected a conditional expression and instead saw an assignment;
Unexpected constant condition
let headingLinks = [];
for (let el of $("a")) {
if (el.parentNode.tag = "H1") {
headingLinks.push(el);
}
}
'=' changes variables; to compare, use '===' instead [E0188]
function TodoEntry({title, children}) {
return (
<h3>{title}</h3>
<div className="body">{children}</div>
);
}
Adjacent JSX elements must be wrapped in an enclosing tag
function TodoEntry({title, children}) {
return (
<h3>{title}</h3>
<div className="body">{children}</div>
);
}
missing '<>' and '</>' to enclose multiple children;
children end here [E0189]
function Link({text, ...props}) {
return <a {props}>{text}</a>;
}
Parsing error: Unexpected token props
function Link({text, ...props}) {
return <a {props}>{text}</a>;
}
missing '...' in JSX attribute spread [E0186]

What should we work on next? Suggest features for quick-lint-js.
quick-lint-js version 2.0 has over 220 patches atop version 1.0. 37 people made quick-lint-js possible.
<%- callsToAction() %>Written by strager, lead developer of quick-lint-js.