Unity’s publisher verification supports a secure, UPM-based publishing ecosystem on the Asset Store. Legacy .unitypackage files are simple compressed folders imported directly into a project and remain editable, which suits art assets but complicates updates and dependency management. UPM packages are structured, versioned, read-only libraries that behave like built-in components, improving stability and automatic dependency handling. Verification, especially domain verification, establishes trusted namespaces (e.g., com.my-cool-studio.my-tool), ensuring authenticity and reliable origins for tools and SDKs.
What is Unity Package Manager (UPM) publishing on Asset Store?
UPM publishing is Unity’s new standardized way to deliver packages, such as tools, SDKs, or editor extensions, directly through the Asset Store. With UPM, your package becomes easier for customers to install, update, and manage, using the same system that Unity and many other developers already use to share critical features in Unity projects.
Unity is moving to UPM-based publishing to provide a cleaner experience for both creators and end users.
How does UPM publishing work?
1. Structured package format
UPM packages require a strict folder and metadata structure. The key elements include:
- A top-level folder (usually named with your package ID).
- A
package.jsonmanifest, which defines the package name, version, description, dependencies, and author. - Optional directories for samples, documentation, and other resources (such as
Samples~andDocumentation~).
2. Integration with Unity Package Manager
- When customers acquire your package, Unity adds your package’s ID to their project’s
manifest.json. - The package manager then downloads your package and places it in either the PackageCache (immutable) or Packages (mutable) folder.
- In most cases, UPM assets remain in PackageCache (for safety, versioning, and cleaner distribution).
- Asset Store tools may appear in the Packages folder if they require mutability for compatibility or user modifications.
3. Seamless updates and dependency handling
- UPM packages can declare dependencies on other UPM packages, allowing your asset to automatically install required libraries or tools.
- Customers receive updates through Package Manager, no more manually importing, replacing files, or risking project breaks.
What are the differences vs. .unitypackage?
| Feature | UPM Package | .unitypackage (Legacy) |
|---|---|---|
| Structure | Standardized folder w/ manifest, docs, sample content | Ad hoc bundle of project files |
| Versioning | Semantic versioning, update via Package Manager | No enforced versioning or updates |
| Installation | Manifest-driven, read-only by default | Directly copied into Assets folder |
| Dependencies | Automatic via manifest | Manual, users must add dependencies |
| Updates | Easy upgrade, rollback with version control | Manual re-import, risk of overwrites |
| Variants | Easily managed via UPM features | User edits affect all content |
How do I publish a UPM package to the Asset Store?
-
Prepare Your Package:
- Structure the package according to Unity’s UPM guidelines.
- Fill out your
package.jsonwith all necessary metadata, including:- Name (using your namespace, e.g.
com.yourcompany.tool) - Version
- Description
- Author (Organization name)
- Dependencies & compatibility data
- Name (using your namespace, e.g.
-
Go to the UPM Publishing Portal:
- Enroll as a publisher (Individual or Organization).
- Complete verification steps, including:
- Identity verification
- DUNS number for Organizations
- Domain verification
-
Upload your package:
- Drag and drop your structured package folder.
- Submit required marketing and technical details (images, documentation, compatibility labels).
-
Review and Distribution:
- Unity will review your package for compliance and security.
- Once approved, your package becomes available on the Asset Store.
- Customers can add it to their projects directly from Package Manager.
Best Practices for UPM Asset Store Packages
-
Namespace control: Use your UPM namespace (
com.your-org.package-name) to prevent collisions and reserve your package identity. - Versioning: Use semantic versions and document changes for easier upgrades and rollbacks.
- Samples & documentation: Provide ready-to-use samples and clear docs with your package so users can get started quickly.
-
Dependencies: Declare any package dependencies in
package.jsonfor automatic resolution on install. - LTS support: Target the lowest Unity LTS version feasible for maximum audience coverage, but avoid versions no longer supported by Unity.
Where Can I Learn More?
Visit the official UPM Publishing Guide for the latest documentation, eligibility requirements, and updates.