# Release History

## Current release

<table><thead><tr><th width="484">Product</th><th>Version</th></tr></thead><tbody><tr><td><a href="../../getting-started/getting-started#appfiguratese-macos-and-windows-app">AppfigurateSE macOS app</a></td><td>4.0.0</td></tr><tr><td>    <a href="../../getting-started/getting-started#appfiguratese-macos-and-windows-app">Appfigurate app for iOS Simulators</a></td><td>4.0.0</td></tr><tr><td><a href="../../getting-started/getting-started#appfigurate-app-for-physical-ios-devices">Appfigurate app for physical iOS devices</a></td><td>4.0.0</td></tr><tr><td><a href="../../getting-started/ios-native-app-integration#integration-methods">Appfigurate library for iOS and watchOS</a></td><td>4.0.2</td></tr><tr><td>    <a href="../../getting-started/examples#swift-example">Swift example</a></td><td>4.0.0</td></tr><tr><td>    <a href="../../getting-started/examples#objective-c-example">Objective-C example</a></td><td>4.0.0</td></tr><tr><td><a href="../../getting-started/flutter-integration#modify-pubspec.yaml">Appfigurate library for Flutter</a></td><td>4.0.2</td></tr></tbody></table>

## Release history

## 5.0.0 - Coming soon

{% hint style="danger" %}
Appfigurate app for physical **Android** devices, Appfigurate app for **Android** Emulator, **Android** pre-packaged apps for real device cloud testing services and the AppfigurateSE **Windows** app **have been withdrawn from sale and are no longer available**.
{% endhint %}

{% hint style="success" %}
Appfigurate app for physical **iOS** devices, Appfigurate app for **iOS** Simulator, **iOS** pre-packaged apps for real device cloud testing services and the AppfigurateSE **macOS** app continue to be fully supported, developed and maintained.
{% endhint %}

* **App:** Bug fixes.
* **SDK:** SwiftUI enhancements to Appfigurate Library for iOS and watchOS:
  * New `.configurationView` modifier for displaying a overridden configuration label (previously you would have used a UIKit `APLConfigurationLabel`).&#x20;
  * New `APLConfigurationUpdatedNotificationName` for use in an `.onReceive` modifier (instead of/in addition to using `APLAddConfigurationUpdatedListener` and `APLAddConfigurationUpdatedBlock` methods). e.g.

```
.onReceive(NotificationCenter.default.publisher(for: APLConfigurationUpdatedNotificationName)) { _ in
  ...
}
```

* **SDK:** Appfigurate Library has been internally rewritten in Swift. This *may* require you to add an initialiser to your existing Swift `APLConfiguration` subclass. Usage of Appfigurate Library from Objective-C continues to be supported.
* **SDK:** SwiftExample updated to use SwiftUI.
* **SDK:** watchOS minimum target raised to 8.0.
* **SDK:** Updated documentation on integrating with connected scenes.

#### Requirements

* **Xcode:** 26.2+, **Minimum deployment target:** iOS 15.0, watchOS 8.0
* **Flutter:** 3.41.4+ (Dart 3.11.1+)

## 4.0.0 - 8 Sep 2025

