# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## \[7.8.0] - 2026-03-26 \[Supported]

### Fixed

* Fixes for Wireguard and IPSec protocol connection logic.
* Fixes for On Demand connection logic.
* Fixes for switching between protocols connection logic.
* Stability updates and fixes.

<details>

<summary>SHA-256 Checksum</summary>

71a6886dfda690d4546affb0fa05495b27b85b73663ec8d37d3f0bbc1516a283

</details>

## \[7.7.2] - 2026-01-20 \[Supported]

### Fixed

* Fix for login using external authentication token.

<details>

<summary>SHA-256 Checksum</summary>

ec2484599ca2bd0d88316f7b971390a12504d70152be9d72c8a97674d34764e7

</details>

## \[7.7.1] - 2025-12-11 \[Deprecated]

### Fixed

* Fix for the no traffic issue while using Hydra protocol with `disconnectOnSleep` disabled.

<details>

<summary>SHA-256 Checksum</summary>

4634d068eeba77761af8cdc0bbb9f85242d1fc7793aadf46b3446b4bfffd098b

</details>

## \[7.7.0] - 2025-11-21 \[Deprecated]

### Implemented

* Added capability to start the VPN in the on-demand only mode using the `policy` parameter in the `start` method.
* Added `activatedStartPolicy` property to check the currently active start policy.

### Updated

* The `onDemandConfiguration` parameter is now part of the `start` method. You can still use the parameter in the SDK configuration as long as you pass `nil` to the `start` method, but this is deprecated and will be removed in future versions.
* Hydra to 5.17.1
* Stability updates and fixes.

<details>

<summary>SHA-256 Checksum</summary>

34d13afe01d6715357d248d0854d4b4458d9f9c553dd5e02e725338324cdf023

</details>

## \[7.6.0] - 2025-10-23 \[Sunset]

### Implemented

* Extended `ModulesConfiguration` with `extensionConfigLoadTimeout` parameter.
* Extended `IPSecConfiguration` with `systemExtensionEncryptionKey` parameter.

### Updated

* Updates to security protection
* Stability updates and fixes.

<details>

<summary>SHA-256 Checksum</summary>

8ce73225bda154bf504a2a665108a433a8015b08ccf8b4a97a48c00deb7e5b44

</details>

## \[7.5.0] - 2025-09-19 \[Sunset]

### Updated

* New config API replaces remote config API for fetching connection related data before the start.
* The public remote config API is marked as deprecated and will be removed in future releases.

<details>

<summary>SHA-256 Checksum</summary>

15b382fee42b492485ee571ff62703953f8c7802c8e0107f6f028d674f5c71a0

</details>

## \[7.4.1] - 2025-08-18 \[Sunset]

### Implemented

* Added SDK configuration parameter, which is used as service name for storing password inside keychain.

<details>

<summary>SHA-256 Checksum</summary>

f9578f7260957f8b46dcb652ad11fc04fe8befdb51d5e3c9fcb5504377988db4

</details>

## \[7.4.0] - 2025-08-15 \[Sunset]

### Implemented

* Added methods for local CNL management (`loadCNL`, `updateCNL`, `clearCNL`)

### Updated

* Renamed `clientNetworkList` to `remoteClientNetworkListNew`
* Hydra state management improvements

### Fixed

* Problem when incorrect virtual location was used during non-app start in some cases

<details>

<summary>SHA-256 Checksum</summary>

60cb119a261afec92b2a4dd35d87f30e4b65858316815e0cd714ff552a719ee8

</details>

## \[7.3.0] - 2025-07-18 \[Sunset]

### Implemented

* `completionQueue` can be specified in the SDK initializer. All asynchronous API completion callbacks will be called on this queue. Default is `DispatchQueue.main`
* Hydra multi-packet write enabled

### Updated

* New `APIError` codes for Personal Bridge
* Logs time format changed to 24h
* Improves robustness of certain parts of the code in a multithreaded environment

### Fixed

* A problem when remote bypass lists were not loaded for Hydra protocol in some cases
* IPSec password keychain conflict on macOS which caused unnecessary system prompt

<details>

<summary>SHA-256 Checksum</summary>

