Generated by GPT-5-mini| plist | |
|---|---|
| Name | Property List |
| Developer | Apple Inc. |
| Initial release | 1998 |
| Latest release | Integrated across macOS, iOS |
| Operating system | macOS, iOS, iPadOS, watchOS, tvOS |
| License | Proprietary (platform), open formats (XML, JSON converters) |
plist
Property lists are a serialized data representation used extensively within Apple Inc. ecosystems to store configuration, preferences, and structured data for Macintosh, iPhone, iPad, watchOS, and tvOS applications. Originating during the development of the NeXTSTEP system and preserved through the acquisition by Apple Inc., property lists evolved alongside APIs such as Cocoa and Foundation framework. They interoperate with system services like launchd, NSUserDefaults, and Xcode project settings.
Property lists serve as a lightweight, hierarchical serialization format favored for application preferences, resource catalogs, and interprocess configuration in macOS and iOS. Implementations integrate with classes and libraries in the Foundation framework, enabling developers using languages like Objective-C, Swift, and scripting languages to read and write structured data. System utilities and developer tools such as Xcode, Terminal, and plutil assist with validation, conversion, and debugging.
Property lists exist in multiple on-disk encodings: a canonical human-readable XML variant standardized by Apple, a compact binary variant optimized for performance, and legacy ASCII key-value formats used in older releases of NeXTSTEP and early Mac OS X builds. The binary format was introduced to reduce storage and parsing overhead, complementing XML for interchange with tools like Safari and TextEdit that display or edit XML. Over successive system versions—through Mac OS X Panther, Mac OS X Leopard, and modern macOS—the serialization APIs have maintained backward compatibility while adding support for new primitive types and encoding refinements.
Property lists represent a small set of primitive and composite types: ordered collections and dictionaries (associative arrays), strings, numbers, booleans, dates, binary data, and unique identifier-like values in some implementations. The top-level container is typically a dictionary or array, enabling nesting of dictionaries and arrays to model application state, entitlements, and configuration manifests. This structure underpins formats used by Info.plist for application metadata, provisioning profiles employed by Apple Developer program workflows, and serialized objects passed to services such as NSUserDefaults and Core Data exports.
Developers and administrators create and edit property list files using graphical tools like Xcode's property list editor, and third-party editors integrated into IDEs such as AppCode. Command-line utilities—part of macOS developer toolchains—include converters and validators that interact with git-managed repositories, continuous integration systems like Jenkins or GitHub Actions, and scripting environments using Python, Ruby, or Perl. Text editors such as TextEdit, Sublime Text, and Visual Studio Code can manipulate XML plists, while binary formats are commonly handled via conversion utilities for readability during code reviews or debugging sessions.
Within application bundles, plists encode metadata found in Info.plist files that declare an app's bundle identifier, supported document types, and entitlements referenced by App Store submission processes. System daemons and launch agents registered with launchd consume property lists for service configuration. Preferences persisted through NSUserDefaults serialize to plists in per-user domains, and installer packages produced with Installer.app include manifests in plist form. Enterprise management solutions using Mobile Device Management frameworks also rely on plists to describe payloads, policies, and provisioning used across fleets of macOS and iOS devices.
Because property lists can contain sensitive tokens, credentials, or configuration that affects system behavior, secure handling is critical. Files embedded in application bundles are subject to the App Sandbox and code signing enforced by Gatekeeper and Xcode build processes. Secrets encoded in plaintext plists risk exposure through backups managed by iCloud, system snapshots used by Time Machine, or misconfigured source control in GitHub repositories. Malformed or crafted plist data has been leveraged in past vulnerabilities affecting parsers in runtime libraries; therefore, validated parsing, minimized privilege execution, and encryption via Keychain Services are standard mitigations.
Cross-platform ecosystems provide parsers and serializers for property lists in many languages and runtimes: native implementations in Foundation framework for Objective-C and Swift, third-party libraries for Java, .NET Framework, Go (programming language), Python, Node.js, and Rust. Tools for converting between plist XML, binary plist, and JSON support integration with web services like Azure DevOps and Amazon Web Services pipelines. Compatibility layers and open-source projects facilitate reading legacy formats produced by older releases of NeXTSTEP and migrating plist-based data into modern formats consumed by SwiftUI and server-side components.
Category:Apple file formats