Changelog

Complete record of API additions, changes, deprecations, and removals for the Zeta iOS SDK (ZetaKit).

This page is for iOS developers who need a precise record of every API-level change across SDK releases. For upgrade instructions, see the migration guide in the public distribution repository.

On this page


1.0.0 (June 16, 2026)

Added

  • App InboxZetaClient.shared.inbox now exposes ZTAppInboxManagable, providing a full message lifecycle API: fetch messages, query read/unread counts, mark messages as read or deleted, and clear all messages. See App Inbox.
  • ZTLogger — new static type that centralises all logging configuration and consumer log calls. No instance is needed.
  • ZTLogPrivacy enum with .private (default) and .public cases, controlling whether message content is visible in Console.app and system diagnostic captures.
  • ZTLogger.setLogLevel(_:) — configure the minimum log level at runtime, before or after initialize(config:).
  • ZTLogger.setLogPrivacy(_:) — global privacy override for SDK-internal diagnostic messages.
  • ZTLogger.log(_:level:privacy:category:errorCode:) — structured consumer logging with optional level, per-call privacy, Console.app category, and a short error-triage code.
  • Environment-aware default log level: .error in debug builds, .none in production/release builds.
  • Swift 6 compatibility — SDK binaries are built with the Swift 6 toolchain (BUILD_LIBRARY_FOR_DISTRIBUTION). ZetaNotificationService is fully migrated to Swift 6 language mode; ZetaCore uses Swift 5 language mode with Swift 6 concurrency features enabled as warnings. Both modules work in Swift 5.x and Swift 6 consumer projects. Minimum toolchain: Xcode 15.3+ / Swift 5.10.

Changed

  • BreakingZTLocation.isForeground type changed from Bool? to Bool (defaults to false). Remove any if let fg = location.isForeground optional binding and read the property directly. Objective-C consumers now have full access to this property, which was previously invisible to Obj-C.
  • BreakingZTConfig initializers no longer accept an isLoggingEnabled: Bool parameter. Remove the argument from all ZTConfig(...) call sites and use ZTLogger.setLogLevel(_:) to control logging verbosity.
  • Breaking — All logging configuration (setLogLevel, setLogPrivacy) and the consumer log method have moved from ZetaClient to ZTLogger.

Deprecated

  • ZetaClient.shared.log(log:) — still compiles with a deprecation warning. Migrate call sites to ZTLogger.log(_:level:privacy:category:errorCode:).

Removed

  • ZTLocation.init(latitude:longitude:isForeground:Bool?) — use init(latitude:longitude:isForeground:Bool) or init(latitude:longitude:) which defaults isForeground to false.
  • ZTConfig.isLoggingEnabled stored property.
  • ZTLoggable protocol.
  • ZTLogHandler protocol.
  • ZTDefaultLogger class.
  • ZTSystemConsoleLogger class.
  • ZetaClient.setLogLevel(_:) — replaced by ZTLogger.setLogLevel(_:).
  • ZetaClient.log(log:level:) — replaced by ZTLogger.log(_:level:privacy:category:errorCode:).
  • ZTLogLevel.critical and ZTLogLevel.alert cases — use .error for high-severity messages.

Upgrade guide: Migration guide / Upgrading to 1.0.0


0.2.0 (January 22, 2026)

Added

  • In-app email collectioninAppMessageFormData property on ZTInAppMessage so delegates can read the email address submitted through an in-app form.
  • Unique client IDssetUniqueClientId(value:forKey:) on ZTUserManagable to set client-defined unique identifiers. New emailId property on ZTUser for email identification.

Changed

  • SDK version updated from 0.1.8 to 0.2.0.