The main reasons for releasing this SDK is to align the Android and Apple SDKs, as well as fix some inconsistencies.

This blog post describes what is new in this SDK version, and what changes you need to perform in your source code.

What is new

  • Log levels
  • Manually checking for app updates


Xcode 10.1 or newer is required since this is required in order to have ARM64e support, which is used in iPhone XR + XS and newer. Xcode 10.1 is also required in order to submit apps to the AppStore. The minimum iOS version supported is now 8.0, since this is the oldest version supported by Xcode 10.1.

Everything is disabled by default

In previous versions analytics was enabled by default. This is now disabled and must be enabled manually.

Reporting non-fatal issues was automatically enabled, when enabling crash reporting. This feature now has its own feature flag, nonFatalEnabled which is disabled by default.

TPAManager has been renamed to TPA

In Swift you must change all occurrences ofTPAManager.shared() to TPA.shared().

In Objective-C you must change all occurrences ofTPAManager.sharedManager to TPA.shared.


The sessionRecordingEnabled flag has been removed, and is now part of analyticsEnabled which enables both session recording and any custom tracking (if implemented in your source code).

Log levels

We have added log levels (debug, info, warning, and error) to the logging API.

You must add the log level as the first parameter, e.g.:


TPA.shared().log(.info, message: "My log message");


TPALog(TPALogLevelInfo, @"My log message");

Limiting remote and console logging

In order to limit the amount of logging output to TPA and the console, we have added two properties to TPA.

If you only want to send error logs to TPA you can specify:

TPA.shared().remoteLogLevel = .error

Likewise, you can limit the logs output to the console to only info, warning, and error by specifying:

TPA.shared().consoleLogLevel = .info

Both levels default to .debug unless the app is being distributed via the App Store, in which case the default is .warning.

Note: Please be aware, that remote logs does count toward your DataPoint limit.

Check for updates

The feature flag, updateNotification has been changed from a boolean (updateNotificationsEnabled) to an enum, since it now has three possible values, .disabled, .automatic, and .manually.

You can manually trigger the check for updates:


This requires that either automatic or manual update notifications are enabled.

Note: update notifications are always disabled in apps distributed via the App Store.

Separate flag to enable non-fatal issue reporting

A new flag has been added to enable reporting of non-fatal issues. Non-fatal issues are only send to TPA if the following is set and reportNonFatalIssue is called in your source code.

TPA.shared.nonFatalEnabled = true

TPAViewController has been removed

We believe that all tracking should be considered thoroughly with regards to the exact location of when the event is sent, the tags that are includeded and the naming of the event. TPAViewController did not encourage this, so it has been removed from SDK 5.0. If your code relies on TPAViewController, you can download it here: