Play Framework Versions Save

The Community Maintained High Velocity Web Framework For Java and Scala.

3.0.2

1 month ago

The Play Team is pleased to announce the release of Play 3.0.2! :tada:

:green_book: About this Release

This patch release addresses several bugs and introduces minor enhancements that may benefit you. We strongly recommend upgrading at your earliest convenience.

If you're considering upgrading to Play 3, please check the Play 3 release announcement for highlights and further details on how to migrate.

Noteworthy Pull Requests

  • With this release, we are disabling HTTP pipelining in the Play Pekko HTTP backend. HTTP pipelining has not been thoroughly tested within Pekko HTTP and was already disabled in Pekko HTTP itself some time ago. Beyond benchmarking purposes, it is not recommended for practical use, and there is minimal actual usage from common client libraries in their default settings (web browsers do not support it anymore). Furthermore, having HTTP pipelining enabled could lead to Play unexpectedly canceling POST requests with large bodies.
    • #12397 Disable HTTP pipelining by @mkurz
    • #12351 Requests with Large POST Body Immediately Goes into Delay Cancellation Right After the Server Received the Request by @raphaelNguyen
  • Resolved an issue that could result in the loss of result attributes:
    • #12336 Keep attrs when modifying result by @hertg
  • Netty native transports under Linux (enabled with play.server.netty.transport = "native") now support AArch64 and RISC-V out of the box in Play:
    • #12405 Make Netty native transport work on Linux AArch64 and RISC-V (besides x86-64) by @mkurz
  • Play and Twirl are now compatible with Scala 3.4.0. However, it's important to note that Scala 3.4.0 is not a Long-Term Support (LTS) release, and Play officially supports only Scala LTS versions (currently Scala 3.3). This compatibility is provided as a best effort. Consequently, if you choose to upgrade beyond Scala 3.3, you do so at your own risk, and you should not expect support for issues that may arise.
    • #12284 fix warnings with Scala 3.4. avoid private[this] by @xuwei-k
    • Twirl #737 compiler: account for Scala 2 and 3 differences in generated varargs code by @ahjohannessen
  • If you are using Bower WebJars you will now see deprecation warnings. More details:
  • You now have the option to disable the generation of JavaScript (reverse) routers if you do not utilize them, potentially enhancing the performance of your build:
    • #12270 Add option to disable JavaScript routers by @PromanSEW
  • This release includes numerous dependency upgrades, notably:
    • #12367 netty 4.1.107.Final (was 4.1.104.Final) by @scala-steward
    • #12358 pekko-http 1.0.1 by @pjfanning
  • Last but not least, over the past weeks (indeed, months), efforts have been made to transition Play and all its dependencies away from the deprecated (and read-only) repo.typesafe.com and repo.scala-sbt.org repositories. As a result, with this release, all dependencies (including those for testing) are now hosted exclusively on Maven Central. This change ensures that even if one of the deprecated repositories were to become unavailable (as has happened in the past), your projects would not be affected. Moreover, this move allows for the possibility that, 15 years from now, you could still download the Play 3.0.2+ source code and, with just Java and sbt installed, rebuild Play from the sources (assuming Maven Central is still operational, which is more likely). While this may seem a bit far-fetched, we occasionally receive reports from users attempting to rebuild an ancient Play release but are unable to do so because they cannot retrieve all the necessary dependencies.

Full Changelog

