Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: playframework/playframework

Play 3.0.10

23 Dec 17:28
3.0.10
781cd7e

Choose a tag to compare

We are pleased to announce the release of Play 3.0.10! πŸŽ‰

πŸ“— About this Release

This release fixes several bugs and addresses reported security vulnerabilities (CVEs) and - as always - updates dependencies. We strongly recommend upgrading at your earliest convenience.

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

Noteworthy Pull Request

  • playframework/play-json#1228 [3.0.x] Avoid running out of memory when parsing heavily nested arrays or objects by @mkurz
    We now limit the maximum allowed nesting depth of JSON structures (arrays, objects, or a mix of both) to 1000.
    This limit can be adjusted using the system property play.json.parser.maxNestingDepth.
    We assume a depth of 1000 should be more than sufficient for virtually all real-world use cases.
    This change helps prevent both potential OutOfMemoryErrors and StackOverflowErrors.
    The latter, however, is not a concern for Play JSON, since it already uses a @tailrec-optimized parsing method.
    As a result, Play JSON is not affected by GHSA-h46c-h94j-95f3, which specifically addresses StackOverflowError risks.
    This improvement is simply an additional safety measure.
  • #13684 [3.0.x] Bump to lz4-java 1.10.1 to fix CVE-2025-66566 and CVE‐2025‐12183 by @mkurz
  • #13706 [3.0.x] Netty 4.1.130.Final to fix CVE-2025-67735 by @mkurz
  • Upgrade ch.qos.logback:logback-core to fix CVE-2025-11226 (see "Patch updates" below)

Following pull requests got merged for this release:

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

❀️ 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.

πŸ™‡ 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)!

Play 2.9.10

23 Dec 17:27
2.9.10
ce58a65

Choose a tag to compare

We are pleased to announce the release of Play 2.9.10! πŸŽ‰

πŸ“— About this Release

This release fixes several bugs and addresses reported security vulnerabilities (CVEs) and - as always - updates dependencies. We strongly recommend upgrading at your earliest convenience.

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.

Noteworthy Pull Request

  • playframework/play-json#1226 Avoid running out of memory when parsing heavily nested arrays or objects by @mkurz
    We now limit the maximum allowed nesting depth of JSON structures (arrays, objects, or a mix of both) to 1000.
    This limit can be adjusted using the system property play.json.parser.maxNestingDepth.
    We assume a depth of 1000 should be more than sufficient for virtually all real-world use cases.
    This change helps prevent both potential OutOfMemoryErrors and StackOverflowErrors.
    The latter, however, is not a concern for Play JSON, since it already uses a @tailrec-optimized parsing method.
    As a result, Play JSON is not affected by GHSA-h46c-h94j-95f3, which specifically addresses StackOverflowError risks.
    This improvement is simply an additional safety measure.
  • #13685 [2.9.x] Bump to lz4-java 1.10.1 to fix CVE-2025-66566 and CVE‐2025‐12183 by @mkurz
  • #13707 [2.9.x] Netty 4.1.130.Final (backport #13706) to fix CVE-2025-67735 by @mkurz
  • Upgrade ch.qos.logback:logback-core to fix CVE-2025-11226 (see "Patch updates" below)

Following pull requests got merged for this release:

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

❀️ 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.

πŸ™‡ 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)!

Play 3.0.9

11 Sep 14:13
3.0.9
ab35025

Choose a tag to compare

The Play Team is happy to announce the release of Play 3.0.9! πŸŽ‰

πŸ“— 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 3.0, please check the Play 3.0 release announcement for highlights and further details on how to migrate. Many projects have already smoothly upgraded to Play 3.0.

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

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

Full Changelog

Following pull requests got merged for this release:

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

❀️ 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.

πŸ™‡ 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)!

Play 2.9.9

11 Sep 14:13
2.9.9
fac590d

Choose a tag to compare

The Play Team is happy to announce the release of Play 2.9.9! πŸŽ‰

πŸ“— 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:

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

❀️ 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.

πŸ™‡ 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)!

Play 3.0.8

01 Jul 23:14
3.0.8
6a4473c

Choose a tag to compare

The Play Team is happy to announce the release of Play 3.0.8! πŸ₯³

πŸ“— About this Release

This release fixes several bugs and a CVE, improves Scala 3 support, and - as always - updates dependencies. We strongly recommend upgrading at your earliest convenience.

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

sbt 1.9.0 or newer is now required

Because of recent changes in how artifacts are published to Maven Central, older sbt versions can no longer retrieve Play's sbt plugins published starting July 1, 2025. If you're still using an older sbt release, you'll need to upgrade to sbt 1.9.0 or newer to continue fetching Play artifacts from Maven Central. Play 3.0.8 and newer will not work with earlier sbt versions. To be fair, when releasing Play 3.0, we already announced 1.9.0 as the minimum required sbt version, even though older versions may still have worked until now.

Scala 3 improvements

  • Twirl now supports using in it's templates, so you can define template parameters like:

    @(x: Int)(using y: Int)

    Thanks to @ajafri2001 for implementing this improvement πŸ™Œ:
    playframework/twirl#933 Prepend "using" at the callsite when definition site has implicit parameter

  • When using Play JSON, the JSON field ordering is now correctly preserved when compiling with Scala 3 - implemented by @xuwei-k:
    playframework/play-json#1177 fix field ordering Scala 3 writes macro

