<!--
{
  "documentType" : "article",
  "framework" : "Technotes",
  "identifier" : "/documentation/Technotes",
  "metadataVersion" : "0.1.0",
  "role" : "collection",
  "title" : "Technotes"
}
-->

# Technotes

Learn about specific development topics through these in-depth technical articles.

## Overview

Technotes are focused, timely documents from Apple Developer Technical Support. They explore a wide range of development topics and provide guidance for developers creating apps and accessories for all of Apple’s platforms.

## Topics

### Latest

[TN3205: Low-latency communication with RDMA over Thunderbolt](/documentation/Technotes/tn3205-low-latency-communication-with-rdma-over-thunderbolt)

Learn how to use RDMA over Thunderbolt to enable low-latency communication between clusters of Mac computers.

[TN3206: Updating Apple Pay certificates](/documentation/Technotes/tn3206-updating-apple-pay-certificates)

Learn how to create, manage, and rotate Apple Pay certificates to maintain uninterrupted payment processing.

[TN3179: Understanding local network privacy](/documentation/Technotes/tn3179-understanding-local-network-privacy)

Learn how local network privacy affects your software.

[TN3190: USB audio device design considerations](/documentation/Technotes/tn3190-USB-audio-device-design-considerations)

Learn the best techniques for designing devices that conform to the USB Audio Device Class specifications.

[TN3194: Handling account deletions and revoking tokens for Sign in with Apple](/documentation/Technotes/tn3194-handling-account-deletions-and-revoking-tokens-for-sign-in-with-apple)

Learn the best techniques for managing Sign in with Apple user sessions
and responding to account deletion requests.

[TN3193: Managing the on-device foundation model’s context window](/documentation/Technotes/tn3193-managing-the-on-device-foundation-model-s-context-window)

Learn how to budget for the context window limit of Apple’s on-device foundation model and handle the error when reaching the limit.

[TN3115: Bluetooth State Restoration app relaunch rules](/documentation/Technotes/tn3115-bluetooth-state-restoration-app-relaunch-rules)

Learn about the conditions under which an iOS app will be relaunched by Bluetooth State Restoration.

[TN3192: Migrating your iPad app from the deprecated UIRequiresFullScreen key](/documentation/Technotes/tn3192-Migrating-your-app-from-the-deprecated-UIRequiresFullScreen-key)

Support iPad multitasking and dynamic resizing while updating your
app to remove the deprecated full-screen compatibility mode.

[TN3151: Choosing the right networking API](/documentation/Technotes/tn3151-choosing-the-right-networking-api)

Learn which networking API is best for you.

[TN3111: iOS Wi-Fi API overview](/documentation/Technotes/tn3111-ios-wifi-api-overview)

Explore the various Wi-Fi APIs available on iOS and their expected use cases.

[TN3191: IMAP extensions supported by Mail for iOS, iPadOS, and visionOS](/documentation/Technotes/tn3191-imap-extensions-supported-by-mail)

Learn which extensions to the RFC 3501 IMAP protocol are supported by Mail for iOS, iPadOS, and visionOS.

[TN3134: Network Extension provider deployment](/documentation/Technotes/tn3134-network-extension-provider-deployment)

Explore the platforms, packaging, OS versions, and device configurations for Network Extension provider deployment.

[TN3189: Managing Mail background traffic load](/documentation/Technotes/tn3189-managing-mail-background-traffic-load)

Identify iOS Mail background traffic and manage its impact on your IMAP server.

[TN3187: Migrating to the UIKit scene-based life cycle](/documentation/Technotes/tn3187-Migrating-to-the-UIKit-scene-based-life-cycle)

Update your app to receive scene-based life-cycle events and manage your user interface using scene objects and methods.

[TN3188: Troubleshooting In-App Purchases availability in the App Store](/documentation/Technotes/tn3188-troubleshooting-in-app-purchases-availability-in-the-app-store)

Verify your In-App Purchases are approved and available for sale in the App Store.

[TN3186: Troubleshooting In-App Purchases availability in the sandbox](/documentation/Technotes/tn3186-troubleshooting-in-app-purchases-availability-in-the-sandbox)

Identify common configurations that make your In-App Purchases unavailable in the sandbox environment.

[TN3185: Troubleshooting In-App Purchases availability in Xcode](/documentation/Technotes/tn3185-troubleshooting-in-app-purchases-availability-in-xcode)

Inspect your active StoreKit configuration file for unexpected configurations.

