Supported package types

sfp cli supports operations on various types of packages within your repository. A short summary on the comparison between different package types is provided below\

Default to source packages. The properties that once required an unlocked package — incremental deploys, scoped tests, and detecting when an org has diverged from source — are now provided for source packages by sfp and codev. Choose another type when a specific requirement calls for it. See Choosing a package type.

FeaturesUnlocked PackagesOrg Dependent Unlocked PackagesSource PackagesData PackagesDiff Packages
Dependency ValidationOccurs during package creationOccurs during package installationOccurs during package installationN/AOccurs during package installation
Dependency DeclarationYesYes (supported by sfp)YesYesYes (supported by sfp)
Requires dependency to be resolved during creationYesNoNoN/ANo
Supported Metadata TypesUnlocked Package Section in Metadata Coverage ReportUnlocked Package Section in Metadata Coverage Report

Metadata API
Section in Metadata Coverage Report

N/A

Metadata API
Section in Metadata Coverage Report

Code Coverage RequirementPackage should have 75% code coverage or moreNot enforced by Salesforce, sfp by default checks for 75% code coverageEach apex class should have a coverage of 75% or above for optimal deployment, otherwise the entire coverage of the org will be utilized for deploymentN/AEach apex class that's part of the delta between the current version and the baseline needs a test class and requires a coverage of 75%.
Component LifecycleAutomatedAutomatedExplicit, utilize destructiveManifest or manual deletionN/AExplicit, utilize destructiveManifest or manual deletion
Component LockYes, only one package can own the componentYes, only one package can own the componentNoN/ANo
Version ManagementSalesforce enforced versioning; Promotion required to deploy to prodSalesforce enforced versioning; Promotion required to deploy to prodsfp enforced versioningsfp enforced versioningsfp enforced versioning
Incremental DeploymentHandled by Salesforce on package upgradeOnly changed components (component checksum skip)Only changed components (component checksum skip)N/AOnly changed components (component checksum skip)