Following pull requests got merged for this release:

  • #12459 Upgrade sbt-js-engine, sbt-web, webjars-locator by @mkurz
  • #12454 Patch updates by @scala-steward
  • #12442 Scala 3.3.3 by @mkurz
  • #12435 Update ModuleDirectory.md - Update Silhouette location by @rorygraves
  • #12431 Cleanup README by @mkurz
  • #12430 Introduce 3.0.x branch by @mkurz
  • #12417 Twirl 2.0.4 by @mkurz
  • #12414 Update ActorModule documentation by @ndeverge
  • #12413 Fix typo in docs by @mkurz
  • #12270 Add option to disable JavaScript routers by @PromanSEW
  • #12409 TestServer.isRunning should not throw exception but return false by @mkurz
  • #12401 Upgrade to latest scala versions by @mkurz
  • #12405 Make Netty native transport work on Linux AArch64 and RISC-V (besides x86-64) by @mkurz
  • #12403 Explicitly depend on netty-reactive-streams-http transitive dependencies by @mkurz
  • #12279 Fix unapply examples in ScalaForms docs by @pschichtel
  • #12398 sbt 1.9.9 by @mkurz
  • #12397 Disable HTTP pipelining by @mkurz
  • #12365 logback-classic 1.5.0 (was 1.4.14) by @scala-steward
  • #12372 Patch updates by @scala-steward
  • #12368 hibernate-core 6.4.4.Final (was 6.4.1.Final) by @scala-steward
  • #12367 netty-transport-native-epoll 4.1.107.Final (was 4.1.104.Final) by @scala-steward
  • #12370 scalafmt-core 3.8.0 (was 3.7.17) by @scala-steward
  • #12359 Fix #8184 Evolutions Fail With a Small Pool by @reardonj
  • #12358 pekko-http 1.0.1 by @pjfanning
  • #12284 fix warnings with Scala 3.4. avoid private[this] by @xuwei-k
  • #12347 Clean up resolvers by @mkurz
  • #12342 Be more generic about repos (avoid repo.typesafe.com) by @mkurz
  • #12340 Upgrade sbt-web plugins (to avoid repo.scala-sbt.org) by @mkurz
  • #12336 Keep attrs when modifying result by @hertg
  • #12303 Patch updates by @scala-steward
  • #12328 Fix link to Zengularity by @mkurz
  • #12302 sbt-jmh 0.4.7 (was 0.4.6) by @scala-steward
  • #12297 sbt-eclipse 6.2.0 (was 6.0.0) by @scala-steward
  • #12299 hibernate-core 6.4.1.Final (was 6.3.2.Final) by @scala-steward
  • #12290 Never trigger release process via UI, need to push tag by hand always by @mkurz
  • #12287 Make clear the evolutions page shows a button by @mkurz
  • #12162 update play-stack image in doc by @xuwei-k

For more details see the full list of changes and the 3.0.2 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)!

2.9.2

1 month ago

The Play Team is pleased to announce the release of Play 2.9.2! :tada:

:green_book: About this Release

This patch release addresses several bugs and introduces minor enhancements that may benefit you. 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.

Noteworthy Pull Requests

  • With this release, we are disabling HTTP pipelining in the Play Akka HTTP backend. HTTP pipelining has not been thoroughly tested within Akka HTTP and was already disabled in Akka HTTP itself some time ago. Beyond benchmarking purposes, it is not recommended for practical use, and there is minimal actual usage from common client libraries in their default settings (web browsers do not support it anymore). Furthermore, having HTTP pipelining enabled could lead to Play unexpectedly canceling POST requests with large bodies.
    • #12397 Disable HTTP pipelining by @mkurz
    • #12351 Requests with Large POST Body Immediately Goes into Delay Cancellation Right After the Server Received the Request by @raphaelNguyen
  • Resolved an issue that could result in the loss of result attributes:
    • #12336 Keep attrs when modifying result by @hertg
  • Netty native transports under Linux (enabled with play.server.netty.transport = "native") now support AArch64 and RISC-V out of the box in Play:
    • #12405 Make Netty native transport work on Linux AArch64 and RISC-V (besides x86-64) by @mkurz
  • Play and Twirl are now compatible with Scala 3.4.0. However, it's important to note that Scala 3.4.0 is not a Long-Term Support (LTS) release, and Play officially supports only Scala LTS versions (currently Scala 3.3). This compatibility is provided as a best effort. Consequently, if you choose to upgrade beyond Scala 3.3, you do so at your own risk, and you should not expect support for issues that may arise.
    • #12284 fix warnings with Scala 3.4. avoid private[this] by @xuwei-k
    • Twirl #737 compiler: account for Scala 2 and 3 differences in generated varargs code by @ahjohannessen
  • If you are using Bower WebJars you will now see deprecation warnings. More details:
  • You now have the option to disable the generation of JavaScript (reverse) routers if you do not utilize them, potentially enhancing the performance of your build:
    • #12270 Add option to disable JavaScript routers by @PromanSEW
  • This release includes numerous dependency upgrades, notably:
    • #12367 netty 4.1.107.Final (was 4.1.104.Final) by @scala-steward
  • Last but not least, over the past weeks (indeed, months), efforts have been made to transition Play and all its dependencies away from the deprecated (and read-only) repo.typesafe.com and repo.scala-sbt.org repositories. As a result, with this release, all dependencies (including those for testing) are now hosted exclusively on Maven Central. This change ensures that even if one of the deprecated repositories were to become unavailable (as has happened in the past), your projects would not be affected. Moreover, this move allows for the possibility that, 15 years from now, you could still download the Play 2.9.2+ source code and, with just Java and sbt installed, rebuild Play from the sources (assuming Maven Central is still operational, which is more likely). While this may seem a bit far-fetched, we occasionally receive reports from users attempting to rebuild an ancient Play release but are unable to do so because they cannot retrieve all the necessary dependencies.