[TN3182: Adding privacy tracking keys to your privacy manifest](/documentation/Technotes/tn3182-adding-privacy-tracking-keys-to-your-privacy-manifest)

Declare the tracking domains you use in your app or third-party SDK in a privacy manifest.

[TN3183: Adding required reason API entries to your privacy manifest](/documentation/Technotes/tn3183-adding-required-reason-api-entries-to-your-privacy-manifest)

Declare the APIs that can potentially fingerprint devices in your app or third-party SDK in a privacy manifest.

[TN3184: Adding data collection details to your privacy manifest](/documentation/Technotes/tn3184-adding-data-collection-details-to-your-privacy-manifest)

Declare the data your app or third-party SDK collects in a privacy manifest.

[TN3181: Debugging an invalid privacy manifest](/documentation/Technotes/tn3181-debugging-invalid-privacy-manifest)

Identify common configurations that cause unsuccessful privacy manifest validation with the App Store.

[TN3180: Reverting to App Store Server Notifications V1](/documentation/Technotes/tn3180-reverting-app-store-server-notifications-v1)

Migrate from version 2 to version 1 of App Store Server Notifications using the Modify an App endpoint.

[TN3178: Checking for and resolving build UUID problems](/documentation/Technotes/tn3178-checking-for-and-resolving-build-uuid-problems)

Ensure that every Mach-O image has a UUID, and that every distinct Mach-O image has its own unique UUID.

[TN3177: Understanding alternate audio track groups in movie files](/documentation/Technotes/tn3177-understanding-alternate-audio-track-groups-in-movie-files)

Learn how alternate groups collect audio tracks, and how to choose which audio track to use in your app.

[TN3176: Troubleshooting Apple Pay payment processing issues](/documentation/Technotes/tn3176-troubleshooting-apple-pay-payment-processing-issues)

Diagnose errors that occur when processing Apple Pay payments,
identify common causes, and explore potential solutions.

[TN3175: Diagnosing issues with displaying the Apple Pay button on your website](/documentation/Technotes/tn3175-diagnosing-issues-with-displaying-the-apple-pay-button-on-your-website)

Diagnose common errors received while displaying the Apple Pay button on your
website by identifying the underlying causes, and explore potential solutions.

[TN3174: Diagnosing issues with the Apple Pay payment sheet on your website](/documentation/Technotes/tn3174-diagnosing-issues-with-the-apple-pay-payment-sheet-on-your-website)

Diagnose errors received while presenting the Apple Pay payment sheet on
your website by identifying the underlying causes of common errors and explore
their potential solutions.

[TN3173: Troubleshooting issues with your Apple Pay merchant identifier configuration](/documentation/Technotes/tn3173-troubleshooting-issues-with-your-apple-pay-merchant-id-configuration)

Diagnose errors due to invalid Apple Pay merchant identifier configurations by
identifying the underlying causes of common errors and explore their
potential solutions.

[TN3168: Making your App Clip available in the App Store](/documentation/Technotes/tn3168-making-your-app-clip-available-app-store)

Learn how to configure your App Clip to prevent it from being unavailable in the App Store.

[TN3124: Debugging coordinate space issues](/documentation/Technotes/tn3124-debugging-coordinate-transformations)

Learn techniques to help debug any coordinate space issue.

[TN3158: Resolving Xcode 15 device connection issues](/documentation/Technotes/tn3158-resolving-xcode-15-device-connection-issues)

Identify software preventing Xcode 15 from connecting to Apple devices, and modify your configuration to allow these connections.

[TN3165: Packet Filter is not API](/documentation/Technotes/tn3165-packet-filter-is-not-api)

Plan your migration from Packet Filter to Network Extension.

[TN3164: Debugging the synchronization of NSPersistentCloudKitContainer](/documentation/Technotes/tn3164-debugging-the-synchronization-of-NSPersistentCloudKitContainer)

Identify and resolve synchronization issues when working with `NSPersistentCloudKitContainer`.

[TN3163: Understanding the synchronization of NSPersistentCloudKitContainer](/documentation/Technotes/tn3163-understanding-the-synchronization-of-NSPersistentCloudKitContainer)

Explore the details inside the synchronization of `NSPersistentCloudKitContainer` by capturing and analyzing a sysdiagnose.

[TN3161: Inside Code Signing: Certificates](/documentation/Technotes/tn3161-inside-code-signing-certificates)

