💧 A server-side Swift HTTP web framework.

What's New

Provide async closures in XCTVapor

This patch was authored by @AndreYonadam and released by @0xTim.

This adds the ability to perform asynchronous work in the beforeRequest and afterResponse closures in XCTVapor.


try await app.test(.GET, "/hello", beforeRequest: { req async throws in
  let currentUsersCount = try await User.query(on: app.db).count()
}, afterResponse: { res async throws in
  let newUsersCount = try await User.query(on: app.db).count()


Documentation Team Chat MIT License Continuous Integration Swift 5.2 Twitter

Vapor is an HTTP 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 as soon as possible.

💛 Sponsors

Support Vapor's development by becoming a sponsor.

Broken Hands Monstarlab Transeo omrd Jari MacStadium

💚 Backers

Support Vapor's development by becoming a backer.



  • Swift Tools 5.2.0
View More Packages from this Author


Last updated: Tue May 17 2022 13:48:50 GMT-0500 (GMT-05:00)