124a5f5de216380df429d45d0506042f0f0d1a5c9b9b2754ad6b5b36272a3afd

</details>

## \[7.2.1] - 2025-06-09 \[Sunset]

### Fixed

* Missing interface change callback in some cases on network status update

<details>

<summary>SHA-256 Checksum</summary>

0c09c06e7e568af0dd9bf596e1327f0058a251d9afed38db958669c84b81a1d7

</details>

## \[7.2.0] - 2025-05-12 \[Sunset]

### Implemented

* `connectedServerCountry` and `connectedServerCity` properties added

### Updated

* minimum supported XCode 16.2+

<details>

<summary>SHA-256 Checksum</summary>

e81997b7ac91c6dbf2a87e9de94488206023206f209d65ff2431b9ee3f821455

</details>

## \[7.1.0] - 2025-04-17 \[Sunset]

### Implemented

* Personal Bridge feature support

### Updated

* Public access to `disconnectOnSleep` setting for the different protocols

<details>

<summary>SHA-256 Checksum</summary>

5dd92782f7eb6f1dddd81e3af375a51b7edb2d6cdace50a642dae3a4f1063fd9

</details>

## \[7.0.0] - 2025-04-08 \[Sunset]

### Implemented

* tvOS support (WireGuard only)
* Cached traffic counters for IPSec

### Updated

* Hydra to 5.13.4

<details>

<summary>SHA-256 Checksum</summary>

5e4159d76e4b93fd4979eb0eb0b1ddb15dfd75873743326e06bf077da31df75c

</details>

## \[6.9.7] - 2025-04-11 \[Sunset]

### Implemented

* Delegation of encryption key storing for macOS system extension case
* Hydra config logging to simplify debugging process

### Fixed

* IPSec traffic counters persistence to be consistent with other protocols

<details>

<summary>SHA-256 Checksum</summary>

f6aa7833d79ea62bd5209ff2643ed31b3f191143b983c00134deb4fdb79322fc

</details>

## \[6.9.6] - 2025-04-08 \[Sunset]

### Fixed

* Network observer does not detect wi-fi change
* Crash while connecting/disconnecting from VPN

### Updated

* Hydra to 5.14.1

<details>

<summary>SHA-256 Checksum</summary>

a968e8b895adb97130aef88bafa862338633044da16a570c5c312c873c37a114

</details>

## \[6.9.5] - 2025-03-11 \[Sunset]

### Updated

* Hydra to 5.13.5

<details>

<summary>SHA-256 Checksum</summary>

871896ce63726ff01598fd87c3bba528bbdd68102d4157f5f8070719982adcfb

</details>

## \[6.9.4] - 2025-03-06 \[Sunset]

### Implemented

* MTU setup for Network Extension

<details>

<summary>SHA-256 Checksum</summary>

3a9bc805fe791d4aab1cffac8a39d990aad35113343bcd2317637a51d5d100cd

</details>

## \[6.9.3] - 2025-02-06 \[Sunset]

### Fixed

* Missing token problem in multi-user environment (system extension version)

<details>

<summary>SHA-256 Checksum</summary>

2ab25f04be98888b83c780709abe5abffe542bc911306c66b679d260a292b49c

</details>

## \[6.9.1] - 2025-01-16 \[Sunset]

### Implemented

* External device id support added
* Remote hydra template fetching added

<details>

<summary>SHA-256 Checksum</summary>

f6903354200295335a8217f4f36c06c68f0f0a224fb31fbb1bb353deb06e162d

</details>

## \[6.9.0] - 2024-12-24 \[Sunset]

### Fixed

* Fireshield Inconsistencies and remote service isn't respected
* ComposedVPNSDK.hydraConnectedServerName returns wrong value if connectedServerIP is empty
* Hydra NE periodically hangs for few mins on start with killswitch enabled
* Server IP for Hydra is nil

### Updated

* Hydra to 5.13.0

<details>

<summary>SHA-256 Checksum</summary>

`ee86d5b2b11c8d6b5a6d7efd7b7b373ac8a11548900b6563a04460b314bab8fe`

</details>

## \[6.8.1] - 2024-11-15 \[Sunset]

#### Updated

