desktop, and console, project bloat and broken references have consistently been the silent killers of development velocity. As teams scale and art pipelines iterate, assets get renamed, deleted, or duplicated, leaving behind missing script components, broken Unity Events, and unused duplicate textures that quietly inflate build sizes. Maintainer 2 by Code Stage addresses these production bottlenecks directly at the Editor level.
Architecturally, Maintainer 2 functions as a static analysis engine for Unity projects. Rather than running at runtime, it hooks into Unity's UnityEditor serialization APIs and reads project metadata (.meta files, YAML scene files, ScriptableObject binaries, and asset database maps). It parses object dependencies directly from serialized properties without needing to instantiate every asset into memory simultaneously, keeping memory overhead predictable even on multi-gigabyte repositories.
When analyzing a maintenance utility, performance and accuracy are my main criteria. False positives can waste hours of developer time. Here is how Maintainer 2 breaks down technically across its primary modules:
The Issues Finder scans scenes, prefabs, ScriptableObjects, and asset folders for missing scripts, broken property references, unassigned public fields, and empty array elements. It traverses serialized properties via SerializedProperty and identifies damaged object references (represented internally as `fileID: 0` or missing GUIDs).
Instead of relying strictly on file names, the Duplicates Finder conducts deep content hashing (MD5/SHA) on raw binary asset data. This catches identical audio clips, textures, and 3D meshes saved under different names across multiple project directories.
Understanding asset dependencies before refactoring legacy code is critical. Maintainer 2 indexes the entire project dependency graph, allowing you to right-click any asset in your Project view and trace every scene, prefab, or material referencing it.
Editor/ directories; zero code footprint or extra memory usage in published release builds.In my experience, this asset shines across specific production scenarios:
Setting up Maintainer 2 takes under five minutes. Follow these practical steps to configure it in your workspace:
Navigate to Tools > Code Stage > Maintainer in the Unity Editor menu bar. Before running a full project sweep, set up ignore rules to skip external plugins (e.g., Assets/Plugins/) to reduce scan noise and speed up analysis.
To ensure no broken references reach production, you can write a custom Editor script utilizing Unity's IPreprocessBuildWithReport interface to run checks automatically prior to building. Here is a custom implementation example:
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;
// Ensure you include the Maintainer namespace in Editor scripts
using CodeStage.Maintainer;
public class PreBuildMaintenanceCheck : IPreprocessBuildWithReport
{
public int callbackOrder => 0;
public void OnPreprocessBuild(BuildReport report)
{
Debug.Log("[Build Pipeline] Running project reference checks via Maintainer...");
// Triggering an Editor-side scan programmatically
// Ensures broken scenes or missing components halt automated build pipelines
bool hasCriticalErrors = PerformSanityScan();
if (hasCriticalErrors)
{
throw new BuildFailedException("[Build Pipeline] Build aborted: Missing script references or unassigned critical assets detected!");
}
}
private bool PerformSanityScan()
{
// Custom logic to parse Maintainer scan status
// In practice, check Maintainer's status or issue count before proceeding
return false;
}
}
| Category | Tools / Utilities |
|---|---|
| Latest Version | v2.3.3 |
| File Size | 1.62 MB |
| Added to Platform | July 8, 2026 |
| Views | 6 views |
| Downloads | 2 downloads |
| Favourites | 0 favourites |
| Official Store | Buy Original License on Unity Asset Store → |
| Issue with Package? | Report Broken Link → |