Skip to content

[Meta]: Current blockers for a v30 release? #15556

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

Open
4 tasks
spanishpear opened this issue Mar 31, 2025 · 53 comments
Open
4 tasks

[Meta]: Current blockers for a v30 release? #15556

spanishpear opened this issue Mar 31, 2025 · 53 comments

Comments

@spanishpear
Copy link

spanishpear commented Mar 31, 2025

🚀 Feature Proposal

Note

TLDR: I did some web + issue searching, and could not easily find information re: a jest roadmap, or a v30 release.
This issue seeks clarification on what is blocking or desired for a stable v30 release ❤

Hey all! Thanks for all the work on this project ❤

The last stable release for Jest (29.7) was Sep 2023. ~18 months ago.
It's been some time since v30 was initially in alpha and I was very excited to see @SimenB publish a new alpha7 in Jan 💯 🥳. There has also been a flurry of upstream nodejs improvements over the last few months, which are super exciting to see some of the collaboration in that area!

Given this, I wonder if there was a list of issues/blockers for a stable release of v30? I.e 1

This would help have some more visibility and (hopefully?) some contributions as well. 🙏
I'm also curious to understand more of the current and future state of the project, but I will create a separate issue for that.

Thank you!

P.S - I have raised this as a feature, as the "questions" template lead to a community discord server, and I am not raising a bug. I suppose I "am" asking for a feature of a new v30 release 😅
Please let me know if there is a more appropriate template to use here 🙏

Motivation

I would like a v30 release, lots of nice fixes!

Example

No response

Pitch

N/A

Footnotes

  1. Please note the examples here are purely examples from briefly looking at open issues/PRs, and I have no requirement/need for those specifically ❤, just trying to kickstart the convo!

  2. I could not find any contributions label, good first issue seems mostly stale

  3. Though, not sure if node-source-map-support is maintained/accepting PR's.

@MillerSvt
Copy link
Contributor

@SimenB Can you share your plans for the release date of the new version? Or is it a trade secret?)

@SimenB
Copy link
Member

SimenB commented Apr 7, 2025

Hey!

Nothing secret 😀 I just haven't found the time to write a migration guide (I really should have done that as breaking changes were landing) or writing the blog post. I think code wise it's good to go.

There is a milestone (https://github.com/jestjs/jest/milestone/15), but we should probably just get the release out the door

@Solonotix
Copy link

I take that to mean Jest is still actively maintained? I was just coming by to check if it had been discontinued, because it seemed weird for Jest to have gone so long without an update, while React has made two huge changes in seemingly the same span of time. Granted, maybe that's related to why it hasn't had a release in that time.

@MillerSvt
Copy link
Contributor

MillerSvt commented Apr 7, 2025

@SimenB Can you release my feature #15433 (and #15482) for v29.8.0? I need that, and it isn't a breaking change.

@khallmark
Copy link

khallmark commented Apr 9, 2025

@SimenB What do you need written exactly? I'll do it right now if we can ship Jest 30.

I do mean that literally.

Copy link

github-actions bot commented May 9, 2025

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 30 days.

@github-actions github-actions bot added the Stale label May 9, 2025
@MillerSvt
Copy link
Contributor

Not stale

@github-actions github-actions bot removed the Stale label May 9, 2025
@khallmark
Copy link

@SimenB yo what do we need in order to ship a new version?

@khallmark
Copy link

@cpojer @orta @rickhanlonii Are any of you watching this project anymore?

@MillerSvt
Copy link
Contributor

@SimenB @rickhanlonii @orta @cpojer Could you consider adding more people to help maintain this project? If you're unable to manage it alone, it appears the project might struggle to survive without additional support.

@cpojer
Copy link
Member

cpojer commented May 12, 2025

It's open source, why don't you contribute?

@MillerSvt
Copy link
Contributor

MillerSvt commented May 12, 2025

It's open source, why don't you contribute?

I've got no response for issues and pull requests for a while. Also I can't make release, etc. I understand that you can have no time for maintain, but I want to hear some feedback about issues at least. In this issue we ask what blockers for 30 release? We want to help with this blockers. No response.

@khallmark
Copy link

@cpojer There have been 411 commits from 78 contributors in the 615 days since the last release on 09/12/2023. What good are contributions that never ship?

I have already offered my services on 04/08/2025 and 05/10/2025. I am again offering to do the remaining tasks and open the PR. Unfortunately, I need someone with permissions to merge pull requests and ship new versions of Jest. If I do the work, is someone available to review it and act on it? That remains unclear.

I understand that life can impact the ability to contribute to open source; I'm not an unreasonable person. That's why I'm trying to help.

What needs to be done in order to release Jest 30?

@khallmark
Copy link

khallmark commented May 18, 2025

Just to add, thank you to all the maintainers for all the work you've done to get us to this point. It's really incredible work. I admit I'm frustrated but it's more than that: open source projects that don't release become stale and die. I don't want to see that happen. I want to help. I'm willing to get on a short call, even 15 minutes, or otherwise chat about it. I'll take notes and be proactive. I know how hard it can be to articulate requirements to a third party. I am open to whatever is easiest and most expedient for the team. Just help me help you get this out. What's the best way for me to support this release?

@cpojer
Copy link
Member

cpojer commented May 21, 2025

Alright everyone, let's get Jest 30 ready. I haven't actively contributed to Jest for many years, so I'll need your help to prioritize PRs still to merge, and to figure out what else needs to be done.

@MillerSvt
Copy link
Contributor

Huh. Many pull requests contain only spelling corrections or documentation improvements. Others propose minor enhancements. I believe we should merge them all.

@cpojer
Copy link
Member

cpojer commented May 22, 2025

Can you make a list?

@MillerSvt
Copy link
Contributor

MillerSvt commented May 22, 2025

I've arranged the list of all PRs in a way that I believe will facilitate the merging process. It is easy to merge "Spelling corrections," "Documentation improvements," and "Tests". Additionally, I suggest to merge all Breaking PRs, as they otherwise must wait until the 31st release. You can handle other PRs at your discretion (now or after release).

I can mark these PRs with corresponding labels, if you give me rights to do it ))