Full Changelog

Following pull requests got merged for this release:

  • #12460 [2.9.x] Upgrade sbt-js-engine, sbt-web, webjars-locator by @mkurz
  • #12456 [2.9.x] Patch updates (backport #12454) by @scala-steward
  • #12443 [2.9.x] Scala 3.3.3 by @mkurz
  • #12436 [2.9.x] Update ModuleDirectory.md - Update Silhouette location (backport #12435) by @rorygraves
  • #12416 [2.9.x] Twirl 1.6.5 by @mkurz
  • #12411 [2.9.x] Add option to disable JavaScript routers (backport #12270) by @PromanSEW
  • #12415 [2.9.x] Update ActorModule documentation (backport #12414) by @ndeverge
  • #12412 [2.9.x] Fix typo in docs by @mkurz
  • #12410 [2.9.x] TestServer.isRunning should not throw exception but return false (backport #12409) by @mkurz
  • #12408 [2.9.x] Upgrade to latest scala versions (backport #12401) by @mkurz
  • #12406 [2.9.x] Make Netty native transport work on Linux AArch64 and RISC-V (besides x86-64) (backport #12405) by @mkurz
  • #12404 [2.9.x] Explicitly depend on netty-reactive-streams-http transitive dependencies (backport #12403) by @mkurz
  • #12400 [2.9.x] sbt 1.9.9 (backport #12398) by @mkurz
  • #12402 [2.9.x] Fix unapply examples in ScalaForms docs (backport #12279) by @pschichtel
  • #12399 [2.9.x] Disable HTTP pipelining (backport #12397) by @mkurz
  • #12385 [2.9.x] logback-classic 1.5.0 (was 1.4.14) by @scala-steward
  • #12392 [2.9.x] Patch updates by @scala-steward
  • #12388 [2.9.x] hibernate-core 6.4.4.Final (was 6.4.1.Final) by @scala-steward
  • #12387 [2.9.x] netty-transport-native-epoll 4.1.107.Final (was 4.1.104.Final) by @scala-steward
  • #12390 [2.9.x] scalafmt-core 3.8.0 (was 3.7.17) by @scala-steward
  • #12395 [2.9.x] Nicer Scala steward title by @mkurz
  • #12393 [2.9.x] Fix #8184 Evolutions Fail With a Small Pool (backport #12359) by @reardonj
  • #12364 [2.9.x] fix warnings with Scala 3.4. avoid private[this] (backport #12284) by @xuwei-k
  • #12348 [2.9.x] Clean up resolvers (backport #12347) by @mkurz
  • #12345 [2.9.x] Upgrade sbt-web plugins (to avoid repo.scala-sbt.org) (backport #12340) by @mkurz
  • #12346 [2.9.x] Be more generic about repos (avoid repo.typesafe.com) (backport #12342) by @mkurz
  • #12339 [2.9.x] sbt-akka-version-check now hosted on maven central by @mkurz
  • #12337 [2.9.x] Keep attrs when modifying result (backport #12336) by @hertg
  • #12326 [2.9.x] Patch updates by @scala-steward
  • #12329 [2.9.x] Fix link to Zengularity (backport #12328) by @mkurz
  • #12317 [2.9.x] sbt-eclipse 6.2.0 (was 6.0.0) by @scala-steward
  • #12325 [2.9.x] sbt-jmh 0.4.7 (was 0.4.6) by @scala-steward
  • #12322 [2.9.x] hibernate-core 6.4.1.Final (was 6.3.2.Final) by @scala-steward
  • #12289 [2.9.x] Never trigger release process via UI, need to push tag by hand always by @mkurz
  • #12288 [2.9.x] Make clear the evolutions page shows a button (backport #12287) by @mkurz