* **App:** Locally override [third party remote provider](https://docs.electricbolt.co.nz/getting-started/third-party-remote-configuration-providers) configuration/feature toggles/flags. Tested and documented providers include [Firebase Remote Config](https://docs.electricbolt.co.nz/getting-started/third-party-remote-configuration-providers/firebase-remote-config) and [Launch Darkly](https://docs.electricbolt.co.nz/getting-started/third-party-remote-configuration-providers/launch-darkly).
* **App:** The [Configure app](https://docs.electricbolt.co.nz/appfigurate-user-guide/configure-app) screen now displays an additional header label if the app has remote properties. The label is either "App has received remote config" or "App is using default remote config". If the label says "App is using default remote config" and you are expecting non default values to be displayed, re-run your app and give it some time to allow the third party remote configuration provider to update itself. Then try again.
* **App:** Change multiple list property values at the same time by [selecting an environment](https://docs.electricbolt.co.nz/configuration-subclasses/environment-tags). e.g. Dev, Test, PVT.
* **App:** Properties in the [Configure app](https://docs.electricbolt.co.nz/appfigurate-user-guide/configure-app) screen are now sorted by alphabetical order.
* **App:** Filter by value name on property list screen.
* **App:** You can no longer [Add a new watchOS app](https://docs.electricbolt.co.nz/appfigurate-user-guide/add-app). Instead [Duplicate](https://docs.electricbolt.co.nz/appfigurate-user-guide/edit-app#duplicate-app) the companion iOS app to create a new watchOS app using the same public/private keypair.
* **SDK:** Appfigurate Library no longer supports having an iOS and watchOS app using different public/private key pairs. Instead the watchOS app must be changed to use the iOS companion app's public/private key pair. The `ENCRYPTED_STRING_IOS_WATCHOS` function/macro has been removed. See the [upgrade guide](https://docs.electricbolt.co.nz/getting-started/upgrade-guide/v3.2.1-to-v4.0.0) for migration guidance.
* **SDK:** Added [`@RemoteBoolProperty`](https://docs.electricbolt.co.nz/configuration-subclasses/supported-property-types#remote-properties), [`@RemoteIntPropertyEdit`](https://docs.electricbolt.co.nz/configuration-subclasses/supported-property-types#remote-properties), [`@RemoteDoublePropertyEdit`](https://docs.electricbolt.co.nz/configuration-subclasses/supported-property-types#remote-properties) and [`@RemoteStringPropertyEdit`](https://docs.electricbolt.co.nz/configuration-subclasses/supported-property-types#remote-properties) annotations/property wrappers to support third party remote provider configuration/feature toggles/flags.
* **SDK:** [Swift example](https://docs.electricbolt.co.nz/getting-started/examples#swift-example), [Objective-C example](https://docs.electricbolt.co.nz/getting-started/examples#objective-c-example), [Kotlin example](https://docs.electricbolt.co.nz/getting-started/examples#kotlin-example) and [Java example](https://docs.electricbolt.co.nz/getting-started/examples#java-example) repositories updated to demonstrate environment tags and third party remote configuration provider integration (Firebase Remote Config).
* **App:** Appfigurate Emulator for Android now requires a device with provisioned expanded storage (which is the default behaviour when configuring Android Virtual Devices). The database of app metadata records is migrated from internal storage to external storage on first use.
* **AppfigurateSE:** The Appfigurate Emulator for Android, [Sync database](https://docs.electricbolt.co.nz/legal/broken-reference) feature no longer requires adb daemon root access. This allows for easier installation and testing of Google Play Services system images.

#### Requirements

* **Xcode:** 16.4+, **Minimum deployment target:** iOS 15.0, watchOS 5.0
* **Android Studio:** Narwhal 2025.1.1+,  **IntelliJ:** 2025.1+, **Minimum API level:** Android 26 (Marshmallow 8.0)&#x20;
* **Flutter:** 3.32.5+ (Dart 3.8.1+)

## 3.2.2 - 3 July 2025

* **SDK:** [Appfigurate Flutter Plugin](https://docs.electricbolt.co.nz/getting-started/flutter-integration#modify-pubspec.yaml) now supports Swift Package Manager (as well as the existing Cocoapods integration). Please read <https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-app-developers> to enable.
* **SDK:** [Android Flutter example](https://docs.electricbolt.co.nz/getting-started/examples#flutter) modernised to use a Kotlin Gradle build script file.

#### Requirements

* **Xcode:** 16.4+, **Minimum deployment target:** iOS 13.0, watchOS 5.0
* **Android Studio:** Narwhal 2025.1.1+,  **IntelliJ:** 2025.1+, **Minimum API level:** Android 26 (Marshmallow 8.0)&#x20;
* **Flutter:** 3.32.5+ (Dart 3.8.1+)

## 3.2.1 - 29 November 2024

* **SDK:** iOS AppfigurateLibrary.xcframework now includes enhanced automation testing functionality:
  * [Apply and read configuration](https://docs.electricbolt.co.nz/automation-testing/ios-native-app-automation-testing#applying-configuration-at-runtime-to-the-app-under-test) from the app under test, at runtime.
  * [Invoke functionality](https://docs.electricbolt.co.nz/automation-testing/ios-native-app-automation-testing#instrument-the-app-under-test) in the app under test, at runtime.
* **SDK:** Appfigurate [Flutter plugin](https://docs.electricbolt.co.nz/getting-started/flutter-integration#modify-pubspec.yaml) for Mobile Flutter apps updated to include latest iOS AppfigurateLibrary.xcframework.
* **SDK:** [Objective-C example](https://docs.electricbolt.co.nz/getting-started/examples#objective-c-example) and [Swift example](https://docs.electricbolt.co.nz/getting-started/examples#swift-example) updated to demonstrate enhanced automation testing functionality.
* **SDK:** [Java example](https://docs.electricbolt.co.nz/getting-started/examples#java-example) and [Kotlin example](https://docs.electricbolt.co.nz/getting-started/examples#kotlin-example) updated to Android Studio Ladybird 2024.2.1 Patch 2.

## 3.2.0 - 24 July 2024

* **App:** Improved performance on the configuration screen, including refreshed design.
* **App:** Filter by property name on configuration screen.
* **App:** Access help from most screens in the app.
* **App:** General bug fixes.
* **AppfigurateSE:** Support for pre-packaging your local database of app metadata records with the iOS or Android physical device builds, and uploading it to supported [real device cloud testing services](https://docs.electricbolt.co.nz/appfigurate-se-user-guide/real-device-cloud-testing-services) (currently BrowserStack App Live).
* **AppfigurateSE:** [Windows 10 compatible version of AppfigurateSE](https://docs.electricbolt.co.nz/appfigurate-se-user-guide/introduction#windows-installation) is now available, which has all of the functionality of the macOS version with the exception of Apple specific features [Setup iOS Simulator app](https://docs.electricbolt.co.nz/appfigurate-se-user-guide/setup-ios-simulator-app) and [Xcode Source Editor Extension](https://docs.electricbolt.co.nz/appfigurate-se-user-guide/xcode-source-editor-extension).

## 3.1.4 - 9 July 2024

* **SDK:** iOS and watchOS AppfigurateLibrary.xcframework resigned (Electric Bolt Limited, KLCLPVKM8C). No other changes applied.

## 3.1.3 - 25 February 2024

* **SDK:** iOS and watchOS AppfigurateLibrary.xcframework is now signed (Electric Bolt Limited, KLCLPVKM8C) and includes an embedded [PrivacyInfo.xcprivacy](https://docs.electricbolt.co.nz/additional-reading/security/privacyinfo.xcprivacy) file.
* **SDK:** The [Swift Example](https://docs.electricbolt.co.nz/getting-started/examples#swift-example) and [Objective-C Example](https://docs.electricbolt.co.nz/getting-started/examples#objective-c-example) apps now use Swift Package Manager to automatically use the latest version of AppfigurateLibrary.xcframework.
* **SDK:** Appfigurate [Flutter plugin](https://docs.electricbolt.co.nz/getting-started/flutter-integration#modify-pubspec.yaml) for Mobile Flutter apps updated to include latest iOS AppfigurateLibrary.xcframework.

#### Requirements

* **Xcode:** 15.2+, **Minimum deployment target:** iOS 13.0, watchOS 5.0
* **Android Studio:** Electric Eel 2022.1.1+,  **IntelliJ:** 2022.3+, **Minimum API level:** Android 26 (Marshmallow 8.0)&#x20;
* **Flutter:** 3.10.0+ (Dart 3.0.0+)

## 3.1.2 - 31 August 2023

* **App:** Bug fixes - Property with string text fields increased from 16 to 250 characters.
* **App:** Bug fixes - Catch exception thrown from decryption of incorrect ENCRYPTED\_STRING value.
* **App:** Bug fixes - Display actual decryption error on Apply App screen.
* **App:** iOS bug fixes - Crash after sending email.

#### Requirements

* **Xcode:** 14.3+, **Minimum deployment target:** iOS 13.0, watchOS 5.0
* **Android Studio:** Electric Eel 2022.1.1+,  **IntelliJ:** 2022.3+, **Minimum API level:** Android 26 (Marshmallow 8.0)&#x20;
* **Flutter:** 3.10.0+ (Dart 3.0.0+)

## **3.1.1 - 2 June 2023**

* **App:** iOS bug fixes - Applied app configuration was not being kept for 7 days.
* **App:** Android bug fixes - Reliability improvements for launching Android apps from Appfigurate.

#### Requirements

* **Xcode:** 14.2+, **Minimum deployment target:** iOS 13.0, watchOS 5.0
* **Android Studio:** Electric Eel 2022.1.1+,  **IntelliJ:** 2022.3+, **Minimum API level:** Android 26 (Marshmallow 8.0)&#x20;
* **Flutter:** 3.10.0+ (Dart 3.0.0+)

## **3.1.0 - 27 May 2023**

* **App:** Bug fixes.
* **SDK:** Support for [automation testing Android apps](https://docs.electricbolt.co.nz/legal/broken-reference) using Espresso.
* **SDK:** Improved algorithm for launching Android apps from Appfigurate (by task id).
* **SDK:** [Appfigurate Emulator for Android](https://docs.electricbolt.co.nz/legal/broken-reference) when running on Apple Silicon based Mac computers now only contains arm64 architecture slice for a smaller download size.
* **SDK:** [Appfigurate Emulator for Android](https://docs.electricbolt.co.nz/legal/broken-reference) when running on Intel based Mac computers now contains additional x86\_64 architecture slice (along with existing arm64 and armv7) for better compatibility with later Android versions.
* **AppfigurateSE:** Bug fixes.

#### Requirements

* **Xcode:** 14.2+, **Minimum deployment target:** iOS 13.0, watchOS 5.0
* **Android Studio:** Electric Eel 2022.1.1+,  **IntelliJ:** 2022.3+, **Minimum API level:** Android 26 (Marshmallow 8.0)&#x20;
* **Flutter:** 3.10.0+ (Dart 3.0.0+)

## **3.0.0 - 3 March 2023**

#### **Release notes**

* **App:** Now available for Android Emulator and physical devices.
* **App:** Upgrading to Appfigurate 3.0.0 from a previous version converts the database to a new format, therefore downgrading to an earlier version is not possible.
* **App:** Appfigurate can no longer be used to apply configuration remotely.
* **App:** Multipeer import/export is no longer available. Use the [iOS Share Sheet](https://docs.electricbolt.co.nz/appfigurate-user-guide/settings/backup#ios-share-sheet) to Airdrop `.apc` files to another device instead.
* **SDK:** The `APLConfiguration customIdentifier` method is no longer supported and you should remove any subclass implementations.
* **SDK:** New [Java](https://docs.electricbolt.co.nz/getting-started/examples#java-example), [Kotlin](https://docs.electricbolt.co.nz/getting-started/examples#kotlin-example) and [Flutter](https://docs.electricbolt.co.nz/getting-started/examples#mobile-flutter) examples.
* **SDK:** New [Appfigurate Library for Android](https://docs.electricbolt.co.nz/legal/broken-reference), distributed in an AAR format supporting both Java and Kotlin languages.
* **SDK:** New Appfigurate [Flutter plugin](https://docs.electricbolt.co.nz/getting-started/flutter-integration#modify-pubspec.yaml) for Mobile Flutter apps (iOS and Android).
* **SDK:** AppfigurateLibrary.xcframework for watchOS now contains arm64 architecture alongside the existing arm64\_32 and armv7k for physical devices.
* **AppfigurateSE:** [Appfigurate Simulator for iOS](https://docs.electricbolt.co.nz/appfigurate-se-user-guide/setup-ios-simulator-app) and [Appfigurate Emulator for Android](https://docs.electricbolt.co.nz/legal/broken-reference) are now included in the AppfigurateSE macOS app, and have easy 1 click installation. You no longer have to build the Appfigurate Simulator app in Xcode to deploy.
* **AppfigurateSE:** Is now a [direct download](https://docs.electricbolt.co.nz/getting-started/getting-started#appfiguratese-macos-app) instead of through the Mac App Store, and is using the hardened runtime and is notarised by Apple. The app is available in either a x86\_64 binary for Intel based Mac computers or an arm64 binary for Apple Silicon based Mac computers. You must download the correct binary that matches your computers architecture.

#### Known issues

* If the app icon in a watchOS app is compiled into an Assets.car file, it won't be made available to Appfigurate and the default placeholder icon will be used instead.

#### Requirements

* **Xcode:** 14.0+, **Minimum deployment target:** iOS 13.0, watchOS 5.0
* **Android Studio:** Electric Eel 2022.1.1+,  **IntelliJ:** 2022.3+, **Minimum API level:** Android 26 (Marshmallow 8.0)&#x20;
* **Flutter:** 3.3.10+ (Dart 2.18.6+)

## **2.2.1 - 30 March 2022**

#### **Release notes**

* **SDK:** Bug fix for iOS Extensions and watchOS Intent Extensions to read the current APLConfiguration from shared keychain.

#### Requirements

* **Xcode:** 13.2+, **Minimum deployment target:** iOS 10.0, watchOS 3.0

## **2.2.0 - 19 October 2021 (Updated)**

#### **Release notes**

* **Xcode:** Tested for compatibility with Xcode 13

#### Requirements

* **Xcode:** 12.4+, **Minimum deployment target:** iOS 10.0, watchOS 3.0

## **2.2.0 - 17 March 2021**

#### **Release notes**

* **SDK:** Removal of `APLConfigurationClass` from `Info.plist` for increased reliability and faster startup time of your app. You must add an implementation of the `APLConfigurationClass` function into your app as per the prototype in `Appfigurate.h`, otherwise a linker error will be issued. The suggested location is to place this function at the end of your `APLConfiguration` subclass file.
* **App:** Output Objective-C implementation now includes APLConfigurationClass() function (≡ ‣ \[App name] ‣ OBJ-C LIBRARY INTEGRATION section ‣ Output implementation).
* **App:** Output Swift implementation now includes APLConfigurationClass() function (≡ ‣ \[App name] ‣ SWIFT LIBRARY INTEGRATION section ‣ Output implementation).
* **App:** Output Info.plist snippet no longer includes APLConfigurationClass declaration (≡ ‣ \[App name] ‣ OBJ-C/SWIFT LIBRARY INTEGRATION section ‣ Output Info.plist snippet).

#### Requirements

* **Xcode:** 12.4+, **Minimum deployment target:** iOS 10.0, watchOS 3.0

## **2.1.1 - 14 March 2021**

#### **Release notes**

* **App:** Due to incomplete emulation of iOS in macOS Big Sur on Apple Silicon, Appfigurate can not be downloaded from the App Store and run as an iOS App on macOS app. Appfigurate App Store continues to function on a real iPhone, iPod or iPad device.
* **SDK:** Due to incomplete emulation of iOS in macOS Big Sur on Apple Silicon, Appfigurate Library will ignore any attempted configuration changes when *your* app is run as an iOS app on macOS. Appfigurate Library continues to function on a real iPhone, iPod, iPad or Simulator device.
* **SDK:** For `SwiftExample/Common/ExampleConfiguration.swift` removed use of `#if DEBUG` active compliation condition and replaced with `ENCRYPTED()` function. Online documentation also updated to remove Step 2: DEBUG active compilation condition.
* **SDK:** Moved SwiftExample and ObjCExample into their own repositories.

#### Requirements

* **Xcode:** 12.4+, **Minimum deployment target:** iOS 10.0, watchOS 3.0

## **2.1.0 - 27 September 2020**

#### **Release notes**

* **App:** Full Apple Silicon support - Appfigurate Simulator now contains arm64 architecture alongside existing i386 and x86\_64 architectures.
* **App:** Fix broken multipeer import/export on OS 14.

#### Requirements

* **Xcode:** 12.0+, **Minimum deployment target:** iOS 10.0, watchOS 3.0

## **2.0.2 - 17 September 2020**

#### **Release notes**

* **App:** Changes required for compatibility with iOS 14
* **SDK:** Adds support for Swift Package Manager. Existing integration technologies (Manual, Carthage, Cocoapods) continue to be available.
* **SDK:** Appfigurate Library security enhancements - digital signature verification of applied configuration via secure enclave on eligible devices.
* **SDK:** Partial Apple Silicon support - Appfigurate Library contains arm64 architecture for iOS and watchOS Simulators. A future release will support running Appfigurate Simulator on Apple Silicon Macs.

#### Requirements

* **Xcode:** 12.0+, **Minimum deployment target:** iOS 9.0, watchOS 3.0

## **2.0.1 - 13 July 2020**

#### **Release notes**

* **AppfigurateSE:** Bug fix.

#### Requirements

* **Xcode:** 11.5+, **Minimum deployment target:** iOS 9.0, watchOS 3.0

## **2.0.0 - 21 June 2020**

#### **Release notes**

* **SDK:** Full support of Swift 5.2+ using property wrappers.
* **SDK:** Appfigurate Library requires Swift to be linked to your target.
* **SDK:** Appfigurate Library is now distributed as a single static XCFramework rather than separate `libAppfigurateLibrary.a` (iOS) and `libAppfigurateLibraryWatch.a` (watchOS) static libraries.
* **SDK:** Example apps are now available in both Objective-C and Swift, and have been updated to support `UIWindowScene` (multiple windows) on iPadOS 13+.
* **SDK:** Your APLConfiguration subclass must now be specified in the `Info.plist` item `APLConfigurationClass`. Swift `APLConfiguration` subclasses may use unicode characters.
* **SDK:** Appfigurate Library no longer supports swizzling `UIApplicationDelegate` or `WKExtensionDelegate`. Instead you must programmatically call `APLApplicationDidFinishLaunchingWithOptions`, `APLApplicationDidFinishLaunching` and `APLApplicationOpenURL` at the appropriate times.
* **SDK:** `APLConfiguration` subclass properties and executable actions can now be marked as requiring an app restart when they change.
* **SDK:** Appfigurate Library now works correctly inside applications that use `UIWindowScene`.
* **SDK:** Appfigurate in conjunction with Appfigurate Library can automatically restart your app when restartable properties have changed.
* **App:** Restart required properties and executable actions are now indicated in the UI with a green refresh icon (↩).
* **App:** Install example app metadata for easier testing of included SDK example apps (≡ ‣ Install example apps).
* **App:** Output `UIWindowSceneDelegate` snippets for easier integration. (≡ ‣ *App* ‣ Output UIWindowSceneDelegate snippet).
* **AppfigurateSE:** Companion AppfigurateSE macOS app updated to automatically generate encrypted string list items for both Objective-C and Swift `APLConfiguration` subclasses.

#### Requirements

* **Xcode:** 11.5+, **Minimum deployment target:** iOS 9.0, watchOS 3.0

## **1.4.0 - 21 December 2019**

#### Release notes

* **App:** Support for iOS 13 Dark Mode.
* **SDK:** Added ability to execute custom actions declared in an `APLConfiguration` subclass. Check API documentation for ACTION\_METHOD macro.

#### Requirements

* **Xcode:** 10.1+, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.3.1 - 6 October 2019**

#### **Release notes**

* **App:** Minor fixes to UI for iOS 13 compatibility.

#### Requirements

* **Xcode:** 10.1+, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.3.0 - 27 August 2019**

#### Release notes

* **App:** Share app metadata quickly using Multipeer connectivity. (≡ ‣ Import apps ‣ Multipeer).
* **App:** The shared Simulator database stored in `~/Library/Application Support/Appfigurate` is upgraded to 1.3.0 and is incompatible with <= 1.2.1. Please ensure you upgrade Appfigurate to 1.3.0 in all Simulators you use.
* **App:** Output Swift implementation (≡ ‣ *\[App name]* ‣ Output Swift implementation).
* **App:** Non-exportable app metadata will now expire after 180 days from installation.
* **App:** Removed ability to perform remote apply of configuration using non-exportable app metadata.
* **App:** Conversion of exportable app metadata to non-exportable app metadata. Use with caution as this action cannot be undone. (≡ ‣ *\[App name]* ‣ Exportable switch).
* **App:** Custom list item screen improvements.
* **App:** Refreshed look and feel.
* **AppfigurateSE:** StringEncryption macOS app removed and replaced with AppfigurateSE app, available on macOS App Store. Includes source editor extension for Xcode to automatically generate encrypted string list items (currently Objective-C only).
* **SDK:** Reformatted API documentation available.
* **SDK:** Library now throws an NSException (only when `allowInvalidSignatures` return `YES`, e.g. Debug builds) in the following scenarios: Invalid APLKeychainAccessibility value, Invalid configuration after reset method, Invalid list values found not conforming to regex.

#### **Requirements**

* **Xcode:** 10.1+, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.2.1 - 22 May 2019**

#### **Release notes**

* **SDK only:** Added `APLSaveConfiguration()` and `APLRestoreConfiguration()` to save and restore keychain.

#### Requirements

* **Xcode:** 10.1+, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.2.0 - 28 Mar 2019**

#### **Release notes**

* **App:** Minor bug fixes.
* **App:** Share app metadata quickly using QR codes. Scanning requires a device running iOS 11.0+ (≡ ‣ Import apps ‣ QR code).
* **SDK:** Support for encrypted string list items using the `ENCRYPTED_STRING_PROPERTY_LIST_EDIT`, `ENCRYPTED_STRING` and `ENCRYPTED_STRING_IOS_WATCHOS` macros.
* **AppfigurateSE:** Use the new StringEncryption macOS app to generate the encrypted string list item values.

#### Requirements

* **Xcode:** 9.0+, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.1.3 - 10 Feb 2019**

#### **Release notes**

* **App:** Minor bug fixes.
* **SDK:** Added `APLAddConfigurationUpdatedBlock()` and `APLRemoveConfigurationUpdatedBlock()` functions to complement the existing delegate based callbacks.
* **SDK:** `APLConfiguration` subclass is now instantiated earlier, allowing it to be accessed from within `+load` methods and `__attribute__((constructor))` functions.

#### Requirements

* **Xcode:** 9.0+, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.1.2 - 17 Jan 2019**

#### **Release notes**

* **App:** Automatic notification of new releases.
* **SDK:** Bug fixes.

#### Requirements

* **Xcode:** 9.0+, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.1.1 - 16 Dec 2018**

#### **Release notes**

* **SDK:** Support for arm64\_32 architecture (Apple Watch series 4) in Appfigurate Library.
* **SDK:** Fix missing Watch Extension icon.

#### Requirements

* **Xcode:** 9.0+, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.1.0 - 12 Sep 2018**

#### **Release notes**

* **SDK:** Support for watchOS app intent extensions (e.g. SiriKit)

**Requirements**

* **Xcode:** 9.0+, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.0.1 - 9 Feb 2018**

#### **Release notes**

* **App:** Device builds have optional PIN/TouchID/FaceID authentication.

#### Requirements

* **Xcode:** 8.0, **Minimum deployment target:** iOS 8.0, watchOS 3.0

## **1.0.0 - 17 Jan 2018**

#### **Release notes**

* Initial public release.

#### Requirements

* **Xcode:** 8.0+, **Minimum deployment target:** iOS 8.0, watchOS 3.0
