-
-
Notifications
You must be signed in to change notification settings - Fork 6.4k
feat: Introduce Downloads Archive page #7794
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
base: main
Are you sure you want to change the base?
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a new simplified downloads page that’s fully server-rendered (no JS required) and provides major‐version download summaries, with expandable minor versions under <details>
. It also centralizes download utilities and updates the download URL API to use an options object.
- Introduce
simplified.mdx
andDownloadSimpleLayout
for the new page - Update
getNodeDownloadUrl
signature and its callers to use an options object - Add
DownloadsTable
,Details
, andWithSimplifiedDownload
components
Reviewed Changes
Copilot reviewed 23 out of 23 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
util/downloadUtils/index.tsx | Exported DownloadDropdownItem type |
util/downloadUtils/constants.json | Added compatibility ranges for platforms |
util/tests/getNodeDownloadUrl.test.mjs | Updated tests for new getNodeDownloadUrl signature |
types/layouts.ts | Added 'download-simple' layout type |
pages/en/download/simplified.mdx | New MDX page with simplified download UI |
next.mdx.use.mjs | Registered new MDX components (WithSimplifiedDownload , etc.) |
next.dynamic.constants.mjs | Configured dynamic routing and exclusions for new page |
layouts/DownloadSimple.tsx | New layout wrapping simplified download content |
components/withSimplifiedDownload.tsx | HOC to provide download data and sidebar items |
components/withProgressionSidebar.tsx | Refactored to accept both navKey and explicit groups |
components/withMetaBar.tsx | Made items injectable for meta‐bar |
components/withMarkdownContent.tsx | New HOC to load MDX content at runtime |
components/withLayout.tsx | Added DownloadSimpleLayout to layout mapping |
components/MDX/Details | New <Details> component for collapsible sections |
components/Downloads/Release/ReleaseCodeBox.tsx | Updated “no-script” link to point at new simplified page |
components/Downloads/Release/PrebuiltDownloadButtons.tsx | Switched getNodeDownloadUrl calls to object syntax |
components/Downloads/DownloadsTable | New table for listing artifacts |
components/Downloads/DownloadLink.tsx | Updated to new getNodeDownloadUrl API |
components/Downloads/DownloadButton | Updated to new getNodeDownloadUrl API |
Comments suppressed due to low confidence (1)
apps/site/components/Downloads/DownloadsTable/index.tsx:1
- Consider adding unit tests for
DownloadsTable
to verify it renders rows correctly for differentsource
inputs.
'use client';
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Caner Akdas <canerakdas@gmail.com>
Using the format you suggested instead of |
Let's block this PR until we have the codeless dropdown? Besides of that, everything else is looking amazing! |
I also feel the "simplified" downloads page should include the unofficial releases (on a separate table below "Installer Packages") |
Lastly, if we could update this: To have a button that goes to the Downloads page instead of straightly downloading the binary and then another button for "getting involved" that'd be great. In the future we want to change that to "Support Node.js" and maybe a lower text regarding EOL/ESP program. But at the very least with this PR we can change the download buttons on home to actually go to the download page. |
Note Your Pull Request seems to be updating Translations of the Node.js Website. Whilst we appreciate your intent; Any Translation update should be done through our Crowdin Project. Thank you! |
I’ve added navigation through versions to this table, but I still think the Modal is useful. It allows us to quickly get an overview of the versions on a single page. @nodejs/nodejs-website what do you think? |
How do we plan to use this codeless dropdown? My thinking is as follows;
Or we can just use details(noscript) version when JS is disabled |
I agree with you 100%. |
@canerakdas "Want new features sooner? Get Node.js v24.1.01 instead." should probably go to the /download/current page. |
On the downloads archive can "Warning |
@Harkunwar do you feel like working on the noscript version of the Dropdown? (should reside within the Dropdown component also, but the base should be its own thing |
Also can "Node.js Download Archive" the Node.js have the registered symbol? :) |
@ovflowd I've already started working on the ChangeHistory component that can run without JS. That and the dropdown should share a lot of the code. |
Neat! Keep me posted on that component! |
My :2cents:
|
Description
This PR introduces a new statically generated page that displays simplified download options by major version:
Also includes a download table of other minor versions of the major version;

Since I included the minor versions as a table, the content became quite lengthy. To prevent this, I used the HTML
details
element. The main reason I didn't use Radix Primitive Accordion is that we want this page to be fully usable even for users who have JavaScript disabledI am open to suggestions for to add / remove content 🙇
Validation
The links below are accessible in the preview;
Related Issues
Addresses #7443
Check List
pnpm format
to ensure the code follows the style guide.pnpm test
to check if all tests are passing.pnpm build
to check if the website builds without errors.