For more details see the full list of changes and the 2.9.2 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)!

3.0.1

3 months ago

The Play Team is delighted to announce the release of Play 3.0.1! 🥳

:green_book: About this Release

This is a pure patch release, not shipping any new features, but upgrading dependencies and fixing minor bugs reported by the community since our major Play 3 release two months ago. Many projects have already smoothly upgraded to Play 3.

If you're considering upgrading to Play 3, please check the Play 3 release announcement for highlights and further details on how to migrate.

Noteworthy Pull Requests

  • A POSIX file permissions problem on Windows was fixed, thanks to @inigo:
  • Fixed a performance regression when processing files via sbt-js-engine, as reported by @platypii:
  • #12252 Pekko was upgraded to version 1.0.2 by @mkurz
  • #12277 Netty was upgraded to version 4.1.104 by @mkurz
  • #12267 We now support CSP nonce in Comet helpers by @mkurz
  • #12223 In tests, redirectLocation(...) can now get the location of a Permanent Redirect by @tmccombs

Full Changelog

Following pull requests got merged for this release:

  • #12277 Netty 4.1.104 by @mkurz
  • #12273 sbt 1.9.8 by @mkurz
  • #12267 Support CSP nonce in Comet helpers by @mkurz
  • #12223 fix: redirectLocation can get location of Permanent Redirect by @tmccombs
  • #12253 Add hepek components by @sake92
  • #12259 Patch updates by @mkurz
  • #12258 Bugfix: Always set play.server.http.port, even if disabled (backport #12256) by @mkurz
  • #12252 Pekko 1.0.2 by @mkurz
  • #12217 netty-transport-native-epoll 4.1.101.Final (was 4.1.100.Final) by @scala-steward
  • #12222 Patch updates by @scala-steward
  • #12212 Migration guide: Dispatchers defined directly in the akka.* config won’t load automatically anymore by @mkurz
  • #12207 Link to correct samples by @mkurz
  • #12201 Add suffix to coursier cache key for publish job by @ihostage
  • #12199 Fix headers check for Play OpenID module by @ihostage
  • #12196 Upgrade sbt-web to really fix #12187 by @mkurz
  • #12190 It's an epoch version change, we did not switch to SemVer (yet?) by @mkurz
  • #12189 Upgrade webjars-locator and play-json to fix bugs by @mkurz
  • #12172 avoid deprecated scala.Symbol literal in CspFilter.md by @xuwei-k
  • #12171 fix dead link in AccessingAnSQLDatabase.md by @xuwei-k
  • #12173 Minor changes to 3.0 notes by @BillyAutrey
  • #12168 Docs enhancements by @mkurz
  • #12163 Make docs handle svg files by @mkurz
  • #12142 remove ensime from IDE.md by @xuwei-k
  • #12158 Fix links to javadoc.io by @mkurz
  • #12148 Update play-samples url by @xuwei-k
  • #12147 use new sbt slash syntax in doc by @xuwei-k
  • #12146 Update sbt-assembly version in doc by @xuwei-k
  • #12145 Update play-json scaladoc url by @xuwei-k
  • #12144 replace deprecated Resolver.sonatypeRepo by @xuwei-k
  • #12143 Update BuildingFromSource.md by @xuwei-k
  • #12150 update macwire url by @xuwei-k
  • #12140 Set correct mimaPreviousVersion + scalatestplus-play stable release by @mkurz

For more details see the full list of changes and the 3.0.1 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)!

2.9.1

3 months ago

The Play Team is delighted to announce the release of Play 2.9.1! 🥳

:green_book: About this Release

This is a pure patch release, not shipping any new features, but upgrading dependencies and fixing minor bugs reported by the community since our major Play 2.9 release two months ago. Many projects have already smoothly upgraded to Play 2.9.

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.

