Swiftpack.co - Package - vapor/vapor


Documentation Team Chat MIT License Continuous Integration Swift 5 Twitter

Vapor is a web framework for Swift. It provides a beautifully expressive and easy to use foundation for your next website, API, or cloud project.

Take a look at some of the awesome stuff created with Vapor.

💧 Community

Join the welcoming community of fellow Vapor developers on Discord.

🚀 Contributing

To contribute a feature or idea to Vapor, create an issue explaining your idea or bring it up on Discord.

If you find a bug, please create an issue.

If you find a security vulnerability, please contact security@vapor.codes as soon as possible.

💙 Code of Conduct

Our goal is to create a safe and empowering environment for anyone who decides to use or contribute to Vapor. Please help us make the community a better place by abiding to this Code of Conduct during your interactions surrounding this project.

🏫 Tutorials

The awesome Vapor community is always adding new tutorials and articles out there, Vapor University is a great place to get started!

👥 Backers

Support us with a monthly donation and help us continue our activities. [Become a backer]

🥇 Sponsors

Proudly sponsored by Nodes (🏅), Skelpo (🥉), and our Open Collective sponsors.


Michael Dominick



Stars: 16484
Help us keep the lights on


3.3.0 - Feb 28, 2019


  • Adds new supportCompression member to NIOServerConfig. When true, HTTP server will support gzip and deflate. (#1909)
  • ErrorMiddleware now checks for and utilizes ResponseEncodable conformance on errors. (#1875)

3.2.2 - Feb 15, 2019


  • Vapor Compatibility Suite: All PRs to vapor/vapor:3 will run against our new compatibility suite that verifies projects built on Vapor continue to compile and pass tests.
  • Submit your project here: https://forums.swift.org/t/vapor-compatibility-test-suite/20500


  • Reverted retain cycle fix that could cause Application to not deinit. (#1898).

3.2.1 - Feb 14, 2019

Edit: The changes in this tag have been reverted in 3.2.2.


  • Fixes a crash introduced in 3.2.0 when using req.client(). (#1896, #1895, #1894)

⚠️ This patch removes the Container.client() method.

Use the following instead:

let client = try container.make(Client.self)
let client: Client = try container.make()

Application, Request, and Response still have the client() method.

let res = try req.client().get("https://vapor.codes")

3.2.0 - Feb 12, 2019


  • Adds Request.hasSession() for checking if the request has an active session. (#1888)
  • Adds a new convenience Abort init that accepts AbortError and captures source info. (#1884)
  • Adds missing Debuggable properties to Abort. (#1824)


  • Fixed a retain cycle that could cause Application to not deinit. (#1878)
  • Edit: This fix has been reverted in 3.2.2

3.1.3 - Feb 7, 2019


  • Fixed an issue where WebSocket URLs would not be routed correctly. (#1882)
  • Fixed a non-deterministic test.