Spelling corrections

Documentation improvements

Tests

Update dependencies

Bugfixes

Minor improvements

Major improvements

@cpojer
Copy link
Member

cpojer commented May 22, 2025

Awesome, thanks for doing this. Is there a way to change your comment into a todo list that automatically crosses off PRs that are merged/closed?

@MillerSvt
Copy link
Contributor

Fixed

@cpojer
Copy link
Member

cpojer commented May 22, 2025

Ok, I merged everything that was possible to merge from your list. I removed a few that I don't think matter for Jest 30. I closed a bunch. I asked the authors of every outdated PR to be rebased, or asked about the status of the PR. If people don't reply, it's on all of you to help get the PRs you want into a good shape. If you can't push directly to an existing PR, open a new one and ping me on it with a ref to the old one, and we'll carry over.

Once Simen explains the current release process, we'll tag a Jest 30 RC.

Are you happy now?

@MillerSvt
Copy link
Contributor

Are you happy now?

Much more. Thank you!

I can prepare migration guide soon, if needed.

@cpojer
Copy link
Member

cpojer commented May 22, 2025

We'll need a blog post and migration guide, would be awesome if you could help with those.

@cpojer
Copy link
Member

cpojer commented May 22, 2025

I cleaned up/pinged/closed all other PRs as well.

@Smrtnyk
Copy link

Smrtnyk commented May 22, 2025

any plans to revive this as well?
#13461

@cpojer
Copy link
Member

cpojer commented May 23, 2025

Ok, for a release I'm missing access to:

  • jest-haste-map
  • diff-sequences
  • jest-watcher
  • jest-get-type
  • jest-repl

Which is ironic, since I created many of those packages 10 years ago. I pinged OpenJS for three of them, and Facebook folks for the other two. Until I get access, we are blocked on a beta release.

@cpojer
Copy link
Member

cpojer commented May 24, 2025

@SimenB is back and gave me access. We'll do a beta release after the weekend.

MillerSvt added a commit to MillerSvt/jest that referenced this issue May 25, 2025
MillerSvt added a commit to MillerSvt/jest that referenced this issue May 25, 2025
MillerSvt added a commit to MillerSvt/jest that referenced this issue May 25, 2025
MillerSvt added a commit to MillerSvt/jest that referenced this issue May 25, 2025
@cpojer
Copy link
Member

cpojer commented May 27, 2025

Alright, the first Jest 30 beta was released on npm. Please give Jest 30.0.0-beta.3 a try. I want to move fast on this, and release the stable version within the next week or so since it's been too long.