Noteworthy Pull Requests

  • A POSIX file permissions problem on Windows was fixed, thanks to @inigo:
  • Fixed a performance regression when processing files via sbt-js-engine, as reported by @platypii:
  • #12278 Netty was upgraded to version 4.1.104 by @mkurz
  • #12268 We now support CSP nonce in Comet helpers by @mkurz
  • #12265 In tests, redirectLocation(...) can now get the location of a Permanent Redirect by @tmccombs

Full Changelog

Following pull requests got merged for this release:

  • #12278 [2.9.x] Netty 4.1.104 by @mkurz
  • #12274 [2.9.x] sbt 1.9.8 (backport #12273) by @mkurz
  • #12271 [2.9.x] Fix errors if play-published-local-* cache entries not found (backport #12015) by @ihostage
  • #12268 [2.9.x] Support CSP nonce in Comet helpers (backport #12267) by @mkurz
  • #12265 [2.9.x] fix: redirectLocation can get location of Permanent Redirect (backport #12223) by @tmccombs
  • #12264 [2.9.x] Add hepek components (backport #12253) by @sake92
  • #12261 [2.9.x] Patch updates by @mkurz
  • #12257 [2.9.x] Bugfix: Always set play.server.http.port, even if disabled (backport #12256) by @mkurz
  • #12244 [2.9.x] netty-transport-native-epoll 4.1.101.Final (was 4.1.100.Final) by @scala-steward
  • #12246 [2.9.x] hibernate-core 6.3.2.Final (was 6.3.1.Final) by @scala-steward
  • #12249 [2.9.x] Patch updates by @scala-steward
  • #12213 [2.9.x] Migration guide: Dispatchers defined directly in the akka.* config won’t load automatically anymore (backport #12212) by @mkurz
  • #12208 [2.9.x] Link to correct samples (backport #12207) by @mkurz
  • #12203 [2.9.x] Add suffix to coursier cache key for publish job (backport #12201) by @ihostage
  • #12202 [2.9.x] Fix headers check for Play OpenID module (backport #12199) by @ihostage
  • #12197 [2.9.x] Upgrade sbt-web to really fix #12187 by @mkurz
  • #12188 [2.9.x] Upgrade webjars-locator and play-json to fix bugs by @mkurz
  • #12178 [2.9.x] avoid deprecated scala.Symbol literal in CspFilter.md (backport #12172) by @xuwei-k
  • #12177 [2.9.x] Small wording change in 2.9 Highlights by @mkurz
  • #12175 [2.9.x] fix dead link in AccessingAnSQLDatabase.md (backport #12171) by @xuwei-k
  • #12169 [2.9.x] Docs enhancements (backport #12168) by @mkurz
  • #12165 [2.9.x] Make docs handle svg files (backport #12163) by @mkurz
  • #12161 [2.9.x] remove ensime from IDE.md (backport #12142) by @xuwei-k
  • #12160 [2.9.x] Fix link to typesafe config by @mkurz
  • #12159 [2.9.x] Fix links to javadoc.io (backport #12158) by @mkurz
  • #12157 [2.9.x] Update play-json scaladoc url by @mkurz
  • #12154 [2.9.x] use new sbt slash syntax in doc (backport #12147) by @xuwei-k
  • #12155 [2.9.x] update macwire url (backport #12150) by @xuwei-k
  • #12151 [2.9.x] Update BuildingFromSource.md (backport #12143) by @xuwei-k
  • #12152 [2.9.x] replace deprecated Resolver.sonatypeRepo (backport #12144) by @xuwei-k
  • #12153 [2.9.x] Update sbt-assembly version in doc (backport #12146) by @xuwei-k
  • #12141 [2.9.x] Set correct mimaPreviousVersion + scalatestplus-play stable release by @mkurz

For more details see the full list of changes and the 2.9.1 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)!

2.8.21

5 months ago

The Play Team is happy to announce the release of Play 2.8.21 :partying_face:

:warning: Play 2.8 will reach its end of life on May 31st, 2024

More details on EOL dates, supported dependencies and how Play deals with Akka’s License change can be found here. We recommend upgrading to Play 2.9 (built on Akka) or Play 3.0 (built on Pekko) as soon as possible:

