Swiftpack.co - Package - apple/swift-nio-http2


This project contains HTTP/2 support for Swift projects using SwiftNIO. To get started, check the API docs.


swift-nio-http2 is a SwiftPM project and can be built and tested very simply:

$ swift build
$ swift test


Just like the rest of the SwiftNIO family, swift-nio-http2 follows SemVer 2.0.0 with a separate document declaring SwiftNIO's Public API.

swift-nio-http2 1.x

swift-nio-http2 versions 1.x are a pure-Swift implementation of the HTTP/2 protocol for SwiftNIO. It's part of the SwiftNIO 2 family of repositories and does not have any dependencies besides swift-nio and Swift 5. As the latest version, it lives on the master branch.

To depend on swift-nio-http2, put the following in the dependencies of your Package.swift:

.package(url: "https://github.com/apple/swift-nio-http2.git", from: "1.5.0"),

swift-nio-http2 0.x

The legacy swift-nio-http 0.x is part of the SwiftNIO 1 family of repositories and works on Swift 4.1 and newer but requires nghttp2 to be installed on your system. The source code can be found on the nghttp2-support-branch.

Developing SwiftNIO HTTP/2

For the most part, SwiftNIO development is as straightforward as any other SwiftPM project. With that said, we do have a few processes that are worth understanding before you contribute. For details, please see CONTRIBUTING.md in this repository.


Stars: 248
Help us keep the lights on



1.6.1 - Sep 12, 2019

SemVer Patch

  • remove hpack-test-case submodule (only used for integration tests) #156

1.6.0 - Sep 10, 2019

SemVer Patch

  • Allow adding a sequence of headeers to HPACKHeaders (#155, patch credit to @glbrntt)

SemVer Minor

  • fix dependencies: require NIO 2.3.0 (#154, reported by @glbrntt)
  • accept more valid-in-HTTP/1 but invalid-in-H2 messages (#153, reported by @Csloan7597)

1.5.0 - Aug 13, 2019

This patch contains security content: please update to it immediately.

Semver Minor

  • Added multiple denial of service resistance vectors, and APIs for controlling them. See https://github.com/apple/swift-nio-http2/security/advisories/GHSA-jchv-x857-q8fq for more. (https://github.com/apple/swift-nio-http2/commit/86ce1dcd0df501401eb1a0d445dbd90aaad84a64)

1.4.0 - Jul 22, 2019

Semver Minor

  • Added support for network-exerted backpressure to HTTP2Channel. (#142)

Semver Patch

  • Fixed an issue where servers sending a PUSH_PROMISE frame before HEADERS would cause streams to be reset. (#145)
  • Fixed an issue where unexpected per-stream frames would crash HTTP2ToHTTP1Codec. (#146)
  • Miscellaneous testing improvements. (#141)

1.3.0 - Jun 19, 2019

Semver Minor

  • Made HTTP2StreamID conform to Strideable. (#133)

Semver Patch

  • Fixed issue where promises for buffered outbound frames could be incorrectly lost when closing connections. (#135)
  • Improved performance by coalescing flushes from child channels in some circumstances. (#132)
  • Improved performance by minimising channelReadComplete calls. (#136)