Skip to content

chore: remove Active/Maintenance LTS distinction#8817

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

chore: remove Active/Maintenance LTS distinction#8817
MattIPv4 wants to merge 4 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 10:11pm

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 74.46809% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 73.90%. Comparing base (6096558) to head (8b732c1).
✅ 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.

@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.53 KB (+0.79%)

Changes

➕ Added Assets (8)
Name Size
.next/static/chunks/63450f720af1e9b2.js 41.61 KB
.next/static/chunks/36ad669b04cbe3f8.js 197.63 KB
.next/static/chunks/8f098d3e800b87c3.js 135.98 KB
.next/static/chunks/9f2217484c2728b3.js 27.46 KB
.next/static/chunks/0f864c1755afa2c5.js 28.31 KB
.next/static/chunks/05ccc6da03e54f9a.js 562.81 KB
.next/static/chunks/47137ba604018b49.js 28.31 KB
.next/static/chunks/a4fd6cd47d68e1b2.js 562.81 KB
➖ Removed Assets (7)
Name Size
.next/static/chunks/ac05bb22c744e060.js 41.54 KB
.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
Moderate risk because it changes release-status classification and related routing/UI logic across downloads, alerts, and data generation; mistakes could mislabel releases or pick the wrong “latest LTS” for docs/search.

Overview
Simplifies release-status handling by removing the Active/Maintenance LTS distinction and standardizing statuses to Current/LTS/EOL across types, constants, download config, and UI components.

Updates release data generation to derive status from EOL date + latest.lts.isLts, drops phase date fields/isLts, and introduces initialDate (earliest release date) which replaces currentStart in release tables/overview; unit tests were expanded to cover the new status rules and date selection.

Improves the downloads version dropdown (and shared Select components) to display status badges via a new STATUS_KIND_MAP, and updates related logic (alerts, footer, EOL table, API-doc fetch) to use the new LTS/EOL statuses.

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