Skip to content
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

(Spike) Investigate what minimum supported versions we can bump frameworks to #14262

Closed
lforst opened this issue Nov 13, 2024 · 8 comments
Closed
Assignees
Milestone

Comments

@lforst
Copy link
Member

lforst commented Nov 13, 2024

JavaScript Framework Support Analysis

Candidate End of Support Frameworks

Framework Version Support Status Downloads Last 7 Days (latest version of given major)
Angular v14 Support ended Nov 2023 116,908
v15 Support ended May 2023 148,502
React v16 Support ended Aug 2022 2,454,449
v17 Support ended Jun 2023 3,526,854
Gatsby v2 Support ended Mar 2021 14,817
v3 Support ended Dec 2021 11,390
v4 Support ended May 2023 14,774
NestJS v8 Support ended Nov 2022 129,127
v9 Support ended Jun 2023 347,707
Node.js v14 (LTS) Support ended Apr 2023 3,696
v15 Support ended Jun 2022 852
v16 (LTS) Support ended Sep 2023 6,918
v17 Support ended Jun 2023 3,455
v19 Support ended Jun 2023
Remix v1 Support ended Feb 2024 1,935
Svelte v3 Support ended Jan 2024 149,404
Ember v3 Support ended Aug 2023 15,486
v4 Support ended May 2024 14,279
Vue v2 Maintenance Only 908,265

High Priority (Active Development & High Usage)

Framework Version Info Release Date Support Status Version Range
Angular v14 Jun 2022 Support ended Nov 2023 ">= 14.x <= 18.x"
v15 Nov 2022 Support ended May 2023
v16 May 2023 Support until Nov 2024
v17 Nov 2023 Still supported
Next.js v13 Oct 2022 Support until Oct 2024 "^13.2.0 || ^14.0 || ^15.0.0-rc.0"
v14 Dec 2023 Still supported
Nuxt v3.8+ Nov 2022 Still supported "^3.13.2"
React v16 Nov 2017 Support ended Aug 2022 "^16.14.0 || 17.x || 18.x || 19.x"
v17 Oct 2020 Support ended Jun 2023
v18 Mar 2022 Still supported
Vue v2 Sep 2016 Maintenance only "2.x || 3.x"
v3 Sep 2020 Still supported

Medium Priority (Stable but Lower Usage)

Framework Version Info Release Date Support Status Version Range
Astro v3 Aug 2023 Still supported ">=3.x || >=4.0.0-beta"
v4 Mar 2024 (Beta) Still supported
Gatsby v2 Sep 2018 Support ended Mar 2021 "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0"
v3 Mar 2021 Support ended Dec 2021
v4 Oct 2021 Support ended May 2023
v5 Oct 2022 Still supported
NestJS v8 Jun 2022 Support ended Nov 2022 "^8.0.0 || ^9.0.0 || ^10.0.0"
v9 Nov 2022 Support ended Jun 2023
v10 Jun 2023 Still supported
Node.js v14 (LTS) Apr 2020 Support ended Apr 2023 "^14.18.0"
v15 Oct 2020 Support ended Jun 2022
v16 (LTS) Apr 2021 Support ended Sep 2023
v17 Oct 2021 Support ended Jun 2023
v18 (LTS) Apr 2022 Active until Apr 2024, Security until Apr 2025
v19 Oct 2022 Support ended Jun 2023
v20 (LTS) Apr 2023 Active until Apr 2025, Security until Apr 2026
v21 Oct 2023 Active until Jun 2024
Remix v1 Nov 2021 Support ended Feb 2024 "1.x || 2.x"
v2 Feb 2024 Still supported
Svelte v3 Apr 2019 Support ended Jan 2024 "3.x || 4.x || 5.x"
v4 Jun 2023 Still supported
SvelteKit v1 Dec 2022 Still supported "1.x || 2.x"

Monitor & Evaluate

Framework Version Info Release Date Support Status Version Range
Bun v1 Sep 2023 Still supported latest
Cloudflare Workers - Sep 2017 Still supported ????
Deno v1 May 2020 Still supported ????
Solid v1 Jun 2021 Still supported "^1.8.4"
SolidStart v1 Dec 2022 Still supported "^1.0.0"
GCP Cloud Functions Gen1 Aug 2018 Still supported -
Gen2 Nov 2021 Still supported -