:green_book: Noteworthy in this release

  • #11915 [2.8.x] Fix missed ContextInitializer#configureByResource (backport #11910) by @tsuyoshizawa Logback 1.4.9 and 1.3.9 broke their public APIs so we had to introduce a workaround so you can upgrade to those versions.
  • #12186 [2.8.x] Better Scala 2.13.12 compatibility by @mkurz If you want to use Scala 2.13.12 in your projects, this change should avoid some warnings and maybe even errors, depending on your configured compiler flags.
  • #12046 [2.8.x] Netty 4.1.100 by @mkurz We upgraded Netty to benefit from latest security fixes.

Besides that, following pull requests got merged for this release:

  • #12191 [2.8.x] Upgrade typesafe config to 1.4.3 by @mkurz
  • #12176 [2.8.x] fix dead link in AccessingAnSQLDatabase.md (backport #12171) by @xuwei-k
  • #12135 Add tag [2.8.x] for Steward's pull requests for 2.8.x branch by @ihostage
  • #12113 spring-core 5.2.25.RELEASE (was 5.2.24.RELEASE) by @scala-steward
  • #12108 sbt-scalafmt 2.5.2 (was 2.0.7) by @scala-steward
  • #12063 [2.8.x] Move scala steward config to .github + adjust config by @mkurz
  • #11981 Display soft warning about EOL when starting sbt by @mkurz
  • #11884 [2.8.x] Fix akka update guide by @mkurz

For more details see the full list of changes and the 2.8.21 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)!

3.0.0

5 months ago

The Play Team is thrilled to announce the release of Play 3.0.0! :tada: This release brings highly anticipated new features, including support for the latest Java LTS versions and Scala 3. It continues our commitment to making Play more modular, flexible, and secure. Play 3.0, together with Play 2.9, represents a significant milestone as they are the first major releases in almost four years and the first major releases entirely driven by the community. Starting in late 2021, the project transitioned from Lightbend Inc. to a core team of dedicated individuals, as detailed in our sponsorship page. This release is the result of months of hard work from the Play core team and our fantastic community, with more than 600 pull requests merged from 112 contributors.

:green_book: What's New?

For a detailed overview of all the new features, please visit our Play 3.0 release highlights page on the Play website.

:spiral_notepad: Play 3.0 vs Play 2.9: How Play Deals with Akka’s License Change

Simultaneously with this release, we also introduced Play 2.9, which is nearly identical to Play 3.0. It offers the same features and will receive parallel maintenance, benefiting from identical enhancements and bug fixes.

Play 3, however:

  • Uses Apache Pekko under the hood instead of Akka, and
  • Switches the groupId to org.playframework to emphasize that the project is now entirely community-driven and fully committed to Open Source.

If you want to learn more about Apache Pekko and the motivation behind the switch to it in Play 3.0, read "How Play Deals with Akka’s License Change".

:world_map: How to start or migrate to Play 3.0

To get started with Play, follow the instructions on our Getting Started page. If you're migrating from an older version to Play 3.0, our migration guide will be a valuable resource.

Full Changelog

Following pull requests got merged for this release:

Following pull requests got merged for this release (click to expand)
  • #12136 Mention JPA provider in migration notes by @mkurz
  • #12133 Patch updates (backport #12131) by @scala-steward
  • #12132 okhttp 4.12.0 (was 4.11.0) (backport #12121) by @scala-steward
  • #12011 Play 3 highlights + migration guide + docs adjustments by @mkurz
  • #12061 Move scala-steward config in .github folder + pin spring libs by @mkurz
  • #12058 Dependency upgrades by @mkurz
  • #12056 sbt-js-engine 1.3.3 by @mkurz
  • #12054 webjars-locator-core 0.54 by @mkurz
  • #12036 mockito-core 5.6.0 (was 5.5.0) by @scala-steward
  • #12037 htmlunit-driver 4.13.0 (was 4.12.0) by @scala-steward
  • #12035 hibernate-core 6.3.1.Final (was 6.3.0.Final) by @scala-steward
  • #12040 Patch updates by @scala-steward
  • #12048 Add addDependencyTreePlugin by @mkurz
  • #12038 selenium-api 4.14.1 (was 4.12.1) by @scala-steward
  • #12043 Latest netty patch release by @mkurz
  • #12027 Pronoun change in IDE.md for gender neutrality by @alexdboxall
  • #12021 play-ws milestone which switches everything to org.playframework by @mkurz
  • #12020 typesafehub/config => lightbend/config by @xuwei-k
  • #12018 Last batch of switching to org.playframework by @mkurz
  • #12016 Some libs moved to org.playframework by @mkurz
  • #12015 Fix errors if play-published-local-* cache entries not found by @ihostage
  • #12014 Re-enable mima checks after first Play 3 milestone + scripted tests after scalatestplus-play Pekko release by @mkurz
  • #12013 Move to org.playframework for Play 3 by @mkurz
  • #11847 Pekko by @mkurz

