Skip to content

Revert [eprh] Remove hermes-parser - #34747

Merged
poteto merged 1 commit into
mainfrom
pr34747
Oct 6, 2025
Merged

Revert [eprh] Remove hermes-parser#34747
poteto merged 1 commit into
mainfrom
pr34747

Conversation

@poteto

@potetopoteto commented Oct 6, 2025

Copy link
Copy Markdown
Collaborator

Adds back HermesParser to eslint-plugin-react-hooks. There are still external users of Flow using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.

In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). But for now, I am reverting the PR.

This does mean that Sandpack in react.dev cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.

Adds back HermesParser to eslint-plugin-react-hooks. There are still [external users of Flow](#34719 (comment)) using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). For now I am reverting that PR. This does mean that [Sandpack in react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31) cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.
@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 6, 2025
@potetopoteto mentioned this pull request Oct 6, 2025
@potetopoteto changed the title Revert #34719Revert [eprh] Remove hermes-parserOct 6, 2025
@react-sizebot

Copy link
Copy Markdown

Comparing: c786258...8de3085

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB=1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js=536.14 kB536.14 kB=94.81 kB94.81 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.96 kB=117.04 kB117.04 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.83 kB=121.08 kB121.08 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.26 kB=119.44 kB119.43 kB

Significant size changes

Includes any change greater than 0.2%:

(No significant changes)

Generated by 🚫 dangerJS against 8de3085

@josephsavonajosephsavona 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 for reverting, our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

@mwiencek

Copy link
Copy Markdown
Contributor

Thanks for considering your outside Flow users! There are dozens of us! 😅

our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

We started using React+Flow in musicbrainz-server in 2015, when TypeScript wasn't a monopoly yet. It felt logical since React itself used Flow (and the focus on soundness was appealing). Today we have 100K+ lines of Flow, and no real desire to port those to TS. Flow still works great for us, outside of lacking up-to-date libdefs. We are taking huge advantage of the new component and match syntax features, and would hate to code without them now.

@poteto
poteto merged commit b65e6fc into mainOct 6, 2025
247 checks passed
@poteto
poteto deleted the pr34747 branch October 6, 2025 16:43
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
@wo-o29

Copy link
Copy Markdown

I have uploaded a PR to fix the issue where the flow link in the PR template is incorrectly linked, preventing access to the official flow website. Could you please check it?

#34326

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@poteto@react-sizebot@mwiencek@wo-o29@josephsavona
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Revert [eprh] Remove hermes-parser by poteto · Pull Request #34747 · react/react · GitHub
Skip to content

Revert [eprh] Remove hermes-parser - #34747

Merged
poteto merged 1 commit into
mainfrom
pr34747
Oct 6, 2025
Merged

Revert [eprh] Remove hermes-parser#34747
poteto merged 1 commit into
mainfrom
pr34747

Conversation

@poteto

@potetopoteto commented Oct 6, 2025

Copy link
Copy Markdown
Collaborator

Adds back HermesParser to eslint-plugin-react-hooks. There are still external users of Flow using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.

In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). But for now, I am reverting the PR.

This does mean that Sandpack in react.dev cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.

