Skip to content

chore: remove Active/Maintenance LTS distinction#8817

Merged
MattIPv4 merged 5 commits intomainfrom
MattIPv4/remove-active-maintenance-lts
Apr 16, 2026
Merged

chore: remove Active/Maintenance LTS distinction#8817
MattIPv4 merged 5 commits intomainfrom
MattIPv4/remove-active-maintenance-lts

Conversation

@MattIPv4
Copy link
Copy Markdown
Member

@MattIPv4 MattIPv4 commented Apr 14, 2026

Description

In preparation for the change to how Node.js will be shipping releases, this removes the Active/Maintenance distinction for LTS release lines in the website's logic. This distinction was never shown to users; it was only used in internal logic and was always just reported as LTS to the user viewing the site.

Also, I've updated the version dropdown on the downloads page to make use of badges to make it clearer what status a given release has, as during the conversation around this change, it was flagged that it is odd we show EoL releases there and it isn't super obvious that they're EoL.

Before After
image image

Validation

All release lines continue to report their correct statuses and dates on the site.

Related Issues

I think we can say that this finally closes #8277.

Check List

  • I have read the Contributing Guidelines and made commit messages that follow the guideline.
  • I have run pnpm format to ensure the code follows the style guide.
  • I have run pnpm test to check if all tests are passing.
  • I have run pnpm build to check if the website builds without errors.
  • I've covered new added functionality with unit tests if necessary.

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 14, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
nodejs-org Ready Ready Preview Apr 16, 2026 0:11am

Request Review

@github-actions
Copy link
Copy Markdown
Contributor

👋 Codeowner Review Request

The following codeowners have been identified for the changed files:

Team reviewers: @nodejs/nodejs-website

Please review the changes when you have a chance. Thank you! 🙏

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 14, 2026

Codecov Report

❌ Patch coverage is 75.00000% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 73.90%. Comparing base (6096558) to head (7882a0c).
⚠️ Report is 3 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
packages/ui-components/src/Common/Select/index.tsx 45.00% 11 Missing ⚠️
apps/site/scripts/orama-search/get-documents.mjs 66.66% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8817      +/-   ##
==========================================
- Coverage   74.27%   73.90%   -0.38%     
==========================================
  Files         104      105       +1     
  Lines        8849     8889      +40     
  Branches      328      326       -2     
==========================================
- Hits         6573     6569       -4     
- Misses       2274     2319      +45     
+ Partials        2        1       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Comment thread apps/site/types/releases.ts Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 14, 2026

📦 Build Size Comparison

Summary

Metric Value
Old Total Size 3.51 MB
New Total Size 3.53 MB
Delta 28.66 KB (+0.80%)

Changes

➕ Added Assets (8)
Name Size
.next/static/chunks/63450f720af1e9b2.js 41.61 KB
.next/static/chunks/e583423f7c5af8df.js 197.80 KB
.next/static/chunks/faccbf520c4f877e.js 135.99 KB
.next/static/chunks/9f2217484c2728b3.js 27.46 KB
.next/static/chunks/0f864c1755afa2c5.js 28.31 KB
.next/static/chunks/66f9cbadad6129f6.js 562.87 KB
.next/static/chunks/47137ba604018b49.js 28.31 KB
.next/static/chunks/8546ab23612cb72d.js 562.87 KB
➖ Removed Assets (7)
Name Size
.next/static/chunks/ac05bb22c744e060.js 41.54 KB
.next/static/chunks/9dab434912f2f9f2.js 197.80 KB
.next/static/chunks/f00ba91e24e49a6d.js 136.38 KB
.next/static/chunks/a6df9012f6831e3a.js 27.53 KB
.next/static/chunks/8270b8a9e582491b.js 28.31 KB
.next/static/chunks/a00343058254743b.js 562.50 KB
.next/static/chunks/d1007d913a8e7ac1.js 562.50 KB

@MattIPv4 MattIPv4 force-pushed the MattIPv4/remove-active-maintenance-lts branch from 51388a1 to 22069b7 Compare April 14, 2026 14:31
@MattIPv4 MattIPv4 marked this pull request as ready for review April 14, 2026 14:31
@MattIPv4 MattIPv4 requested a review from a team as a code owner April 14, 2026 14:31
Copilot AI review requested due to automatic review settings April 14, 2026 14:31
@cursor
Copy link
Copy Markdown

cursor bot commented Apr 14, 2026

PR Summary

Medium Risk
Touches release-status classification and the NodeRelease data shape used widely across downloads/UX and scripts, so incorrect mappings could mislabel versions or show wrong dates. UI badge additions are low risk, but rely on the new status enum and mapping being complete.

Overview
Simplifies release-line semantics across the site by collapsing Active LTS/Maintenance LTS/End-of-life (and Pending) into a single LTS status plus Current and EOL, updating NodeReleaseStatus, status ordering, and all call sites that filter/select releases (downloads, footer pills, alert box, Orama API-doc fetcher).