Note, there was an issue while publishing some packages since a bot went a bit crazy and kicked me off some packages again. I moved those to the @jest org. That's why beta.1 is only half-published, and then beta.2 was a clear user error where I published all packages, but didn't realize some of those would depend on the not-published beta.1 versions. Apologies, baby steps as I get back into the game.

I tried beta 3 and it was a smooth upgrade from one of the alphas in an ESM context: nkzw-tech/fbtee@1757c6b

Thanks everyone for your hard work to help get this (re)started, especially @MillerSvt.

@cpojer
Copy link
Member

cpojer commented May 27, 2025

@MillerSvt The major blocker for a Jest 30 release is now the blog post. Would you be able to put together a draft that highlights all the changes? I assume you can pull from the migration guide quite a bit. Don't worry about the intro/outro, I'd like to co-author and add those pieces in once we have the structure.

I put together a new TODO list for the Jest 30 release. There are a few PRs from above that I don't think we should block a release on. The PRs I mentioned below are generally in an outdated state, so if anyone wants to volunteer to rebase them and open a new PR to get those merged in quickly, please help!

Blockers

  • Blog post

Not Blockers but should go into Jest 30 imho

Nice to haves that I wouldn't block a release on:

@G-Rath
Copy link
Contributor

G-Rath commented May 27, 2025

@SimenB @cpojer just if you have a moment, the release CI for eslint-plugin-jest is currently failing as we recently made merge queues a requirement which semantic-release doesn't use - this was an attempt to get renovate to stop merging PRs that were failing our test suite, but it didn't happen that often so I think it's fine to just go back to not use merge queues.

I've had a look over the changes for v30 and I don't think there's anything we actually need to ship on the linting side (notably there doesn't seem to be any deprecated functions) though there are a couple of docs that would be nice to have updated, so I don't think this is critical but if you have a moment to make the change that'd let me continue maintaining that

(and also let me know if there is anything you'd like done on the plugin related to v30 - I can make time for that 🙂)

@cpojer
Copy link
Member

cpojer commented May 27, 2025

I'm sorry, I have absolutely no idea what this is about. What do you need from me?

@G-Rath
Copy link
Contributor

G-Rath commented May 27, 2025

I thought that you might have still had access to eslint-plugin-jest, though it looks like you might not anymore.

In terms of actions: there'll be either a branch protection rule or a branch ruleset configured for main that requires a merge queue to be used for landing changes, and we need to uncheck that requirement.

I have permission to manage issues and land pull requests, but not access to the branch protection stuff so I can't do this myself - if you could check if you can access those and make the change if so, or if you could let @SimenB know when you next chat to him, that'd be appreciated; but like I said this isn't critical to Jest v30 so feel free to leave it for now if you'd prefer

@cpojer
Copy link
Member

cpojer commented May 27, 2025

Ah yeah, nobody trusts me so I don't have any access. I hate merge queues too, and bypass them on Jest as much as possible. @SimenB could you give me admin rights on the Jest org on GitHub?

@mrazauskas
Copy link
Contributor

mrazauskas commented May 27, 2025

Alright, the first Jest 30 beta was released on npm. Please give Jest 30.0.0-beta.3 a try.

Hm.. It got tagged as latest, but I guess that should still be next. Or?

Image

Also note that the install size of [email protected] is install size while the latest beta became: install size. Which is 4.1 MB more. (Seems like the change happened in early alphas, so probably unavoidable.)

@cpojer
Copy link
Member

cpojer commented May 27, 2025

Man, this lerna lite publish thing is something! Thanks for pointing it out. I fixed it for jest and @jest/core, but not all the other packages because I'd have to manually input my npm 2fa code twice for each package to change the tags 😭

Image

As for the size increase, would you be able to help troubleshoot what might have caused it?

@orta
Copy link
Member

orta commented May 27, 2025

Nice work everyone so far!

@cpojer
Copy link
Member

cpojer commented May 27, 2025

30.0.0-beta.4 was just published with #15461. Seems important enough to make a beta release for it.

@MillerSvt
Copy link
Contributor

Would you be able to put together a draft that highlights all the changes?

Yep. I think GPT can help me :) I'll do it on this week.

@cpojer
Copy link
Member

cpojer commented May 27, 2025