* Hydra to 5.12.0

<details>

<summary>SHA-256 Checksum</summary>

`528b5270ac7c8c4dd8e0965ecb012c86476d31c6b787670ef272e90753e31ad2`

</details>

## \[6.8.0] - 2024-10-31 \[Sunset]

#### Implemented

* `applyLocationIfConnected(_:completion:)` moved to `VPNSDK` and available for Hydra and WireGuard (IPSec still throws error).
* `connectedServerCountry` and `connectedServerCity` properties have been added to `Credential`. `Credential` is also returned as a result in the `applyLocationIfConnected` method.
* `let logsCryptographicCredentials: CryptographicCredentials?` in `HydraConfiguration` and `WireguardConfiguration` along with `ComposedConfiguration` which allow developers to setup their own `CryptographicCredentials` to encode and decode logs.
* `LICENSE.md` file with proper license message to be used by developer in the applications.

#### Fixed

* Possible problem with ignoring the `includeAllNetworks` and `excludeLocalNetworks` flags when using the IPSec protocol.
* Possible problem with ignoring the `onDemand` rules when using the IPSec protocol.
* Possible problem with accessing local network connections with IKEv2 data leaks.

#### Updated

* WireGuard protocol library using WireGuardKit version `1.0.15-26` and Go version `go1.22.5 darwin/amd64` to address `go.o` malformed `LC_DYSYMTAB` warnings.

<details>

<summary>SHA-256 Checksum</summary>

`638c2cf45bd163017ab9e599afedaa92e84b206b9cb124c284cd62e84443989d`

</details>

## \[6.7.0] - 2024-09-26 \[Sunset]

#### Implemented

\- Add ability to `bypassAllExcept` specified domains are routed trough the VPN, and all other traffic bypasses the VPN.

#### Updated

\- Hydra to 5.11.0

#### Removed

\- Config API for refactoring including removal of `func requestCDMS(configs: [String], params: [String: String]) -> AnyPublisher<[CDMSConfig], Error>`

<details>

<summary>SHA-256 Checksum</summary>

`dc04a31e1f24fd7ec59417da53111aa07b9236fa2286ff329f17eb391961a702`

</details>

## \[6.6.0] - 2024-08-29 \[Sunset]

#### Updated

\- VPNState enum cases now mirror Apple's NEVPNStatus enum (.idle state renamed to .reasserting)

#### Fixed