Learn how code signing uses certificates to identify code authors.

[TN3162: Understanding CloudKit throttles](/documentation/Technotes/tn3162-understanding-CloudKit-throttles)

Learn how to identify and handle CloudKit throttles.

[TN3159: Migrating Sign in with Apple users for an app transfer](/documentation/Technotes/tn3159-migrating-sign-in-with-apple-users-for-an-app-transfer)

Migrate existing Sign in with Apple user identifiers and private email relay addresses
by exchanging transfer identifiers from one developer team to another
with the user migration info endpoint.

[TN3156: Create rich previews for Messages](/documentation/Technotes/tn3156-create-rich-previews-for-messages)

Learn best practices for creating rich text and image previews for display in the Messages app.

[TN3157: Updating your watchOS project for SwiftUI and WidgetKit](/documentation/Technotes/tn3157-updating-your-watchOS-project-for-SwiftUI-and-WidgetKit)

Update your watchOS app project to adopt SwiftUI, WidgetKit, and other modern features.

[TN3155: Debugging universal links](/documentation/Technotes/tn3155-debugging-universal-links)

Investigate why your universal links are opening in a web browser instead of your app.

[TN3138: Handling App Store receipt signing certificate changes](/documentation/Technotes/tn3138-Handling-App-Store-receipt-signing-certificate-changes)

Ensure that your app’s local receipt validation is compatible with intermediate certificates that require using the SHA-256 algorithm.

[TN3154: Adopting SwiftUI navigation split view](/documentation/Technotes/tn3154-Adopting-SwiftUI-navigation-split-view)

Use navigation split view to enable two and three column navigation in your SwiftUI app while maintaining compatibility with earlier OS versions.

[TN3153: Adopting API changes for EventKit in iOS 17, macOS 14, and watchOS 10](/documentation/Technotes/tn3153-adopting-api-changes-for-eventKit-in-iOS-macOS-and-watchOS)

Test your existing apps against EventKit API latest changes.

[TN3152: Migrating to the latest Calendar access levels](/documentation/Technotes/tn3152-migrating-to-the-latest-calendar-access-levels)

Follow these guidelines to update your app to use the new Calendar access levels.

[TN3149: Fetching Contacts change history events](/documentation/Technotes/tn3149-fetching-change-history-events)

Learn how to fetch and process the most recent changes to the Contacts database.

[TN3150: Getting ready for dataless files](/documentation/Technotes/tn3150-getting-ready-for-data-less-files)

Understand dataless files and how to minimize the performance impact as the system materializes them.

[TN3117: Resolving architecture build errors on Apple silicon](/documentation/Technotes/tn3117-resolving-build-errors-for-apple-silicon)

Update your app’s architecture build settings to support building macOS, iOS, watchOS, and tvOS apps on Apple silicon.

[TN3147: Migrating to the latest notarization tool](/documentation/Technotes/tn3147-migrating-to-the-latest-notarization-tool)

Migrate your notarization workflows to `notarytool` from the deprecated `altool`.

[TN3145: HDR video metadata](/documentation/Technotes/tn3145-HDR-video-metadata)

Learn about the usage and requirements of “Ambient Viewing Environment” metadata with HLG and / or Dolby Vision™ Profile 8.4 playback.

[TN3133: Packaging a Metal renderer](/documentation/Technotes/tn3133-packaging-a-renderer)

Distribute a Metal renderer in a Swift package.

[TN3137: On Mac keychain APIs and implementations](/documentation/Technotes/tn3137-on-mac-keychains)

Learn how the keychain on macOS differs from other Apple platforms.

[TN3136: AVAudioConverter - performing sample rate conversions](/documentation/Technotes/tn3136-AVAudioConverter-performing-sample-rate-conversions)

Use AVAudioConverter to perform sample rate conversions between PCM audio buffers.

[TN3135: Low-level networking on watchOS](/documentation/Technotes/tn3135-low-level-networking-on-watchOS)

Learn about the supported use cases for low-level networking on watchOS.

[TN3128: Starting SharePlay without an existing FaceTime call](/documentation/Technotes/tn3128-starting-shareplay-without-an-existing-facetime-call)

Use the share sheet or group activity sharing controller to start SharePlay directly from your app without an existing FaceTime call.

[TN3132: Changes to EventKit and EventKitUI in iOS 16](/documentation/Technotes/tn3132-changes-EventKit-and-EventKitUI-in-iOS16)