Adds back HermesParser to eslint-plugin-react-hooks. There are still [external users of Flow](#34719 (comment)) using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). For now I am reverting that PR. This does mean that [Sandpack in react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31) cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.
@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 6, 2025
@potetopoteto mentioned this pull request Oct 6, 2025
@potetopoteto changed the title Revert #34719Revert [eprh] Remove hermes-parserOct 6, 2025
@react-sizebot

Copy link
Copy Markdown

Comparing: c786258...8de3085

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB=1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js=536.14 kB536.14 kB=94.81 kB94.81 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.96 kB=117.04 kB117.04 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.83 kB=121.08 kB121.08 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.26 kB=119.44 kB119.43 kB

Significant size changes

Includes any change greater than 0.2%:

(No significant changes)

Generated by 🚫 dangerJS against 8de3085

@josephsavonajosephsavona 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 for reverting, our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

@mwiencek

Copy link
Copy Markdown
Contributor

Thanks for considering your outside Flow users! There are dozens of us! 😅

our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

We started using React+Flow in musicbrainz-server in 2015, when TypeScript wasn't a monopoly yet. It felt logical since React itself used Flow (and the focus on soundness was appealing). Today we have 100K+ lines of Flow, and no real desire to port those to TS. Flow still works great for us, outside of lacking up-to-date libdefs. We are taking huge advantage of the new component and match syntax features, and would hate to code without them now.

@poteto
poteto merged commit b65e6fc into mainOct 6, 2025
247 checks passed
@poteto
poteto deleted the pr34747 branch October 6, 2025 16:43
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
@wo-o29

Copy link
Copy Markdown

I have uploaded a PR to fix the issue where the flow link in the PR template is incorrectly linked, preventing access to the official flow website. Could you please check it?

#34326

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@poteto@react-sizebot@mwiencek@wo-o29@josephsavona
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Revert [eprh] Remove hermes-parser by poteto · Pull Request #34747 · react/react · GitHub
Skip to content

Revert [eprh] Remove hermes-parser - #34747

Merged
poteto merged 1 commit into
mainfrom
pr34747
Oct 6, 2025
Merged

Revert [eprh] Remove hermes-parser#34747
poteto merged 1 commit into
mainfrom
pr34747

Conversation

@poteto

@potetopoteto commented Oct 6, 2025

Copy link
Copy Markdown
Collaborator

Adds back HermesParser to eslint-plugin-react-hooks. There are still external users of Flow using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.

In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). But for now, I am reverting the PR.

This does mean that Sandpack in react.dev cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.

Adds back HermesParser to eslint-plugin-react-hooks. There are still [external users of Flow](#34719 (comment)) using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). For now I am reverting that PR. This does mean that [Sandpack in react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31) cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.
@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 6, 2025
@potetopoteto mentioned this pull request Oct 6, 2025
@potetopoteto changed the title Revert #34719Revert [eprh] Remove hermes-parserOct 6, 2025
@react-sizebot

Copy link
Copy Markdown

Comparing: c786258...8de3085

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB=1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js=536.14 kB536.14 kB=94.81 kB94.81 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.96 kB=117.04 kB117.04 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.83 kB=121.08 kB121.08 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.26 kB=119.44 kB119.43 kB

Significant size changes

Includes any change greater than 0.2%:

(No significant changes)

Generated by 🚫 dangerJS against 8de3085

@josephsavonajosephsavona 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 for reverting, our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

@mwiencek

Copy link
Copy Markdown
Contributor

Thanks for considering your outside Flow users! There are dozens of us! 😅

our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

We started using React+Flow in musicbrainz-server in 2015, when TypeScript wasn't a monopoly yet. It felt logical since React itself used Flow (and the focus on soundness was appealing). Today we have 100K+ lines of Flow, and no real desire to port those to TS. Flow still works great for us, outside of lacking up-to-date libdefs. We are taking huge advantage of the new component and match syntax features, and would hate to code without them now.

@poteto
poteto merged commit b65e6fc into mainOct 6, 2025
247 checks passed
@poteto
poteto deleted the pr34747 branch October 6, 2025 16:43
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
@wo-o29

Copy link
Copy Markdown

I have uploaded a PR to fix the issue where the flow link in the PR template is incorrectly linked, preventing access to the official flow website. Could you please check it?

#34326

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@poteto@react-sizebot@mwiencek@wo-o29@josephsavona
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Revert [eprh] Remove hermes-parser by poteto · Pull Request #34747 · react/react · GitHub
Skip to content

Revert [eprh] Remove hermes-parser - #34747

Merged
poteto merged 1 commit into
mainfrom
pr34747
Oct 6, 2025
Merged

Revert [eprh] Remove hermes-parser#34747
poteto merged 1 commit into
mainfrom
pr34747

Conversation

@poteto

@potetopoteto commented Oct 6, 2025

Copy link
Copy Markdown
Collaborator

Adds back HermesParser to eslint-plugin-react-hooks. There are still external users of Flow using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.

In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). But for now, I am reverting the PR.

This does mean that Sandpack in react.dev cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.

Adds back HermesParser to eslint-plugin-react-hooks. There are still [external users of Flow](#34719 (comment)) using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). For now I am reverting that PR. This does mean that [Sandpack in react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31) cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.
@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 6, 2025
@potetopoteto mentioned this pull request Oct 6, 2025
@potetopoteto changed the title Revert #34719Revert [eprh] Remove hermes-parserOct 6, 2025
@react-sizebot

Copy link
Copy Markdown

Comparing: c786258...8de3085

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB=1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js=536.14 kB536.14 kB=94.81 kB94.81 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.96 kB=117.04 kB117.04 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.83 kB=121.08 kB121.08 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.26 kB=119.44 kB119.43 kB

Significant size changes

Includes any change greater than 0.2%:

(No significant changes)

Generated by 🚫 dangerJS against 8de3085

@josephsavonajosephsavona 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 for reverting, our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

@mwiencek

Copy link
Copy Markdown
Contributor

Thanks for considering your outside Flow users! There are dozens of us! 😅

our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

We started using React+Flow in musicbrainz-server in 2015, when TypeScript wasn't a monopoly yet. It felt logical since React itself used Flow (and the focus on soundness was appealing). Today we have 100K+ lines of Flow, and no real desire to port those to TS. Flow still works great for us, outside of lacking up-to-date libdefs. We are taking huge advantage of the new component and match syntax features, and would hate to code without them now.

@poteto
poteto merged commit b65e6fc into mainOct 6, 2025
247 checks passed
@poteto
poteto deleted the pr34747 branch October 6, 2025 16:43
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
@wo-o29

Copy link
Copy Markdown

I have uploaded a PR to fix the issue where the flow link in the PR template is incorrectly linked, preventing access to the official flow website. Could you please check it?

#34326

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@poteto@react-sizebot@mwiencek@wo-o29@josephsavona
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Revert [eprh] Remove hermes-parser by poteto · Pull Request #34747 · react/react · GitHub
Skip to content

Revert [eprh] Remove hermes-parser - #34747

Merged
poteto merged 1 commit into
mainfrom
pr34747
Oct 6, 2025
Merged

Revert [eprh] Remove hermes-parser#34747
poteto merged 1 commit into
mainfrom
pr34747

Conversation

@poteto

@potetopoteto commented Oct 6, 2025

Copy link
Copy Markdown
Collaborator

Adds back HermesParser to eslint-plugin-react-hooks. There are still external users of Flow using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.

In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). But for now, I am reverting the PR.

This does mean that Sandpack in react.dev cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.

Adds back HermesParser to eslint-plugin-react-hooks. There are still [external users of Flow](#34719 (comment)) using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). For now I am reverting that PR. This does mean that [Sandpack in react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31) cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.
@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 6, 2025
@potetopoteto mentioned this pull request Oct 6, 2025
@potetopoteto changed the title Revert #34719Revert [eprh] Remove hermes-parserOct 6, 2025
@react-sizebot

Copy link
Copy Markdown

Comparing: c786258...8de3085

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB=1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js=536.14 kB536.14 kB=94.81 kB94.81 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.96 kB=117.04 kB117.04 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.83 kB=121.08 kB121.08 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.26 kB=119.44 kB119.43 kB

Significant size changes

Includes any change greater than 0.2%:

(No significant changes)

Generated by 🚫 dangerJS against 8de3085

@josephsavonajosephsavona 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 for reverting, our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

@mwiencek

Copy link
Copy Markdown
Contributor

Thanks for considering your outside Flow users! There are dozens of us! 😅

our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

We started using React+Flow in musicbrainz-server in 2015, when TypeScript wasn't a monopoly yet. It felt logical since React itself used Flow (and the focus on soundness was appealing). Today we have 100K+ lines of Flow, and no real desire to port those to TS. Flow still works great for us, outside of lacking up-to-date libdefs. We are taking huge advantage of the new component and match syntax features, and would hate to code without them now.

@poteto
poteto merged commit b65e6fc into mainOct 6, 2025
247 checks passed
@poteto
poteto deleted the pr34747 branch October 6, 2025 16:43
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
@wo-o29

Copy link
Copy Markdown

I have uploaded a PR to fix the issue where the flow link in the PR template is incorrectly linked, preventing access to the official flow website. Could you please check it?

#34326

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@poteto@react-sizebot@mwiencek@wo-o29@josephsavona
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Revert [eprh] Remove hermes-parser by poteto · Pull Request #34747 · react/react · GitHub
Skip to content

Revert [eprh] Remove hermes-parser - #34747

Merged
poteto merged 1 commit into
mainfrom
pr34747
Oct 6, 2025
Merged

Revert [eprh] Remove hermes-parser#34747
poteto merged 1 commit into
mainfrom
pr34747

Conversation

@poteto

@potetopoteto commented Oct 6, 2025

Copy link
Copy Markdown
Collaborator

Adds back HermesParser to eslint-plugin-react-hooks. There are still external users of Flow using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.

In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). But for now, I am reverting the PR.

This does mean that Sandpack in react.dev cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.

Adds back HermesParser to eslint-plugin-react-hooks. There are still [external users of Flow](#34719 (comment)) using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). For now I am reverting that PR. This does mean that [Sandpack in react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31) cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.
@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 6, 2025
@potetopoteto mentioned this pull request Oct 6, 2025
@potetopoteto changed the title Revert #34719Revert [eprh] Remove hermes-parserOct 6, 2025
@react-sizebot

Copy link
Copy Markdown

Comparing: c786258...8de3085

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB=1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js=536.14 kB536.14 kB=94.81 kB94.81 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.96 kB=117.04 kB117.04 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.83 kB=121.08 kB121.08 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.26 kB=119.44 kB119.43 kB

Significant size changes

Includes any change greater than 0.2%:

(No significant changes)

Generated by 🚫 dangerJS against 8de3085

@josephsavonajosephsavona 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 for reverting, our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

@mwiencek

Copy link
Copy Markdown
Contributor

Thanks for considering your outside Flow users! There are dozens of us! 😅

our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

We started using React+Flow in musicbrainz-server in 2015, when TypeScript wasn't a monopoly yet. It felt logical since React itself used Flow (and the focus on soundness was appealing). Today we have 100K+ lines of Flow, and no real desire to port those to TS. Flow still works great for us, outside of lacking up-to-date libdefs. We are taking huge advantage of the new component and match syntax features, and would hate to code without them now.

@poteto
poteto merged commit b65e6fc into mainOct 6, 2025
247 checks passed
@poteto
poteto deleted the pr34747 branch October 6, 2025 16:43
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
@wo-o29

Copy link
Copy Markdown

I have uploaded a PR to fix the issue where the flow link in the PR template is incorrectly linked, preventing access to the official flow website. Could you please check it?

#34326

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@poteto@react-sizebot@mwiencek@wo-o29@josephsavona
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Revert [eprh] Remove hermes-parser by poteto · Pull Request #34747 · react/react · GitHub
Skip to content

Revert [eprh] Remove hermes-parser - #34747

Merged
poteto merged 1 commit into
mainfrom
pr34747
Oct 6, 2025
Merged

Revert [eprh] Remove hermes-parser#34747
poteto merged 1 commit into
mainfrom
pr34747

Conversation

@poteto

@potetopoteto commented Oct 6, 2025

Copy link
Copy Markdown
Collaborator

Adds back HermesParser to eslint-plugin-react-hooks. There are still external users of Flow using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.

In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). But for now, I am reverting the PR.

This does mean that Sandpack in react.dev cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.

Adds back HermesParser to eslint-plugin-react-hooks. There are still [external users of Flow](#34719 (comment)) using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). For now I am reverting that PR. This does mean that [Sandpack in react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31) cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.
@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 6, 2025
@potetopoteto mentioned this pull request Oct 6, 2025
@potetopoteto changed the title Revert #34719Revert [eprh] Remove hermes-parserOct 6, 2025
@react-sizebot

Copy link
Copy Markdown

Comparing: c786258...8de3085

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB=1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js=536.14 kB536.14 kB=94.81 kB94.81 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.96 kB=117.04 kB117.04 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.83 kB=121.08 kB121.08 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.26 kB=119.44 kB119.43 kB

Significant size changes

Includes any change greater than 0.2%:

(No significant changes)

Generated by 🚫 dangerJS against 8de3085

@josephsavonajosephsavona 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 for reverting, our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

@mwiencek

Copy link
Copy Markdown
Contributor

Thanks for considering your outside Flow users! There are dozens of us! 😅

our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

We started using React+Flow in musicbrainz-server in 2015, when TypeScript wasn't a monopoly yet. It felt logical since React itself used Flow (and the focus on soundness was appealing). Today we have 100K+ lines of Flow, and no real desire to port those to TS. Flow still works great for us, outside of lacking up-to-date libdefs. We are taking huge advantage of the new component and match syntax features, and would hate to code without them now.

@poteto
poteto merged commit b65e6fc into mainOct 6, 2025
247 checks passed
@poteto
poteto deleted the pr34747 branch October 6, 2025 16:43
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
@wo-o29

Copy link
Copy Markdown

I have uploaded a PR to fix the issue where the flow link in the PR template is incorrectly linked, preventing access to the official flow website. Could you please check it?

#34326

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@poteto@react-sizebot@mwiencek@wo-o29@josephsavona
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Revert [eprh] Remove hermes-parser by poteto · Pull Request #34747 · react/react · GitHub
Skip to content

Revert [eprh] Remove hermes-parser - #34747

Merged
poteto merged 1 commit into
mainfrom
pr34747
Oct 6, 2025
Merged

Revert [eprh] Remove hermes-parser#34747
poteto merged 1 commit into
mainfrom
pr34747

Conversation

@poteto

@potetopoteto commented Oct 6, 2025

Copy link
Copy Markdown
Collaborator

Adds back HermesParser to eslint-plugin-react-hooks. There are still external users of Flow using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.

In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). But for now, I am reverting the PR.

This does mean that Sandpack in react.dev cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.

Adds back HermesParser to eslint-plugin-react-hooks. There are still [external users of Flow](#34719 (comment)) using the plugin, so we shouldn't break the plugin for them. However, we still have the problem of double parsing: once from eslint (which we discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to babel (or alternatively, update the compiler to take estree as input). For now I am reverting that PR. This does mean that [Sandpack in react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31) cannot update to the latest eprh as HermesParser does not appear to be able to be run in a browser. I discovered this while trying to update eprh on react.dev last week, but didn't investigate deeply. I'll need to double check that again to find out more.
@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 6, 2025
@potetopoteto mentioned this pull request Oct 6, 2025
@potetopoteto changed the title Revert #34719Revert [eprh] Remove hermes-parserOct 6, 2025
@react-sizebot

Copy link
Copy Markdown

Comparing: c786258...8de3085

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB=1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js=536.14 kB536.14 kB=94.81 kB94.81 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.96 kB=117.04 kB117.04 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.83 kB=121.08 kB121.08 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.26 kB=119.44 kB119.43 kB

Significant size changes

Includes any change greater than 0.2%:

(No significant changes)

Generated by 🚫 dangerJS against 8de3085

@josephsavonajosephsavona 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 for reverting, our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

@mwiencek

Copy link
Copy Markdown
Contributor

Thanks for considering your outside Flow users! There are dozens of us! 😅

our Flow users are pretty quiet but it's great to see folks using React with Flow (and hopefully taking advantage of component/hook syntax and render types).

We started using React+Flow in musicbrainz-server in 2015, when TypeScript wasn't a monopoly yet. It felt logical since React itself used Flow (and the focus on soundness was appealing). Today we have 100K+ lines of Flow, and no real desire to port those to TS. Flow still works great for us, outside of lacking up-to-date libdefs. We are taking huge advantage of the new component and match syntax features, and would hate to code without them now.

@poteto
poteto merged commit b65e6fc into mainOct 6, 2025
247 checks passed
@poteto
poteto deleted the pr34747 branch October 6, 2025 16:43
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
github-actionsBot pushed a commit that referenced this pull request Oct 6, 2025
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](#34719 (comment))
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](https://github.com/reactjs/react.dev/blob/11cb6b591571caf5fa2a192117b6a6445c3f2027/src/components/MDX/Sandpack/runESLint.tsx#L31)
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
DiffTrain build for [b65e6fc](b65e6fc)
@wo-o29

Copy link
Copy Markdown

I have uploaded a PR to fix the issue where the flow link in the PR template is incorrectly linked, preventing access to the official flow website. Could you please check it?

#34326

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@poteto@react-sizebot@mwiencek@wo-o29@josephsavona