Skip to content

chore: remove Active/Maintenance LTS distinction#8817

Open
MattIPv4 wants to merge 3 commits intomainfrom
MattIPv4/remove-active-maintenance-lts
Open

chore: remove Active/Maintenance LTS distinction#8817
MattIPv4 wants to merge 3 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.

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 14, 2026 3:34pm

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 68.42105% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 73.88%. Comparing base (6096558) to head (d90307a).
✅ 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.88%   -0.40%     
==========================================
  Files         104      105       +1     
  Lines        8849     8883      +34     
  Branches      328      326       -2     
==========================================
- Hits         6573     6563      -10     
- Misses       2274     2319      +45     
+ Partials        2        1       -1     

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

@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.83 KB (+0.80%)

Changes

➕ Added Assets (7)
Name Size
.next/static/chunks/fd86c270269c3496.js 197.63 KB
.next/static/chunks/37754122ef1c1ce5.js 135.99 KB
.next/static/chunks/1ddcd1346b0c05d2.js 27.47 KB
.next/static/chunks/0f864c1755afa2c5.js 28.31 KB
.next/static/chunks/c37c2473db4d4e49.js 562.99 KB
.next/static/chunks/47137ba604018b49.js 28.31 KB
.next/static/chunks/e8268aa32c23e940.js 562.99 KB
➖ Removed Assets (6)
Name Size
.next/static/chunks/adaf256cf6b4fdbd.js 197.63 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
Release status classification and derived date fields are simplified across generators and UI, which could affect which release line is treated as LTS/Current and what dates are displayed. Changes are straightforward but touch multiple user-facing download/release surfaces and the doc-indexing script.

Overview
Simplifies release statuses by collapsing Active LTS/Maintenance LTS (and Pending) into a single LTS status throughout the site, updating NodeReleaseStatus, filtering/order constants, and all status-based lookups (download section, footer pill, alert box, Orama docs fetch).

Adjusts generated release metadata so releaseData now derives status only from eol and latest.lts.isLts, removes the isLts flag and phase date fields, and introduces initialDate (earliest minor release date) used in release tables/overview as “first released”.

Improves downloads version picker UX by extending the shared Select/StatelessSelect components to support per-option badges and updating the download VersionDropdown to show LTS/Current/EoL badges next to versions.

Reviewed by Cursor Bugbot for commit d90307a. 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.

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)

3 participants