For more details see the full list of changes and the 3.0.0 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)!

2.9.0

5 months ago

2.9.0-RC2

7 months ago

2.8.20

9 months ago

The Play Team is happy to announce the release of Play 2.8.20 :partying_face:

:grey_question: Nice, but what about Play 2.9?

It's around the corner, basically some docs, migration guide and release notes missing, but no more pull requests. A first release candidate should follow within days :crossed_fingers: Sorry, it took a bit longer and was postponed a couple of times. With the first Play 2.9 RC we will also give an update on how we continue with Akka / Akka HTTP after September 2023.

:green_book: So what is new in 2.8.20?

This is mostly a bugfix release with some enhancements added. The most notable are:

  • #11881 [2.8.x] scala-xml 1.3.1 by @mkurz
    • Ships with a fix to avoid a potential StackOverflowError in Play body parsers. Researched by @beny23, thanks!
  • #11754 [2.8.x] Add to RouteInvokers test helper (backport #11375) by @dwhjames
  • #11876 [2.8.x] Support trailing newline in SSR (backport #11848) by @ryoppy
  • #11657 [2.8.x] Support MariaDB jdbc con. string for Evolutions tables (backport #11655) by @mkurz
  • #11732 [2.8.x] Add ConfigLoader implicits for java.time.Duration (backport #11715) by @tmccombs
  • #11611 [2.8.x] Filters should be restrictive when their route modifier black-/whitelist both are empty (backport #11610) by @mkurz
  • #11874 [2.8.x] Update akka to 2.6.21 (backport #11849) by @xuwei-k

Besides that, following pull requests got merged for this release:

  • #11878 [2.8.x] Dependency upgrades for 2.8.20 release by @mkurz
  • #11877 [2.8.x] Make it easy to identify the cookie in which the error occurred (backport #11850) by @tsuyoshizawa
  • #11818 [2.8.x] Fixed dead link (backport #11817) by @gianick
  • #11807 [2.8.x] Fix documentation of scheduleOnce (backport #11806) by @johnsgp
  • #11802 [2.8.x] Remove asset finder from helloWorld by @mkurz
  • #11795 [2.8.x] Sync GHA workflows with main branch by @mkurz
  • #11779 [2.8.x] fix reverse routes escape with fixed param (backport #11774) by @xuwei-k
  • #11746 [2.8.x] Fix MysqlJdbcUrl regex matching (backport #11745) by @mkurz
  • #11713 [2.8.x] Fix transforming of PathBindable and also the anyValPathBindable macro (backport #11712) by @mkurz
  • #11668 [2.8.x] Added .bsp to the typical .gitignore file by @gianick
  • #11642 [2.8.x] sbt-java-formatter 0.8.0 by @ihostage
  • #11639 [2.8.x] Scalafmt3 (backport #11512) by @adrianlyjak
  • #11638 [2.8.x] Upgrade Scalafmt to latest release of 2.7.x serias by @ihostage
  • #11636 [2.8.x] Fix length validation in Multipart.randomBoundary (backport #11635) by @jdayton3
  • #11634 [2.8.x] Upgrade Scalafmt to latest release of 2.6.x serias by @ihostage
  • #11632 [2.8.x] 🔄 synced file(s) with playframework/.github by @ihostage
  • #11630 [2.8.x] Upgrade Scalafmt to latest release of 2.5.x serias (backport #11628) by @ihostage
  • #11627 [2.8.x] implements #11467. Adds command to fix up formats (backport #11513) by @adrianlyjak
  • #11626 [2.8.x] Render sha and dirty part in version only when on CI (backport #11625) by @mkurz
  • #11624 [2.8.x] chore(#11143): set next minor version when being on main branch (backport #11168) by @gaeljw
  • #11607 [2.8.x] Interplay 2.1.11 to avoid out of memory with gpg by @mkurz