Consider Deprecating

Framework Version Info Release Date Support Status Version Range
Ember v4 Sep 2021 Still supported >=4
AWS Lambda Node.js 14 Apr 2020 Support ended Apr 2023 -

Version Usage Data Sources

  1. NPM Downloads Analysis
  • Use npm-stat.com for historical download data by version
  • NPM API endpoint: https://api.npmjs.org/versions/{package-name}
  • Tools like npm-api can programmatically fetch version distributions
  • Example query: https://api.npmjs.org/downloads/point/last-month/@angular/core
  1. GitHub Repository Data
  • GitHub API to analyze package.json files
  • Tools like libraries.io track dependency versions
  • Repository search for version tags/releases
  • Dependabot alerts by version

Notes:

  • Versions based on current LTS/stable releases
  • Priority influenced by npm downloads, GitHub stars, enterprise adoption
  • Consider security updates and EOL dates when planning support
@mydea
Copy link
Member

mydea commented Nov 18, 2024

@chargome do you know, is there any cost for us in supporting Nest.js v8/v9? It does not seem as if we have any special handling/code for this, but wanting to make sure.

For Ember, we do not support v3 anyhow, we support v4+, which seems fine to me.

IMHO we may consider dropping Remix v1 support - scanning npm download numbers, v1 seems to be pretty small there, and we do have some overhead for it in test matrix support etc.

@chargome
Copy link
Member

@mydea no special handling there for any version, just for https://github.com/nestjs/event-emitter/ where we only support >=2.0.0 (v1 has no support for nestjs v10)

@smeubank
Copy link
Member

smeubank commented Nov 20, 2024

definition of drop support: we no longer include in peerdependencies, we do not have automated tests, we do not provide direct support for GH etc, but the SDK may continue to work unless there are breaking API changes which break support for a given framework

criterion considered: do the respective framework maintainer continue support and are there significant download numbers on npm. We can also consider internal Sentry usage stats. Sub 6 digit download stats are a good inidcator

Based on info from the top table. This is the list I'd recommend to drop support working with the assumption that maintaining each major version is equally complex:

  • Gatsby 2 & 3
  • Remix 1 (we could consider but it is still very popular relative to their latest major v2)

Node version support is another topic. #14256

There is not a ton of precedence for dropping framework versions support in the past majors. Assumption is that most of the maintainer complexity comes from test suites

@lforst
Copy link
Member Author

lforst commented Nov 20, 2024

Assumption is that most of the maintainer complexity comes from test suites

That is one part. A bigger part is that we need to sometimes have APIs for old versions, or hacky workarounds to support old versions. Sometimes we're even completely blocked by older versions when trying to support newer features.

@smeubank
Copy link
Member

sometimes have APIs for old versions, or hacky workarounds to support old versions. Sometimes we're even completely blocked by older versions

any way to identify such problem majors? Cause as is my suggestion is more like pruning the hedges where it's obvious they aren't that popular any more, we could consider others more if they're problems

@lforst
Copy link
Member Author

lforst commented Nov 21, 2024

Because of #14328 (comment) I would bump minimum TanStack router support to something like 1.64.0

@lforst
Copy link
Member Author

lforst commented Nov 25, 2024

Summing up, we'll drop

  • Remix 1
  • TanStack Router pre 1.64.0
  • Limit ember version support to 4 via peer deps (we haven't done that yet)
  • SvelteKit 1

@lforst lforst closed this as completed Nov 25, 2024
@s1gr1d
Copy link
Member

s1gr1d commented Dec 30, 2024

About the proposed minimum version ^3.13.2 for Nuxt. Just wondering what this is based on 🤔

Currently it's 3.7.0 as this adds the possibility for 'hidden' source maps. If we don't want users to add version overrides in their package.json, a good minimum version would be ^3.14.0. It's a pretty new version (published 2 months ago), but usage is fairly high and it makes more sense than 3.13.2 :)

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

No branches or pull requests

5 participants