Noteworthy Pull Requests

Full Changelog

Following pull requests got merged for this release:

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

❀️ 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.

πŸ™‡ 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)!

Play 2.9.8

01 Jul 23:13
2.9.8
9d1bec8

Choose a tag to compare

The Play Team is happy to announce the release of Play 2.9.8! πŸ₯³

πŸ“— About this Release

This release fixes several bugs and a CVE, improves Scala 3 support, and - as always - updates dependencies. We strongly recommend upgrading at your earliest convenience.

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.

sbt 1.9.0 or newer is now required

Because of recent changes in how artifacts are published to Maven Central, older sbt versions can no longer retrieve Play's sbt plugins published starting July 1, 2025. If you're still using an older sbt release, you'll need to upgrade to sbt 1.9.0 or newer to continue fetching Play artifacts from Maven Central. Play 2.9.8 and newer will not work with earlier sbt versions. To be fair, when releasing Play 2.9, we already announced 1.9.0 as the minimum required sbt version, even though older versions may still have worked until now.

Scala 3 improvements

  • Twirl now supports using in it's templates, so you can define template parameters like:

    @(x: Int)(using y: Int)

    Thanks to @ajafri2001 for implementing this improvement πŸ™Œ:
    playframework/twirl#933 Prepend "using" at the callsite when definition site has implicit parameter

  • When using Play JSON, the JSON field ordering is now correctly preserved when compiling with Scala 3 - implemented by @xuwei-k:
    playframework/play-json#1177 fix field ordering Scala 3 writes macro

Noteworthy Pull Requests

Full Changelog

Following pull requests got merged for this release:

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

❀️ 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.

πŸ™‡ 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)!

Play 3.0.7

13 Mar 01:41
3.0.7
cf19f57

Choose a tag to compare

The Play Team is happy to announce the release of Play 3.0.7.

πŸ“— About this Release

This patch release primarily upgrades dependencies, fixes minor bugs, and improves compatibility with Scala 3. We recommend upgrading as soon as possible.

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

Noteworthy Pull Request

  • #13115 [3.0.x] Avoid error at shutdown if tmpdir is not writeable but was not used in the first place (backport #13039) by @gaeljw
  • #13112 [3.0.x] Module: Accept constructor with (com.typesafe.config.Config) (backport #13044) by @tsawada
  • #13005 [3.0.x] Change access modifier to package private for RoutingDsl.{Route,RouteParam} (backport #13003) by @WojciechMazur

Full Changelog

Following pull requests got merged for this release:

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

❀️ 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.

πŸ™‡ 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)!

Play 2.9.7

13 Mar 01:41
2.9.7
05b1321

Choose a tag to compare

The Play Team is happy to announce the release of Play 2.9.7.

πŸ“— About this Release

This patch release primarily upgrades dependencies, fixes minor bugs, 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.

Noteworthy Pull Request

  • #13116 [2.9.x] Avoid error at shutdown if tmpdir is not writeable but was not used in the first place (backport #13039) by @gaeljw
  • #13111 [2.9.x] Module: Accept constructor with (com.typesafe.config.Config) (backport #13044) by @tsawada
  • #13006 [2.9.x] Change access modifier to package private for RoutingDsl.{Route,RouteParam} (backport #13003) by @WojciechMazur

Full Changelog

Following pull requests got merged for this release:

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

❀️ 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.

πŸ™‡ 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)!

Play 3.0.6

29 Nov 09:56
3.0.6
2e56aff

Choose a tag to compare

The Play Team is pleased to announce the release of Play 3.0.6! πŸŽ‰

πŸ“— About this Release

Play is pretty stable at this point - we hardly get bug reports, which is great! This release primarily upgrades dependencies, and we strongly recommend upgrading at your earliest convenience.

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

Noteworthy Pull Request

  • playframework/play-ws #866 Use latest netty-reactive-streams version, ahc comes with outdated one by @mkurz
    • Ensures the shaded AsyncHttpClient dependency shipped with play-ws uses the latest Netty release. This resolves an issue where AsyncHttpClient depended on an outdated version of netty-reactive-streams, which also pulled in an outdated Netty release. Now everything is up-to-date.
  • #12818 [3.0.x] Fix jjwt 0.12 compatibility for setExpiration method by @PromanSEW

Full Changelog

Following pull requests got merged for this release:

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

❀️ 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.

πŸ™‡ 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)!

Play 2.9.6

29 Nov 09:56
2.9.6
b900221

Choose a tag to compare

The Play Team is pleased to announce the release of Play 2.9.6! πŸŽ‰

πŸ“— About this Release

Play is pretty stable at this point - we hardly get bug reports, which is great! This release primarily upgrades dependencies, and we strongly recommend upgrading at your earliest convenience.

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.

Noteworthy Pull Request

  • playframework/play-ws #866 Use latest netty-reactive-streams version, ahc comes with outdated one by @mkurz
    • Ensures the shaded AsyncHttpClient dependency shipped with play-ws uses the latest Netty release. This resolves an issue where AsyncHttpClient depended on an outdated version of netty-reactive-streams, which also pulled in an outdated Netty release. Now everything is up-to-date.
  • #12820 [2.9.x] Fix jjwt 0.12 compatibility for setExpiration method (backport #12818) by @PromanSEW

Full Changelog

Following pull requests got merged for this release:

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

❀️ 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.

πŸ™‡ 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)!