\- Renamed \`stageHostURLs\` to \`hostURLs\` in all public configs (HydraConfiguration, IPSecConfiguration, WireguardConfiguration)

## \[6.5.0] - 2024-07-26 \[Sunset]

#### Fixed

\- Fixes a problem where the Hydra/WireGuard VPN connection could be dropped in some cases when the \`includeAllNetworks\` flag is enabled.

\- Fixes a problem where the VPN connection could not be started after a network change when the \`includeAllNetworks\` flag is enabled.

## \[6.4.0] - 2024-06-07 \[Sunset]

#### Implemented

\- Add ability to disable protocol type name via \`ModulesConfiguration\`, it's enabled by default.

\- Add ability to set \`includeAllNetworks\` and \`excludeLocalNetworks\` flags.

\- Update Hydra to 5.7.0.

#### Fixed

\- Fixes possible incorrect state in the IPSec stop completion call.

## \[6.3.0] - 2024-02-12 \[Sunset]

#### Implemented

\- Add \`preserveDeviceID\` function to preserver deviceID for the current user.

\- Add throwing of an error when SDK is unable to read/write to/from keychain.

## \[6.2.0] - 2024-01-25 \[Sunset]

#### Implemented

\- Implemented failure behaviour when TunnelProvider is unable to connect to the server. (\`ConnectionFailureBehaviour\`)

#### Fixed

\- Fixed error on first connection when using IPSec protocol.

## \[6.1.0] - 2023-11-30 \[Sunset]

#### Implemented

\- Added connection failure behavior option, by default is set to \`bypass\`.

#### Fixed

\- Fixed On-Demand setting on IPSec protocol.

## \[6.0.0] - 2023-10-26 \[Sunset]

#### Implemented

\- Added SDK configuration udpate ffunctions to update SDK without creating a newer instance.

#### Updated

\- Hydra updated with several crash fixes.

\- SDK Configurations updated, now each module configuration have own configuration (eg. OnDemandConfiguration).

\- \*\*WireguardTunnelProvider.xcframework\*\* is a static framework now and can be intergated in the same way as any other extension side framework (Like Hydra).

\- These steps are not needed anymore for WireGuard integration:

\- Link \*\*WireguardTunnelProvider.xcframework\*\* to Application target and set \**Embed & Sign*\* under Embed options.

\- Add \*\*WireGuardKit\*\* via Swift Package Manager (<https://git.zx2c4.com/wireguard-apple>) and link it to your Network Extension Target.

\- Create \*\*External build System\*\* target and set \`$(PROJECT\_DIR)/build\_wireguard\_go\_bridge.sh\` as build tool.

\- Add newly created target as Dependency for your Network extension target under Build phases target options.

\- \*\*NOTE:\*\* If you want to build WireGuard for macOS, please set \`SDKROOT\` option to \`macosx\` in Build Settings of your external build system target.

## \[5.9.0] - 2023-09-29 \[Sunset]

#### Updated

\- Improved encrypted logging.

\- Improved local storage.

## \[5.8.1] - 2023-08-31 \[Sunset]

#### Fixed

\- Fixed possible storage problems while using system extension.\\

## \[5.8.0] - 2023-08-25 \[Sunset]

#### Fixed

\- Fixed invalid token error after switching to IPSec protocol.

\_ *Fixed double calling of trafic exceeded delegate function.*

\- Fixed error on the first connection attempt.

#### Updated

\- Improved logging.\\

## \[5.7.1] - 2023-07-21 \[Sunset]

#### Fixed

\- Fixed crash during using RFC1918 detector with IPv6.\\

## \[5.7.0] - 2023-07-14 \[Sunset]

#### Implemented

\- Credential requests moved to network extensions to improve performance.

\- RFC1918 IP address detector.

\- Added stop reason to \`vpnWillStop\` delegate call.

\- Added ability to start VPN from the Settings.

#### Fixed

\- Killswitch loop with unsatisfied network path.

\- Added missing dsym files to dynamic frameworks.\\

## \[5.6.0] - 2023-05-22 \[Sunset]

#### Implemented

\- Add option to set \`stageHostURLs\` in Configuration.

\- \`BaseNetworkExtensionDelegate\` method \`vpnWillStop(availableRestartCompletion: ((\_ shouldRestart: Bool) -> Void)?)\` is changed to \`vpnWillStop(withError error: VPNTunnelError?, availableRestartCompletion: ((\_ shouldRestart: Bool) -> Void)?)\`. Update your delegate class in order to continue receive this message.\\

## \[5.5.1] - 2023-05-02 \[Sunset]

#### Implemented

\- \`VPNLogSharingHelper\` with static methods for easier logs sharing.\\

## \[5.5.0] - 2023-04-24 \[Sunset]

#### Implemented

\- Selection of node by category.

#### Updated

\- Update logs security.\\

## \[5.4.0] - 2023-04-10 \[Sunset]

#### Updated

\- Reduced WireGuard traffic exceed error delay.

#### Fixed

\- Fixed crash after reinstalling profile and trying to run VPN again while using system extension.\\

## \[5.3.1] - 2023-03-07 \[Sunset]

#### Implemented

\- macOS system extension support

#### Fixed

\- Possible problem with missing token on the tunnel provider side

\- Loading of domains from bypass list \\

## \[5.3.0] - 2022-02-01 \[Sunset]

#### Implemented

\- Add multihop feature

#### Fixed

\- Incorrect VPN state in completion while installing VPN profile

\- Possible fix for Hydra infinite connection loop while using killswitch\\

## \[5.2.2] - 2022-12-08 \[Sunset]

#### Updated

\- IPSec authornization improvements

\- Using data protection for keychain\\

## \[5.2.1] - 2022-11-24 \[Sunset]

#### Updated

\- Killswitch improvement

\- Removed Keychain Sharing to simplify integration.\\

## \[5.2.0] - 2022-10-26 \[Sunset]

#### Updated

\- Sensitive data security improved. Keychain Sharing capability now should be enabled in Xcode for application and network extension targets with the same keychain group.

\- Improved tunnel providers sleep handling.

#### Fixed

\- Fixed possible endless restart on traffic exceeded error in Hydra tunnel provider.\\

## \[5.1.1] - 2022-09-26 \[Sunset]

\## Updated

\- Added ability to set WireGuard session ping interval.

\- Added \`trafficExceeded\` tunnel error.\\

## \[5.1.0] - 2022-09-16 \[Sunset]

#### Updated

\- Added support of separate bypass domains for WireGuard protocol.

\- Removed custom hosts from user config.

#### Fixed

\- Fixed WireGuard exceeded traffic handling.

\- Fixed on-demand turning off using config.

\- Resolved some possible data race problems.\\

## \[5.0.0] - 2022-06-30 \[Sunset]

#### Implemented

\- Added WireGuard protocol.\\

## \[4.0.3] - 2022-04-11 \[Sunset]

#### Updated

\- Added missed Objc initializer in TrafficCounter.

\- Updated Hydra library with OpenSSL 1.1.1n \\

## \[4.0.2] - 2022-03-23 \[Sunset]

#### Updated

\- Added missed Objc error codes.

\- Fixed reconnecting issue while switching between protocols.\\

## \[4.0.1] - 2022-03-23 \[Sunset]

#### Implemented

\- Implemented performance test.

\- Added missed Objc error codes.

\- Fixed reconnecting issue while switching between protocols.\\

## \[4.0.0] - 2021-12-21 \[Sunset]

#### Updated

\- Added IPSec protocol.

\- Added Auto switcher between VPN protocols.

\- Added option for setting DNS for tunnel provider.

\- Fixed issue with memory usage in network extension.

\- Fixed several crashes in network extension.\\

## \[3.2.2] - 2021-10-09 \[Sunset]

#### Implemented

\- Implemented city support of virtual location.\\

## \[3.2.1] - 2021-15-07 \[Sunset]

#### Fixed

\- Fixed connection issue which can occur between switching networks with enabled killswitch.\\

## \[3.2.0] - 2021-26-04 \[Sunset]

#### Updated

\- Added macOS arm64 architecture.

\- Subscription extref field set as optional.

#### Fixed

\- Fixed bypassing issue when domains set to bypass as bypassDomains config value.\\

## \[3.1.9] - 2021-18-01 \[Sunset]

#### Fixed

\- Fixed crash issue with handling state notification from NEVPNProtocolIPSec.

#### Updated

\- Expanded VPNSDKError for better Objective-C compatibility.

\- Removed platform prefix from framework name. (example fro macOS platform "import VPNApplicationSDK" )\\

## \[3.1.8] - 2020-24-12 \[Sunset]

#### Implemented

\- Added support of host fallback, now setting host in the configuration is optional, fallback hosts could be configured via the dashboard, by default if none of the hosts are specified in HydraConfiguration, hardcoded hosts will be used.

#### Fixed

\- Fixed reconnecting issue which could occur right after calling start function from stop callback (POSIX error).\\

## \[3.1.7] - 2020-01-12 \[Sunset]

#### Fixed

\- Fixed merging policy issue between local and remote Fireshield config.\\

## \[3.1.6] - 2020-30-10 \[Sunset]

#### Fixed

\- Fixed issue with second DNS request added in iOS 14, which causes blocked sites to open.\\

## \[3.1.5] - 2020-25-09 \[Sunset]

#### Implemented

\- Using system DNS server if it not set in HydraConfiguration.

\- Added support of newer remote fierdshield config.

\- Added detailed logging system for the tunnel provider.\\

## \[3.1.4] - 2020-04-05 \[Sunset]

#### Fixed

\- Fixed the \`Connecting\` state issue which can occur right after updating from the older SDK (3.0.x) if the VPN connection was established.\\

## \[3.1.3] - 2020-08-04 \[Sunset]

#### Implemented

\- Implemented the KillSwitch feature.

When Hydra has occurred error and if the delegate method \`vpnWillStopWith:(nonnull void(^)(BOOL restart))completion\` is implemented, then until completion callback is called Hydra will run in the killswitch mode, please refer to the documentation about the restart parameter.

\- Implemented providing of the \`VirtualLocation\` in the callback of \`startVPN\` function.

#### Fixed

\- Fixed the receiving of Hydra state from proper \`VPNManger\` object.

\- Fixed issue with Fireshield when users unble to use netowkr messengers (stuck in the Connecting state).\\

## \[3.1.2] - 2020-11-03 \[Sunset]

#### Updated

\- Improved \`FireshieldController\` and Fireshield categories, implemented the possibility of adding custom categories to the fireshield.

\- Enabled BitCode support.

\- Added \`StartupOptions\` to the \`vpnWillStart\` delegate method.

\- Updated Hydra library with fixed whitelisting crash.\\

## \[3.1.1] - 2020-04-02 \[Sunset]

#### Updated

\- Updated Hydra library with added battery saving mode, which enables Fireshield is DNS-only mode, this option can be found in \`FireshieldConfig\`.\\

## \[3.1.0] - 2019-19-12 \[Sunset]

#### Impemented

\- Added ad-mob section to remote config.

#### Fixed

\- Fixed issue with parsing subscriber model during login.\\

## \[3.0.9] - 2019-31-10 \[Sunset]

#### Updated

\- Updated logic to update credentials during sleep to resolve issue with 196 error.

\- Disabled silentMode in Fireshield configuration, setting the Fireshield mode to .silent will not affect on the configuration.\\

## \[3.0.8] - 2019-09-09 \[Sunset]

#### Updated

\- Updated remote-config logic to resolve issue with alert-page.\\

## \[3.0.7] - 2019-09-09 \[Sunset]

#### Fixed

\- Fixed token migrating from previous version of SDK.\\

## \[3.0.6] - 2019-09-09 \[Sunset]

#### Updated

\- Updated logic in storing failed errors in network extension target.\\

## \[3.0.5] - 2019-05-09 \[Sunset]

#### Fixed

\- Fixed issue remote configuration mapping.\\

## \[3.0.4] - 2019-19-08 \[Sunset]

#### Fixed

\- Fixed issue with mapping RemainingTraffic object after spending all traffic.\\

## \[3.0.3] - 2019-01-08 \[Sunset]

#### Implemented

\- Implemented currentFireshieldMode variable in HydraSDK class

#### Fixed

\- Fixed issue with visible VPN icon when Fireshield mode is set to .silent

\- Fixed issue with FireshieldController variable assigment in Network Extension Delegate.\\

## \[3.0.2] - 2019-25-07 \[Sunset]

#### Implemented

\- Implemented deviceType variable in Hydra configuration.

#### Fixed

\- Fixed issue with Fireshield, that not blocking unsafe sites.

\- Fixed \`vpnDataCounterDidUpdate\` delegate method in network extension target.\\

## \[3.0.1] - 2019-22-07 \[Sunset]

#### Updated

\- Updated error message representation for connection error event report.\\

## \[3.0.0] - 2019-16-07 \[Sunset]

#### Implemented

\- Rewritten SDK in Swift and included analytics, with the ability to support multiple VPN protocols.\\

## \[0.4.17] - 2019-06-06 \[Sunset]

#### Fixed

\- Fixed issue with dynamic whitelist when after unblocking URL it still blocked.\\

## \[0.4.16] - 2019-04-25 \[Sunset]

#### Updated

\- Improved dynamic whitelist feature, added possibility to add/remove URL from list.

#### Fixed

\- Fixed issue with updating from older version of SDK to current without connection issues.

\- Fixed issue with bypass connection status after traffic exceed.\\

## \[0.4.15] - 2019-04-05 \[Sunset]

#### Updated

\- Improved dynamic whitelist feature

#### Added

\- Added support of remote bypass list feature

#### Fixed

\- Fixed issue with auto-reconnecting in onDemand mode if at first time connection not established\\

## \[0.4.14] - 2019-03-18 \[Sunset]

#### Added

\- Added fireshield controller to AFNetworkExtensionDelegate, to make dynamic changes into Fireshield white/black list\\

## \[0.4.13] - 2019-02-20 \[Sunset]

#### Added

\- Added traffic data counter delegate function to AFNetworkExtensionDelegate\\

## \[0.4.12] - 2019-02-13 \[Sunset]

#### Updated

\- Updated device id generation\\

## \[0.4.11] - 2019-01-31 \[Sunset]

#### Fixed

\- Fixed that bypass mode isn't working if bypass config variable set to true\\

## \[0.4.10] - 2018-12-12 \[Sunset]

#### Updated

\- Rewrited fireshield configuration, now it's more flexible

\- Implemented Remote config feature, now Hydra config can be overwritten via remote config\\

## \[0.4.9] - 2018-09-11 \[Sunset]

#### Fixed

\- Preparing connection state management\\

## \[0.4.8] - 2018-09-05 \[Sunset]

#### Updated

\- \`trafficCounters\` is now a read-only property

\- \`AFVPNCategorizationDidChangeNotification\` notification's user info now contains \`AFHydraCategorization\` object\\

## \[0.4.7] - 2018-08-09 \[Sunset]

#### Fixed

\- Completion block is called upon Permission Denied error\\

## \[0.4.6] - 2018-08-03 \[Sunset]

#### Updated

\- Public API improvements

\- \`updateConfig:\` can be used to change Fireshield mode and On Demand value\\

## \[0.4.5] - 2018-07-31 \[Sunset]

#### Fixed

\- Earlier NE delegate instantiation\\

## \[0.4.4] - 2018-07-24 \[Sunset]

#### Updated

\- Fireshield server response timeout fix (for cases, when Fireshield is not supported on the server-side)\\

## \[0.4.3] - 2018-07-24 \[Sunset]

#### Updated

\- \`vpnProfileName\` is now a required parameter for Hydra iOS SDK configuration\\

## \[0.4.2] - 2018-07-23 \[Sunset]

#### Updated

\- Small updates to public interface documentation\\

## \[0.4.1] - 2018-07-23 \[Sunset]

#### Updated

\- Put it all together\\

## \[0.4.0] - 2018-07-11 \[Sunset]

#### Added

\- Categorization service (aka Fireshield) client API\\

## \[0.3.9.21] - 2018-07-10 \[Sunset]

#### Fixed

\- Fix gaming issue\\

## \[0.3.9.20] - 2018-07-05 \[Sunset]

#### Fixed

\- Temp workaround for fast disconnected state that might be received from the SDK during Connecting\\

## \[0.3.9.19] - 2018-07-04 \[Sunset]

#### Fixed

\- Happy 4th of July!\\

## \[0.3.9.18] - 2018-07-03 \[Sunset]

#### Fixed

\- Fix "Disconnecting" state is sent after "Connecting" has been sent (via workaround, for now)\\

## \[0.3.9.17] - 2018-07-03 \[Sunset]

#### Removed

\- Revert to old approach, where SDK analyzes only last session's error and switches to bypass accordingly\\

## \[0.3.9.16] - 2018-07-03 \[Sunset]

#### Fixed

\- Fix "Disconnecting" state is sent after "Connecting" has been sent (more improvements)\\

## \[0.3.9.15] - 2018-07-02 \[Sunset]

#### Fixed

\- Fix "Disconnecting" state is sent after "Connecting" has been sent\\

## \[0.3.9.14] - 2018-06-22 \[Sunset]

#### Fixed

\- \`-isBypassEnabled\` now returns correct value\\

## \[0.3.9.13] - 2018-06-18 \[Sunset]

#### Added

\- SDK switches to bypass after numer of sessions with errors exceedes 3 (three). This behavior is only applied to configurations with On-Demand rules.\\

## \[0.3.9.12] - 2018-06-14 \[Sunset]

#### Fixed

\- Fix correctly handle traffic exceed (191) error\\

## \[0.3.9.11] - 2018-06-11 \[Sunset]

#### Added

\- Add \`-shouldStartVPN\` method

\- Add \`AFNEErrorCodeCancelled\` error

#### Fixed

\- Fix correctly handle token expired (196) error

#### Updated

\- Change \`-vpnDidStart\` to \`-vpnDidStartWithOptions:\` \\

## \[0.3.9.10] - 2018-06-01 \[Sunset]

#### Fixed

\- Fix vpnWillStop is called upon network interface change

\- Fix exception due to unbalanced KVO call\\

## \[0.3.9.9] - 2018-05-31 \[Sunset]

#### Fixed

\- Misc improvements macOS SDK\\

## \[0.3.9.8] - 2018-05-30 \[Sunset]

#### Added

\- Default willStop implementation of tunnel provider delegate\\

## \[0.3.9.7] - 2018-05-25 \[Sunset]

#### Fixed

\- Fix crash during hydra state logging\\

## \[0.3.9.6] - 2018-05-22 \[Sunset]

#### Added

\- GDPR support\\

## \[0.3.9.5] - 2018-05-22 \[Sunset]

#### Fixed

\- Fix \`Exception: +\[NSError neStopReason:]: unrecognized selector sent to class\`\\

## \[0.3.9.4] - 2018-05-22 \[Sunset]

#### Fixed

\- Update libHydra\\

## \[0.3.9.3] - 2018-05-10 \[Sunset]

#### Fixed

\- Fix invalid token error processing\\

## \[0.3.9.2] - 2018-05-09 \[Sunset]

#### Fixed

\- Update libHydra

\- Fix VoIP Issue\\

## \[0.3.9.1] - 2018-05-05 \[Sunset]

#### Added

\- Added support for code 186

#### Fixed

\- Updated libhydra to the latest patch version fixing upload issue\\

## \[0.3.9] - 2018-04-19 \[Sunset]

#### Fixed

\- Prevent multiple startVPN calls

\- Fixed sleepTunnel.. call in NetworkExtension - shouldn't generate crash on tunnel sleep anymore\\

## \[0.3.8] - 2018-04-10 \[Sunset]

#### Added

\- PKI support is enabled by default

\- Timezone support for login method to make traffic counting more precise\\

## \[0.3.7] - 2018-04-03 \[Sunset]

#### Added

\- VPN protocol library versioning

#### Removed

\- IDFA usage is removed from both UCR and HydraSDK

\### Updated

\- UCR library updated\\

## \[0.3.6] - 2018-03-30 \[Sunset]

#### Fixed

\- Updated VPN protocol library\\

## \[0.3.5] - 2018-03-15 \[Sunset]

#### Added

\- Added vpnProfileName property to AFConfig allowing to set VPN profile name visible in iOS Settings > VPN\\

## \[0.3.4] - 2018-02-13 \[Sunset]

#### Changed

\- On-demand is now configured with NetworkExtension API

#### Fixed

\- String config parameters are now copied by default

#### Removed

\- Removed AFOnDemandRules\\

## \[0.3.3] - 2018-02-07 \[Sunset]

#### Fixed

\- Fixed an issue when bypass mode switched back to non-bypass in out of traffic situation\\

## \[0.3.2] - 2018-01-20 \[Sunset]

#### Added

\- Improved Swift compatibility\\

## \[0.2.9] - 2017-11-14 \[Sunset]

#### Fixed

\- VPN on-demand issues when network was changed between WiFi and Cellular\\

## \[0.2.8] - 2017-11-09 \[Sunset]

#### Fixed

\- Fixed issue that caused network extension to crash with on-demand rules enabled\\

## \[0.2.7] - 2017-11-06 \[Sunset]

#### Fixed

\- Minor fixes and improvements\\

## \[0.2.6] - 2017-11-03 \[Sunset]

#### Fixed

\- Minor fixes and improvements\\

## \[0.2.5] - 2017-10-20 \[Sunset]

#### Added

\- Added on-demand mode (See AFConfig / AFConfigBuilder, AFOnDemandRules)

\- Added SDK version (AFHydraVersion constant)

#### Changed

\- Changed startVpn and startVpnWithCountry callback parameters, now including AFCountry instance VPN connected to

\- Added optional \`installVpnProfile\` function to better control VPN installation flow for tutorial purposes

#### Fixed

\- Fixed issue when VPN couldn't disconnect automatically on WiFi change

\- Improved Swift compatibility


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://pango.gitbook.io/paas/sdk/unified-vpn-sdk-for-apple/changelog.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
