Download Latest Version Play 3.0.9 source code.tar.gz (3.5 MB)
Email in envelope

Get an email when there's a new version of Play Framework

Home / 2.9.9
Name Modified Size InfoDownloads / Week
Parent folder
Play 2.9.9 source code.tar.gz 2025-09-11 3.5 MB
Play 2.9.9 source code.zip 2025-09-11 5.3 MB
README.md 2025-09-11 7.8 kB
Totals: 3 Items   8.8 MB 0

The Play Team is happy to announce the release of Play 2.9.9! 🎉

:green_book: About this Release

This patch release upgrades dependencies, fixes minor bugs, comes with support for Java 25 and improves compatibility with Scala 3. We recommend upgrading as soon as possible.

If you're considering upgrading to Play 2.9, please check the Play 2.9 release announcement for highlights and further details on how to migrate. Many projects have already smoothly upgraded to Play 2.9.

Official support for Java 25

Starting with this release, Play officially supports Java 25. Since all tests passed when running on the latest Java 25 release candidate, we are comfortable declaring Java 25 officially supported by Play.

Noteworthy Pull Requests

  • [#13500] [2.9.x] Declare Java 25 LTS officially supported (backport [#13499]) by @mkurz
  • [#13461] [2.9.x] fix routes cache directory (backport [#13443]) by @xuwei-k
  • [#13422] [2.9.x] Generate and set the request-id as early as possible (backport [#13409]) by @mkurz
  • [#13418] [2.9.x] A call to onClientError from the server backend was missing the HttpErrorInfo attr (backport [#13416]) by @mkurz
  • [#13414] [2.9.x] Make sure Java's Session and Flash always exists even if empty req attrs (backport [#13413]) by @mkurz
  • [#13411] [2.9.x] Make sure Cookies, Session, Flash always exists even if empty (backport [#13407]) by @mkurz
  • [#13517] [2.9.x] Netty 4.1.127.Final by @mkurz

Full Changelog

Following pull requests got merged for this release:

  • [#13536] [2.9.x] Nicer warning for unsupported Java versions by @mkurz
  • [#13530] [2.9.x] Lightbend config 1.4.5 by @mkurz
  • [#13528] [2.9.x] play-ws 2.2.12 by @mkurz
  • [#13526] [2.9.x] netty-reactive-streams 2.0.15 by @mkurz
  • [#13517] [2.9.x] Netty 4.1.127.Final by @mkurz
  • [#13515] [2.9.x] Patch updates by @scala-steward
  • [#13504] [2.9.x] netty-codec-http, netty-handler, ... 4.1.126.Final (was 4.1.124.Final) by @scala-steward
  • [#13500] [2.9.x] Declare Java 25 LTS officially supported (backport [#13499]) by @mkurz
  • [#13494] [2.9.x] Upgrade byte-buddy for Java 25 support (backport [#13493]) by @mkurz
  • [#13491] [2.9.x] hibernate-core 6.6.28.Final (was 6.6.27.Final) by @scala-steward
  • [#13487] [2.9.x] Fix deprecated notice in WSResponse#getBodyAsStream (backport [#13484]) by @Enet4
  • [#13485] [2.9.x] Patch updates by @scala-steward
  • [#13480] [2.9.x] Patch updates by @scala-steward
  • [#13479] [2.9.x] hibernate-core 6.6.27.Final (was 6.6.26.Final) by @scala-steward
  • [#13463] [2.9.x] fix "match may not be exhaustive" warning (backport [#13441]) by @xuwei-k
  • [#13461] [2.9.x] fix routes cache directory (backport [#13443]) by @xuwei-k
  • [#13459] [2.9.x] Patch updates by @scala-steward
  • [#13447] [2.9.x] Bump actions/checkout from 4 to 5 by @dependabot[bot]
  • [#13449] [2.9.x] Patch updates by @scala-steward
  • [#13452] [2.9.x] netty-codec-http, netty-handler, ... 4.1.124.Final (was 4.1.123.Final) by @scala-steward
  • [#13454] [2.9.x] hibernate-core 6.6.26.Final (was 6.6.23.Final) by @scala-steward
  • [#13438] [2.9.x] Patch updates by @scala-steward
  • [#13433] [2.9.x] hibernate-core 6.6.23.Final (was 6.6.22.Final) by @scala-steward
  • [#13428] [2.9.x] hibernate-core 6.6.22.Final (was 6.6.21.Final) by @scala-steward
  • [#13426] [2.9.x] commons-io 2.20.0 (was 2.19.0) by @scala-steward
  • [#13424] [2.9.x] Test: Allow accessing empty cookies, session and flash from an error handler by @mkurz
  • [#13422] [2.9.x] Generate and set the request-id as early as possible (backport [#13409]) by @mkurz
  • [#13420] [2.9.x] netty-codec-http, netty-handler, ... 4.1.123.Final (was 4.1.122.Final) by @scala-steward
  • [#13418] [2.9.x] A call to onClientError from the server backend was missing the HttpErrorInfo attr (backport [#13416]) by @mkurz
  • [#13414] [2.9.x] Make sure Java's Session and Flash always exists even if empty req attrs (backport [#13413]) by @mkurz
  • [#13411] [2.9.x] Make sure Cookies, Session, Flash always exists even if empty (backport [#13407]) by @mkurz
  • [#13403] [2.9.x] Patch updates by @scala-steward
  • [#13402] [2.9.x] hibernate-core 6.6.21.Final (was 6.6.20.Final) by @scala-steward
  • [#13399] [2.9.x] Patch updates by @scala-steward
  • [#13390] [2.9.x] Patch updates by @scala-steward
  • [#13389] [2.9.x] hibernate-core 6.6.20.Final (was 6.6.19.Final) by @scala-steward
  • [#13387] [2.9.x] Scala stewards should always updates, not just monthly (backport [#13386]) by @mkurz
  • [#13384] [2.9.x] Pin okhttp in scala steward by @mkurz
  • [#13381] [2.9.x] Patch updates by @mkurz
  • [#13361] [2.9.x] oss.sonatype.org is dead (backport [#13360]) by @mkurz

For more details see the full list of changes and the 2.9.9 milestone.

:heart: Thanks to our premium sponsors!

If you find this OSS project useful for work, please consider asking your company to support it by becoming a sponsor. You can also individually sponsor the project by becoming a backer.

:bow: Thanks to our contributors

Finally, thanks to the community for their help with detailed bug reports, discussions about new features and pull request reviews. This project is only possible due to the help we had from amazing contributors. Special thanks to all code contributors who helped with this particular release (they are listed below)!

Source: README.md, updated 2025-09-11