Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Play Framework

Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402 (1 ratings)
Rated 5.0 out of 5
Subscribe to updates I use playframework

Statistics on playframework

Number of watchers on Github 10253
Number of open issues 370
Average time to close an issue 1 day
Main language Scala
Average time to merge a PR 1 day
Open pull requests 272+
Closed pull requests 74+
Last commit almost 2 years ago
Repo Created over 8 years ago
Repo Last Updated almost 2 years ago
Size 86.7 MB
Homepage http://www.playfr...
Organization / Authorplayframework
Latest Release2.6.11
Page Updated
Do you use playframework? Leave a review!
View open issues (370)
View playframework activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating playframework for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Gitter Maven

Play Framework - The High Velocity Web Framework

The Play Framework combines productivity and performance making it easy to build scalable web applications with Java and Scala. Play is developer friendly with a just hit refresh workflow and built-in testing support. With Play, applications scale predictably due to a stateless and non-blocking architecture. By being RESTful by default, including assets compilers, JSON & WebSocket support, Play is a perfect fit for modern web & mobile applications.

Learn More


Copyright (C) 2009-2017 Lightbend Inc. (

Licensed under the Apache License, Version 2.0 (the License); you may not use this project except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

playframework open issues Ask a question     (View All Issues)
  • over 3 years Documentation 'ScalaTestingWithDatabases' for 2.5.x is using outdated API
  • over 3 years Different routes files with same package names collide
  • over 3 years Fix comment or implementation regarding 'future' scala 2.11 functionality
  • over 3 years Upgrade documentation to point to sbt 0.13.13
  • over 3 years [2.5.x] JSON readNullable erroneously fails with "error.path.empty"
  • over 3 years Not all SecurityHeaderFilters apply to non-HTML documents
  • over 3 years Unable to define a router in the same package as controllers
  • over 3 years default json content-type no longer mentions charset=utf-8
  • over 3 years Allow setting session cookies path parameter
  • over 3 years [2.5.9] Routes compiler generates code with unused imports
  • over 3 years Hardcoded dependency on (doc in Compile) breaks build
  • over 3 years [2.5.x] LoggerConfigurator requires an immutable map
  • over 3 years Cleaner error messages in case json body parsing fails
  • over 3 years Cache don't respect provided configuration for ehCache
  • over 3 years Play ScalaErrorHandling not working for filters and action composition
  • over 3 years Invalid DDL for Oracle lock table
  • over 3 years Create Test Helpers for JUnit 5
  • over 3 years EssentialFilter accumulator does not always feed a Flow
  • over 3 years Configuration error on Windows after SBT Reload
  • over 3 years [doc] "Unit testing Controller" describes functional test
  • over 3 years "Inconsistent evolution" stacktrace doesn't show database error
  • over 3 years Streamed Response seems not to work always
  • over 3 years "The Native Packager" docs missing plugin dependency
  • over 3 years Avoid to send a chunked response in Gzip Filter for HTTP/1.0 requests (Play 2.5)
  • over 3 years Update Iteratees documentation for 2.5.X and later Play versions
  • over 3 years when a Form.validate method returns an empty list
  • over 3 years [doc] Include examples of implicit request in Action documentation
  • over 3 years controllers package should be under play package
  • over 3 years FakeRequest ignores part of URL following a second '=' (a real request doesn't)
  • over 3 years Better guidance for dealing with JPA transactions
playframework open pull requests (View All Pulls)
  • Update Comet and EventSource APIs
  • Make CORS filter treat http and https as different origins
  • Documentation on managing circular dependencies
  • Docs about the difference between class and objects to declare controllers
  • JPAApi improvements
  • (WIP) Fixes #902 added a way to sent multipart/form-data requests via play-ws
  • Allow configuring binder options on Guice injector
  • Improve docs for Javascript Router
  • Header
  • Remove -mem from 2.4.x production configuration documentation as it doesn't work
  • Bugfix: Correctly look up error.invalid.* messages
  • Look up arguments of constraint/format/error messages in message file
  • Add comfortable remoteAddress change to FakeRequest
  • Read pattern for DateFormatter from messages
  • Look up pattern for AnnotationDateFormatter in messages
  • Improve the case of when to display the logger configuration deprecat…
  • Fixed threadpools documentation default examples
  • Java AssetsBuilder code snippet fix
  • Make the JacksonJson module public so that it can be reused.
  • add evolutions parameter `skipApplyDownsOnly`
  • typo, grammar
  • TolerantText charset handling
  • Refactor several Enumeratee implementations.
  • Fix the error of config sample in ExternalAssets's comments.
  • Make it a bit easier to read a JSON body
  • Play WS only parses form body when used with OAuth - master
  • Fixed some Javadoc warnings ref issue #4995
  • Add crypto module for 2.5.x
  • [2.4.x]: Deprecate the AES functions in Crypto.
  • Added range request support
  • Fix typo on (DB -> db)
  • Fix Crypto injection
  • Fix runtime injector provided by BuiltInComponents so that Crypto is injectable
  • json2caseclass to help people with large json
  • Add explicit type info to implicit timeout variable on the document f…
  • fix external link to Scalatest
  • Allow all language tags supported by java.util.Locale
  • [master] Use scalatest for templates
  • Make default body parser parse if and only if a body is present
  • allow i18n usage on weblogic (play 2.4)
  • [WIP] Adds OPTIONS as an HTTP verb that may contain a body by default.
  • Flatten operation on Java Accumulator
  • Added SubTypesScanner to Reflections factory in Classpath
  • Support default values in Json.format macros
  • Removed usage of stream.available for stream size (it is the entire size in some implementations but it is not guaranteed)
  • Cached invalidate annotation
  • Add Macro for generating Writes JSON serializer for all getters in a class
  • Allow page-specific overrides to the security headers provided by Sec…
  • update docs about compile time di and evolutions
  • Deprecate JPA methods
  • Expose play config properties to logback
  • Add check for play.editor setting
  • Use logger.url system property for logger configuration
  • Made it possible to specify a Content-Length Header for a StreamedBody
  • Configuration refactor
  • Strip '\r' suffix from source line when reporting routes compilation error on Windows
  • Make CacheApi use futures
  • [WIP] Share Netty EventLoopGroup between NettyServer and WS
  • Flatten BodyParser from Future or CompletionStage
  • Backport #5740 - Flatten operation on Java Accumulator
  • Fixed #6133 added some docs for routes provider
  • Add option to prevent Play from creating bound caches
  • Only add/display constraint(s) which match the used validation group(s)
  • Add the filenames to change for Eclipse config
  • Split onNotFound in onDevNotFound and onProdNotFound
  • Update sbt-scalariform
  • [2.4.x] Try to send Content-Length even when connection will close
  • Added failing testcases for onDoneEnumerating
  • Add basic auth params to AHCRequestLogger
  • Update tutorials section
  • Updates play-java-intro to use HomeController and Hibernate 5.1.0.Final.
  • Close prepared statements in EvolutionsApi
  • Add HttpEntity.Head for sending HEAD requests
  • Migrate internal GzipFlow & play.core.parsers.Multipart implementation to GraphStage
  • Better Result error handling
  • jdbcdslog is now enabled at the connection pool / data source level
  • Use the built in typesafe Repo resolver
  • Update version number in
  • Fix for #6190
  • Properly set underlying request in AddCSRFToken
  • Update
  • added a warning inside the play ws ssl config parser
  • [WIP] Move guice support to separate module
  • Add java.time.LocalDate support to Forms Mapping
  • Fixes #2333 made it possible to implement custom naming conventions
  • Suggestion: validating bin compatibility with all the patch versions in 2.5 series
  • [WIP] Typed request properties
  • renamed withMultipartBody to withBody and made it public
  • Better Result error handling (2.4.x)
  • [WIP] BodyParser error messages in correct Content-Type
  • Fix displaying runtime exception coming from Twirl template while running in development mode - PR for branch 2.4.x
  • Remove casting in query
  • Apply Netty's cookie encoder/decoder updates.
  • Websocket actor termination fix
  • Read play.editor from environment variables as fallback
  • Set Form value even when form has errors
  • [doc] fix play.editor configuration documentation
  • Cut down on javadoc warnings about missing tags.
  • Don't allow users to set a Content-Length header field in a 204 response
  • Update dependencies
  • Removes joda-time and joda-convert
  • removed iteratees code
  • Add Marker support to Logger API
  • Add an example of the FakeRequest being explained
  • Serialize JsValue directly to bytes
  • Migrate CSRFActions, WebSocketClient & RangeResults to GraphStage
  • Add custom typed properties to requests
  • add missing @Singleton annotation to templates controllers
  • Remove global state from ActionBuilders and BodyParsers
  • removed scalaz repository in play-scala template
  • upgraded specs2 and cleaned up tests with class based specs
  • Connection was not closed when there is an exception fom checkEvoluti…
  • Add @Inject annotation to a few constructors
  • Avoid OutOfMemoryError when writing JSON BigDecimals
  • adds a source-part to multipart form data for arbitrary data
  • Removed file Tag in logger configuration
  • Add new syntax for Java actions with Http.Context
  • Fix PR for WS requests returning 401 with Digest auth (#6467)
  • Enumerator.outputStream was missing
  • Deprecate executioncontext import
  • Add a trait with no behavior for the reverse router.
  • Update deprecated Akka calls
  • [WIP] Add Timeout trait
  • [WIP] Deprecate and clean up Messages API
  • [WIP] upgrades play-doc, twirl and fixes some hiccups while trying to get scala 2.12 to work
  • Remove deprecated Crypto classes and methods
  • [doc] Add a paragraph emphasizing that an implicit request must exist in CSRF
  • Upgrade scalariform to 0.1.8
  • [WIP] Remove deprecated test helpers
  • [WIP] Add format methods to FormError
  • Update
  • Limited support for recursive types within Json macro (reads/writes/format)
  • Fixes serialization of big decimals to json (#6530)
  • Added static true and false values for JsBoolean
  • Fix Java Formatters (#6419)
  • Add request attributes
  • WIP: uri decoding / encoding
  • WIP Define MessageApi configuration in a provider.
  • Document Default controller in routing docs
  • Fix WebsocketSpec failures
  • Custom error messages for built-in validation constraints
  • Fix Akka example
  • Make "app dependent' WSClient relative url methods available through enrichment
  • Refactor AssetsBuilder into several files
  • Add documentation to deploy Play! on Scalingo PaaS
  • De-emphasize activator in docs and refer to sample templates
  • Replaced pattern matching with if-else on boolean for compactness and performance
  • Add description when behind http proxy that requires user/password au…
  • Do not suppress throwables on DefaultHttpErrorHandler initialization
  • Remove global state from Assets
  • [Doc] Adding 'StreamedBody' example to `forward-body`
  • Backport of Issue #6272 to 2.3.x
  • 2.4.x Backport to fix issue #6272
  • Add a CORS config param to allow pass-through of forbidden origins.
  • [WIP] Move encoding of cookies from Result to server implementation
  • Update
  • Extracts Java forms
  • Assets-Controller bug fixes (see description): fixes #6144
  • Added HTTP response code 418, according to
  • Summarize the JSON package and provide relevant links.
  • [Backport 2.5.x] Added the mohiva/swagger-codegen-play-scala module and updated the URLs for Silhouette.
  • Change CookieBuilder#withMaxAge to accept Duration
  • thread switching scenario corrected
  • Update
  • OS X/Java build error
  • Add bindings for Java i18n classes
  • Add FileMimeTypes and move mime types to configuration
  • Move cookies into attributes; remove cookie global state
  • Upgrade to Scala 2.12
  • Add failing test for `dist` task with invalid docs
  • Json.reads[Foo] does not validate that the input is an object
  • [2.5.x] fixes the NettyIdleClientTimeoutSpec
  • Rename 'method' to 'field' in java akka docs (#6751)
  • [UFR] Refactor global state from TemporaryFileCreator
  • Add @unchecked to type match case.
  • Update Http.scala to support different properties
  • [UFR] Remove `Execution.internalContext` references
  • WIP Adds an Injectable trait to PlaySpecification
  • AhcWSRequest: Preserve query params order
  • [2.5.x]: Preserve headers, cookies, flash and session when gzipping
  • Honors the expiration time in DefaultSyncCacheApi
  • Remove global state from Multipart helpers
  • Update assembly.sbt
  • Update
  • WIP: adds a way to configure a supervision strategy in play #6872
  • Docs: validate and update external links
  • [WIP] Make Play-WS depend on playframework/play-ws
  • Improve global application configuration and handling
  • Add more details to migration guide
  • Remove global state from play.api.mvc.Security
  • Update docs with more information about sbt new
  • Removes global state from CSRF components
  • Add references to components in filters documentation
  • [2.5.x] parses the path and the query string from our uri (#6801) (#6803)
  • Provide global mechanism to specify application mode for logging
  • Redirect plain http to https filter
  • Clean up Assets global state
  • Make (spring) locale of current request available in validate()
  • [WIP] Provide a way to inject request-scoped dependencies in Guice
  • Refactoring play-jpa - Got rid of ThreadLocal
  • Improve Java app loader/provider
  • [WIP] Document new stubs and test helpers
  • [doc] Update WS timeout with examples
  • API to atomically move the files or fallback if not supported
  • Upgrade play-file-watch to 1.0.1
  • [doc] make combined-body-parser example compile
  • Fixed JNDI initial context initialisation
  • Enable HTTP Caching in Play WS
  • improve documentation for running evolutions using compile-time DI
  • WIP: Make JDBC work better with thread pools
  • reference messages.default in
  • Component lifecycle clarification in DI chapter of doc
  • #7050 added note on migrating deprecated Forms code
  • Added removeAll function in AsyncCacheApi to remove all values from cache
  • [WIP] Move from play.libs.Json to injectable ObjectMapper
  • NonBlockingAction
  • [WIP] Update for typed body play-ws RC2
  • Remove injector from Java compile time dependency injection components
  • [WIP] Add Java Embedded Server with Akka HTTP
  • [WIP] Set up cross-compile for sbt 1.0.0-M5
  • Set play.allowGlobalApplication=false by default
  • [WIP]: Create new Java BaseController without static methods
  • Add setting to configure max header value length in Akka HTTP Server
  • Changed import of "block-request" example in docs
  • Once more fix environment evolutions reader
  • Add getExistingFile(...) to Java Environment
  • Fix fileNamePattern example in docs
  • Prohibit putting null values into Sessions (#8114)
  • Validate redirect codes and avoid ambiguous references
  • Correct docs to use CompletableFuture.supplyAsync
  • Fix WS digest authorization for play 2.5.x
  • add jdk9 to CI
  • Add ConfigLoader macro
  • Nicer syntax for router.withPrefix
  • [WIP] Replaces Play's shutdown hook with Akka's CoordinatedShutdown
  • Added Caffeine Cache module and made it the default Cache
  • More HTTP/2 tests; test code refactoring
  • Introduce externalizeResourcesExcludes
  • make it possible to disable the assets jar
  • Update SecureFlagSpec to test HTTP/2
  • Bindables docs need improvement #7946
  • Fixes issue 5275 with java helper method for parsing json
  • Update
  • Update
  • Play 2.4 migration guide appearing in Play 2.6 documentation
  • [WIP] Java cache api should return Optional (like the scala api)
  • Constants should be final
  • Change Cache expire arg default value to Duration.Undefined (#6660)
  • Fix-issue-7788-Document usage of List in routes
  • docs: usage of List in routes
  • Don't assume developers are male
  • Upgrade netty and sbt-native-packager
  • gh-7105: Remove Play icons from default pages
  • add a way to read X-Forwarded-Proto in RedirectHttpsFilter
  • Added troubleshooting section for Heroku deployment
  • Move setAutoCommit call into try block
  • Fix add header for Java RequestHeader
  • [Proposal][WIP] Allow CIDRs in `play.filters.hosts.allowed` setting
  • Update ScalaWebSockets.scala
  • Update
  • [WIP] Content Security Policy Filter
  • Update sbt-header plugin and copyright headers
  • Update
  • Remove references to g8Scaffold
  • remove duplicate execution of action async block
  • Remove BoneCP (#8211)
  • Do not throw exception when trying to get a cookie that doesnt exist …
  • update guava to 24.0-jre
  • Removed request tags
  • Upgrade + rename Hibernate ORM
  • Allow serving of a "default asset" #7634
  • Upgrade Guice
playframework questions on Stackoverflow (View All Questions)
  • How to get Playframework to start running app in dev mode without making a request?
  • SBT 0.13.8 multi module project with Playframework 2.4.2
  • Testing playframework 2.4 with spring-data injection out of Eclipse IDE
  • Playframework 2.4.x configuration file includes
  • PlayFramework with Scala, WebJars, ReactJS and RequireJS?
  • playframework 2.0 using form data outside of a form
  • Playframework: JPA EntityManager merge function fails - does not use subjects member variable values
  • multipart form data with restAgular with playframework and java
  • PlayFramework 2.4, Actor injection issue: There is no started application
  • PlayFrameWork cannot override onHandlerNotFound
  • Hibernate and Playframework 1.2.4 : strange behaviour when querying member collection size
  • PlayFramework - Page Sort by last Entry of OneToMany Relationship
  • Playframework User Actor with User Session
  • msi installer for playframework 2.3.x
  • RESTful API for playframework project
  • PlayFramework Navigation Bar for Video Site
  • Playframework Routing
  • How are PlayFramework, Ebean and HickariCP all connected?
  • How to convert Observable to Promise in playframework java api
  • Package issues between controller and views using Form in PlayFramework
  • scala playframework json implicit case class conversion
  • Cache.getOrElse on Futures in Playframework
  • Playframework: How do I bind JSON to case class that contains a map?
  • Playframework forwarding json values to a form
  • playframework: persist java8 java.time type LocalDate with hibernate in Play
  • playframework javascript asset JSLint processing : info message "Javascript linting on x source(s)
  • Scala PlayFramework 2.3 setting up the configuration in a view
  • Websocket send data all client in playframework 2
  • PlayFramework: Get original request xml body as string
  • i18n and Forms with playframework 2.4.x using Java
playframework list of languages used
playframework latest release notes
2.6.11 2.6.11

The Play Team is pleased to announce the release of Play Framework 2.6.11. This is the latest stable release of Play.

Getting Play

  1. To start a new project, visit
  2. To upgrade an existing Play 2.6 project, edit your project/plugins.sbt file and set the sbt-plugin to 2.6.11.
  3. To update an older Play project, take a look at the Migration Guide.


See the full list of changes and the 2.6.11 milestone on GitHub. The changes include several backward-compatible bug fixes.


Thanks to the community for their detailed bug reports and contributions.

Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

Special thanks to the following contributors who helped with this release: Greg Methvin, Matthias Kurz, Eliot Chan, Marcos Pereira, Aidara Moussa, Sergey Chupov and Elijah Rippeth.

2.6.9 2.6.9
2.6.10 2.6.10
Other projects in Scala