Bundle (macOS)

Bundle
Filename extension
.app, .framework, .kext, .plugin, .docset, .xpc, .qlgenerator, .component, .saver, .mdimporter, etc.
Uniform Type Identifier (UTI)com.apple.bundle
Container forexecutable binary, metadata, other bundles, any other file needed to run the application.

In NeXTSTEP, OPENSTEP, and their lineal descendants macOS, iOS, iPadOS, tvOS, and watchOS, and in GNUstep, a bundle is a file directory with a defined structure and file extension, allowing related files to be grouped together as a conceptually single item.

Examples of bundles that contain executable code include applications, frameworks, and plugins. This kind of bundle usually contains one file representing executable code, and files that represent resources such as nibs, templates, images, sounds, and other media. On some other systems, such as Microsoft Windows, these resources are usually included directly in the executable file itself at compile time. On older Macintoshes, a similar technique is used, where additional metadata can be added to a file's resource fork. Similar in concept are the application directories used in RISC OS and on the ROX Desktop.

Examples of bundles that do not contain executable code include document packages (iWork documents) and media libraries (iPhoto Library).

Bundles are programmatically accessed with the NSBundle class in Cocoa, NeXTSTEP and GNUstep's Foundation frameworks, and with CFBundle in Core Foundation. Bundles often include an Info.plist file for metadata.[1] The Uniform Type Identifier (UTI) for an Apple bundle is com.apple.bundle.[2]

  1. ^ "Information Property List - Bundle Resources". Apple Developer Documentation.
  2. ^ "System-Declared Uniform Type Identifiers". Uniform Type Identifiers Reference. Apple Inc. Retrieved 2012-06-10.