Salesforce Dictionary - Free Salesforce GlossarySalesforce Dictionary
Compare

Managed Package vs Unmanaged Package

Protected IP distribution vs open-source sharing

All comparisons

Managed Package

VS

Unmanaged Package

Managed Package

A Managed Package is a versioned, namespace-locked bundle of Salesforce metadata that an Independent Software Vendor (ISV) develops, signs, and distributes through AppExchange or a direct install URL. The defining traits of a managed package are namespace ownership (every component gets a prefix like vendor__), upgrade tracking (the platform records which package version is installed and can apply minor and patch upgrades cleanly), and code protection (Apex classes can be marked global, public, or private, with private code invisible to subscribers). Managed packages are the technical mechanism behind every AppExchange listing that ships actual platform code. The model serves three audiences: ISVs who need a way to ship and update enterprise software at scale, customers who want third-party functionality without managing the metadata themselves, and Salesforce who runs the AppExchange marketplace and takes a revenue share on paid packages. The packaging tooling has gone through two generations. First-generation managed packages (1GP) use a packaging org as the source of truth. Second-generation managed packages (2GP) use Salesforce DX with the source repository as the canonical model.

Unmanaged Package

An Unmanaged Package is a bundle of Salesforce metadata that an admin or developer assembles in one org and installs into another, with no namespace, no upgrade tracking, and no code protection. Unmanaged packages are the original packaging model on the Salesforce platform, predating managed packages and AppExchange. They serve a single use case: moving a set of components from one org to another in a way that is more deliberate than a change set and less ceremony than a managed package. Unmanaged packages are open. Every component installs into the subscriber org as a fully editable artifact. The Apex code is readable, the custom objects are renameable, the Flow definitions are forkable. There is no namespace prefix and no version tracking; once installed, the subscriber owns the metadata. This is the right model for templates, sample apps, training scaffolds, and internal sharing across orgs in the same company. It is the wrong model for any paid software product, because the customer can copy, modify, and resell the code at will.

Key Differences

DimensionManaged PackageUnmanaged Package
IP ProtectionCode is hidden and protectedCode is fully visible and editable
UpgradesSupports push upgrades to subscribersNo upgrade path - install is one-time
NamespaceRequires a registered namespace prefixNo namespace required
ModificationSubscribers cannot modify componentsSubscribers can freely modify everything
AppExchangeRequired for AppExchange listingsCannot be listed on AppExchange

When to use Managed Package

Distributing a commercial product on AppExchange with protected IP and upgrades.

When to use Unmanaged Package

Sharing open-source code, templates, or one-time configuration bundles.