@G-Rath I got access to jest-community (I don't think I was ever involved before, actually!) and disabled the merge queue for the ESLint plugin.

@khallmark
Copy link

Oh my gosh this is amazing progress!

I am absolutely thrilled. I can't merge, but I'll jump in tonight to at least review PR! This progress is really inspiring. I really appreciate how everyone banded together to get this handled.

@khallmark
Copy link

@Smrtnyk I'll see what I can do about rebasing that babel-plugin-istanbul PR. That project has also gotten stale and it has some outdated deps that cause problems.

@G-Rath
Copy link
Contributor

G-Rath commented May 27, 2025

@cpojer awesome, thanks! unfortunately releases are still failing as the main branch is protected - would you be able to untick "Restrict updates" in the protection rules as well?

@cpojer
Copy link
Member

cpojer commented May 27, 2025

I disabled "Require status checks to pass before merging" as the other option wasn't there. For future conversation about maintaining the ESLint plugin, please open an issue on that repo and tag me. Let's focus the conversation here on the Jest 30 release.

@cpojer
Copy link
Member

cpojer commented May 27, 2025

Jest 30 should be faster and consume significantly less memory. I'm looking for real world examples where Jest 30 improved performance and reduced memory. Is anyone able to test that and provide some data for the blog post?

@JounQin
Copy link
Contributor

JounQin commented May 28, 2025

@cpojer We're using Jest 30 at https://github.com/un-ts/eslint-plugin-import-x/blob/3bc48fcfab4bf5ddbabb4508cf5e63b8d8aaee04/package.json#L142

@lencioni
Copy link
Contributor

@cpojer I'd be happy to provide some performance data from our tests at Happo once I am able to get them working with Jest 30. In my update attempt from latest v29 I ran into a few hurdles that I didn't see mentioned in the migration guide that I have yet to resolve. All of these things are failing in CI but not locally for me, and I'm not entirely sure why yet, but it has made debugging extra tricky. I'll continue digging into these as well.

  • TypeError: AbortSignal.timeout is not a function -- I'm a little confused by this, since I think I am running these tests on Node 22 which has AbortSignal.timeout, and I am also not changing my Node version when making this update. Maybe this could be a side-effect of "Jest 30 now waits an extra event loop turn to confirm that a promise rejection remains unhandled before failing a test." ?
  • TypeError: Class constructor AsyncLocalStorage cannot be invoked without 'new' happens in a few tests. There's no other information, and no stack trace for this one. I don't reference AsyncLocalStorage in my repo, so I assume this is coming in from some dependency we are using, possibly next.js (based on a quick grep of my node_modules).
  • A couple of tests that run pretty quickly locally (less than 100ms) are timing out after 10 seconds in CI.
  • I have one test file that fails all of its tests but only logs the test descriptions repeatedly and no other information. After this, it logs Test suite failed to run Expected an Error, but "" was thrown a number of times, but I don't see where a string is being thrown.
  • Some of my test shards that typically take 2-4 minutes seem to be getting stuck and running forever until they time out at about 16 minutes. All of these now also have the warning that "Jest did not exit one second after the test run has completed." and to run with --detectOpenHandles.

Is this the best place to discuss these types of things or would it work better for separate issues or something else? I'm happy to move this wherever works best for you!

@MillerSvt
Copy link
Contributor

I think it would be better to create separate issue. Please note your exact version of Node.js on local and inside CI.

@aem
Copy link

aem commented May 28, 2025

Jest 30 should be faster and consume significantly less memory. I'm looking for real world examples where Jest 30 improved performance and reduced memory. Is anyone able to test that and provide some data for the blog post?

This is from a TypeScript monolith, using @testing-library/react for client tests and our server tests are connecting to a local PostgreSQL server as well as the Firebase storage, firestore, and auth emulators (hence the more resource-intensive numbers). The server tests are all run with --runInBand to avoid database contention issues during these tests. All of this is on [email protected]:

Suite Jest 29 Jest 30
Server tests (232 suites, 3126 tests) 1350s; 7.8GB max heap 850s; 1.8GB max heap
Client tests (101 suites, 860 tests) 49s; 1GB max heap 44s; 0.8GB max heap

@JounQin
Copy link
Contributor

JounQin commented May 28, 2025

@cpojer If we can integrate https://pkg.pr.new to test out #15619 immediately, that's would be greater. I'm still working on some false positives though.

@cpojer
Copy link
Member

cpojer commented May 28, 2025

@lencioni damn, so good to see you! Thanks for giving it a try. Individual issues are best, ideally with repro, but I understand that might be hard.

@aem that is awesome, what a huge improvement!

@JounQin Open to PRs to add pkr.pr.new and do releases more often.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests