Node.js release schedule: https://nodejs.org/en/about/previous-releases
We support Node.js on our product as low as their maintenance mode version. For example: https://mui.com/material-ui/getting-started/supported-platforms/#server.
Anytime we do a major release, we are likely to drop support for the unmaintained Node.js versions.
We try to replicate Products to dogfood our product, but we are flexible.
We will upgrade to the LTS Node.js version if there is enough gain for it, and only upgrade to the Active version if there is a strong upside.
For example, during the CJS → ESM migration period, we diverged the Node.js version to simplify operations. Think like this: “what’s faster: fix a few SSR regressions or have to handle CJS support in our internal tool?” The former.
When we use more recent versions of Node.js for internal tools, we add a simple smoke test with the older version in Products that we support to decrease the likelihood that our users won’t experience regressions.