Updates generated release data to drop the old phase-date fields and instead compute status from latest.lts.isLts + the EOL date, while also exposing initialReleaseDate and latestReleaseDate; all affected tables/overviews now display these new fields.

Improves the downloads version dropdown by adding per-option status badges (backed by the new shared STATUS_KIND_MAP) and extends the shared Select/StatelessSelect components to render optional badges in both the trigger and list items.

Reviewed by Cursor Bugbot for commit 7882a0c. Bugbot is set up for automated code reviews on this repo. Configure here.

Copy link
Copy Markdown
Contributor

Copilot AI left a 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 updates the website’s release-status model to remove the internal “Active LTS” vs “Maintenance LTS” distinction, collapsing both into a single LTS status, and improves download UX by showing status badges in the version dropdown.

Changes:

  • Simplifies release status handling to Current | LTS | End-of-life, updating generators, types, and affected UI.
  • Adds optional per-item badges to the shared Select UI component and uses them in the downloads version dropdown.
  • Updates release-date display to use an initialDate field (earliest release) where “first released” is shown.

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/ui-components/src/Common/Select/index.tsx Adds optional badge support to select items and renders badges in dropdown + selected value.
packages/ui-components/src/Common/Select/index.module.css Adds badge styling for select items.
packages/ui-components/src/Common/Select/StatelessSelect/index.tsx Renders badges for stateless/no-script select variants (selected + menu items).
apps/site/util/download/constants.json Updates supported release statuses and status ordering to match the new LTS model.
apps/site/types/releases.ts Collapses NodeReleaseStatus union and replaces currentStart with initialDate on release source types.
apps/site/scripts/orama-search/get-documents.mjs Updates API docs indexing to target the “LTS” line rather than Active/Maintenance split.
apps/site/next-env.d.ts Updates the generated routes type import path.
apps/site/next-data/generators/releaseData.mjs Simplifies status computation and adds initialDate derived from earliest release in the line.
apps/site/next-data/generators/tests/releaseData.test.mjs Expands tests for simplified status logic and the new initialDate behavior.
apps/site/components/withReleaseAlertBox.tsx Updates alert handling to use the unified LTS status.
apps/site/components/withFooter.tsx Updates footer “Latest LTS” pill to use unified LTS.
apps/site/components/withDownloadSection.tsx Defaults download route selection to Current vs LTS instead of Active/Maintenance LTS array.
apps/site/components/Releases/ReleaseOverview/index.tsx Shows “first released” date via initialDate.
apps/site/components/Releases/PreviousReleasesTable/TableBody.tsx Updates badge-kind mapping and “first released” date to use LTS + initialDate.
apps/site/components/Downloads/Release/VersionDropdown.tsx Switches dropdown to show a badge per version status (LTS/Current/EoL) and updates routing logic.
Comments suppressed due to low confidence (1)

apps/site/components/withDownloadSection.tsx:46

  • With the new unified LTS status, WithNodeRelease status={initialRelease} will select the first LTS entry it finds, which may be the older maintenance LTS line rather than the latest LTS line (depending on releaseData ordering). If the download page should default to the latest LTS, please adjust the selection logic to explicitly choose the newest LTS (e.g. by major/releaseDate) instead of relying on array ordering.
  // Decides which initial release to use based on the current pathname
  const initialRelease = pathname.endsWith('/current') ? 'Current' : 'LTS';

  return (
    <WithNodeRelease status={initialRelease}>
      {({ release }) => (

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/site/scripts/orama-search/get-documents.mjs
Comment thread apps/site/components/withFooter.tsx
Comment thread packages/ui-components/src/Common/Select/index.module.css Outdated
Comment thread apps/site/components/Downloads/Release/VersionDropdown.tsx Outdated
Comment thread apps/site/next-data/generators/releaseData.mjs
Comment thread apps/site/components/Downloads/Release/VersionDropdown.tsx Outdated
Comment thread apps/site/next-data/generators/releaseData.mjs Outdated
Comment thread apps/site/types/releases.ts
Comment thread packages/ui-components/src/Common/Select/StatelessSelect/index.tsx
Comment thread packages/ui-components/src/Common/Select/index.tsx
Copy link
Copy Markdown
Member

@ovflowd ovflowd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SGTM! Left a few tiny comments and I just want @MattIPv4 to triple check the PR diff to see if he missed anything.

Comment thread apps/site/next-data/generators/releaseData.mjs
@MattIPv4 MattIPv4 force-pushed the MattIPv4/remove-active-maintenance-lts branch from cad58bd to 7882a0c Compare April 16, 2026 12:10
@MattIPv4 MattIPv4 added this pull request to the merge queue Apr 16, 2026
Merged via the queue into main with commit 5a6d7d2 Apr 16, 2026
15 checks passed
@MattIPv4 MattIPv4 deleted the MattIPv4/remove-active-maintenance-lts branch April 16, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Node 24.x not yet marked as LTS ("Krypton") in index.json (website lists v24.10.0 as Latest LTS)

5 participants