Test your apps against EventKit and EventKitUI API changes in iOS 16.

[TN3130: Changes to EventKit in macOS Ventura 13](/documentation/Technotes/tn3130-changes-to-eventKit-in-macOS13-ventura)

Test your apps against EventKit API changes in macOS Ventura 13.

[TN3129: Resolving build errors from helper tools in Xcode Cloud and other build environments](/documentation/Technotes/tn3129-resolving-build-errors-from-helper-tools-in-xcode-cloud)

Review common causes for failing Xcode Cloud builds that originate from helper tools running in a misconfigured build environment.

[TN3125: Inside Code Signing: Provisioning Profiles](/documentation/Technotes/tn3125-inside-code-signing-provisioning-profiles)

Learn how provisioning profiles enable third-party code to run on Apple platforms.

[TN3126: Inside Code Signing: Hashes](/documentation/Technotes/tn3126-inside-code-signing-hashes)

Look inside a code signature to see how it uses hashes to protect the code’s executable pages, resources, and metadata from tampering.

[TN3127: Inside Code Signing: Requirements](/documentation/Technotes/tn3127-inside-code-signing-requirements)

Explore how macOS uses code signing requirements to reason about code identity.

[TN3122: Receipt validation with the App Store fails with a non-zero error code](/documentation/Technotes/tn3122-receipt-validation-with-the-app-store-fails-with-a-non-zero-error-code)

Identify common configurations that cause unsuccessful receipt validation with
the App Store.

[TN3113: Testing and debugging XPC code with an anonymous listener](/documentation/Technotes/tn3113-testing-xpc-code-with-an-anonymous-listener)

Use an anonymous XPC listener to simplify your XPC testing and debugging.

[TN3121: Selecting a pixel format for an AVCaptureVideoDataOutput](/documentation/Technotes/tn3121-selecting-a-pixel-format-for-an-avcapturevideodataoutput)

Learn how to choose the best output pixel format for your app.

[TN3123: Refactoring your storyboard](/documentation/Technotes/tn3123-refactoring-your-storyboard)

Learn strategies and techniques for refactoring a single storyboard into multiple storyboards.

[TN3120: Expected use cases for Network Extension packet tunnel providers](/documentation/Technotes/tn3120-expected-use-cases-for-network-extension-packet-tunnel-providers)

Learn the expected use cases for Network Extension packet tunnel providers, and
about use cases that are not supported.

[TN3106: Customizing the appearance of UINavigationBar](/documentation/Technotes/tn3106-customizing-uinavigationbar-appearance)

Adopt UINavigationBarAppearance for a navigation bar background color that’s consistent on iOS 13 through 18.

[TN3105: Customizing the UIKit status bar style](/documentation/Technotes/tn3105-customizing-uistatusBar-syle)

Configure the device’s status bar style to work well with your app’s user interface.

[TN3118: Debugging your app’s launch screen](/documentation/Technotes/tn3118-debugging-your-apps-launch-screen)

Understand why your app’s launch screen is not displayed or updated.

[TN3107: Resolving Sign in with Apple response errors](/documentation/Technotes/tn3107-resolving-sign-in-with-apple-response-errors)

Diagnose errors received by the Sign in with Apple client, or its server infrastructure,
by identifying the underlying causes of common error codes and explore their potential solutions.

[TN3110: Resolving generic Xcode archive issue](/documentation/Technotes/tn3110-resolving-generic-xcode-archive-issue)

Identify common configurations that cause a generic Xcode archive.

[TN3109: Resolving common archiving issues](/documentation/Technotes/tn3109-resolving-common-archiving-issues)

Handle common issues that arise while archiving apps.

[TN3108: Viewing the interface of your Swift code](/documentation/Technotes/tn3108-viewing-the-interface-of-your-swift-code)

Learn how to navigate to the interface file of a Swift implementation file.

[TN3104: Recording video in Apple ProRes](/documentation/Technotes/tn3104-recording-video-in-apple-prores)

Configure pieces of an AVCaptureSession to capture video in Apple ProRes.

[TN3103: Apple Pay on the Web troubleshooting guide](/documentation/Technotes/tn3103-apple-pay-on-the-web-troubleshooting-guide)

Troubleshooting guide for implementing Apple Pay on the Web.

[TN3102: HTTP/3 in your app](/documentation/Technotes/tn3102-http3-in-your-app)

Get started with iOS 15’s new HTTP/3 support.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
