Skip to content

FAQ Licensing and Support

Husnain Ali edited this page Sep 27, 2026 · 3 revisions

FAQ, Licensing and Support

FAQ

Why not just use Alamofire or plain URLSession? Use whichever fits. URLSession is the right choice for simple needs. Alamofire is a mature, broadly adopted open-source library. SwiftNetworkKit exists for teams that want the specific combination of actor-based single-flight token refresh, drop-in certificate pinning, an offline replay queue, request deduplication, and a shipped mock transport, in one zero-dependency package under a single owner. It is source-available proprietary, not open source.

Does it support Linux or Windows? Linux is built and the full test suite runs on it in CI (Swift 6.1, Foundation subset). PKCE works there via the pure-Swift SHA-256 fallback. Security / Network-backed features (certificate pinning, KeychainTokenStorage, PathNetworkMonitor) are Apple-only and compile out; bring your own TokenStorage / NetworkMonitor on Linux. Windows is untested.

Can I use it in a SwiftUI app that targets iOS 16? Yes. The whole library builds and runs on iOS 16. Only the NetworkResource / Paged @Observable helpers require iOS 17 (they are @available-gated). On iOS 16, drive state with your own view models over the async API, as the SwiftUI demo does.

Why is certificate pinning opt-in? Pinning that is on by default causes outages when a certificate rotates unexpectedly. Making it a deliberate one-line choice, with multi-pin rotation support and a record-only discovery mode, is safer for most apps. See Security and Certificate Pinning.

Do I have to use the token refresh, cache, or offline queue? No. Everything beyond a plain request is opt-in through NetworkConfiguration or per-endpoint overrides. A minimal client is just NetworkClient(configuration: NetworkConfiguration(baseURL:)).

Why source-available and not MIT? The owner wants the library usable in any app, including commercial ones, while keeping it a single canonical project: no public forks, rebrands, or competing repackages. See Licensing below.

Is Swift Testing required to consume the package? No. The package's own tests use Swift Testing (Xcode 16+), but they are internal. Consuming apps can be on any toolchain that supports Swift 6.

Licensing

SwiftNetworkKit is source-available proprietary software, Copyright (c) 2026 Husnain Ali. All rights reserved. It is not open source.

You may

  • Read and study the source.
  • Add it as a dependency and compile it into your own applications, including commercial ones, and ship those applications with the library embedded in compiled form.
  • Use it for development, testing, evaluation, and CI.
  • File issues, feature requests, and discussion.

You may not

  • Redistribute the source code as a standalone library, package, template, or sample.
  • Publish, host, mirror, or publicly fork the repository or any substantial part of it.
  • Rename, rebrand, or re-release it under your own name or any name other than the Owner's, or present it as your own work.
  • Build a competing networking library or SDK substantially derived from it.
  • Remove copyright or license notices, or sublicense it.

Contributions (pull requests) are welcome, but by submitting one you assign all rights in it to the Owner; the codebase stays solely the Owner's property. Full terms in LICENSE in the repo. For redistribution, OEM, or white-label permission, contact the Owner. This is not legal advice.

Getting support

If you want to Then
Ask how to do something with SwiftNetworkKit, discuss best practices, or float a feature idea Open a thread in GitHub Discussions
Ask a general Swift / URLSession / HTTP question not specific to this package Stack Overflow or the Swift Forums
Report a bug Open a GitHub issue using the bug template, with your OS/Xcode versions and a minimal reproduction
Request a feature Start a Discussion first; if there is agreement, open an issue with the feature template
Report a security vulnerability Do not open a public issue. Follow SECURITY.md (private advisory or email)
Contribute code Read CONTRIBUTING.md first; discuss non-trivial changes in Discussions before opening a pull request

Clone this wiki locally