For more details see the full list of changes and the 2.8.20 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)!

2.8.19

1 year ago

The Play Team is happy to announce the release of Play 2.8.19 :partying_face:

:green_book: What is new?

ping/pong support for WebSockets :ping_pong:

Finally! Check out the documentation:

Using Netty, WebSockets time out now :hourglass_flowing_sand:

Another fix for WebSockets ships with this release as well: If you are using the Netty backend the play.server.http[s].idleTimeout setting will now be honored for WebSocket connections. Until now, when using Netty, a WebSocket connection never timed out. That might even was desirable for some use cases, but now that we have ping/pong support you have to make use of that to keep WebSocket connections open. That is the correct way of doing things and not closing connections after an idle timeout was actually a bug. The akka-http backend was always working correctly and didn't need to be fixed.

Removed the shutdown hook from the default logback config :hook:

If you have

<shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>

in your logback config, you should remove that line. Play handles the shutdown of the logger context, the line shown is not necassary anymore since at least Play 2.7 and is a leftover that should have been removed a while ago. More details can be found in the according pull request.

Correctly encode Content-Disposition: form-data; name="..."; filename="..." :capital_abcd:

When Play renders a request body containing multipart/form data it will now encode the name and the filename fields according the "WHATWG HTML living standard" section 4.10.21.8. curl, Firefox, Chrome and other libraries like Python's urllib3 follow the same approach. Until now, Play didn't encode those fields which could result in security implications. Just to be clear, this is not about receiving and parsing multipart/form data from a client, but when sending multipart/form data e.g. via ws or when using the RequestBuilder to build a request for testing purposes. Details can be found in pull request #11571.

A few words on Play's compatibility with sbt 1.8 :wrench:

Now that sbt 1.8 got released there have been reports that it isn't working out of the box with Play, caused by a version conflict regarding scala-xml, see #11522. Unfortunately, right now, we don't have a fix for that yet. Even if we bump scala-xml to version 2.x in Play and all its dependencies, we can't currently make sbt 1.8 work with Play because of another problem described in #11527. The good news is, that isn't a showstopper if you still want to upgrade to sbt 1.8. You can do that right now by putting

ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always

in project/plugins.sbt. That is possible because scala-xml 1.x and 2.x are compatible anyway. However, like described in #11527 you will not be able to use PlayNonBlockingInteractionMode with sbt 1.8 then (which probably not many people do anyway)

Merged pull requests

Following pull requests got merged for this release:

  • #11604 [2.8.x] Upgrade netty + netty reactive streams + fix backports by @mkurz
  • #11603 [2.8.x] Escape Content-Disposition params according to WHATWG HTML living standard (backport #11571) by @mkurz
  • #11602 [2.8.x] Add exceptionOverrideClassName Hikari config setting (backport #11601) by @benwaffle
  • #11598 [2.8.x] Fix the example code to DiscardingCookie for Results#discardingCookies (backport #11597) by @tsuyoshizawa
  • #11593 Update PlayApplicationOverview.md by @SenthilNayagan
  • #11528 [2.8.x] Upgrade Scalafmt to latest release of 2.4.x serias (backport #11524) by @ihostage
  • #11567 [2.8.x] Added play-hmac-signatures (backport #11559) by @phelps-sg
  • #11560 [2.8.x] Updating documentation - ConfiguringHttps.md by @szymond
  • #11552 Update SettingsJDBC.md by @bmontuelle
  • #11532 [2.8.x] Do not use/recommend shutdownHook in Logback, Play handles that by @mkurz
  • #11519 [2.8.x] Log websocket communication problems + handle special Netty case by @mkurz
  • #11521 [2.8.x] Add WebSocket ping/pong support by @mkurz
  • #11420 [2.8.x] Netty: Websockets should respect play.server.http.idleTimeout by @mkurz
  • #11518 [2.8.x] Use environment file instead set-output by @ihostage

For more details see the full list of changes and the 2.8.19 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)!