{"record":{"id":"d73bc52f9b75b05c","repo":"Unity-Technologies/UnityCsReference","slug":"cannot-revert-added-component-component-is-not-an","errorCode":null,"errorMessage":"Cannot revert added component. Component is not an added component override on a Prefab instance.","messagePattern":"Cannot revert added component\\. Component is not an added component override on a Prefab instance\\.","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/Prefabs/PrefabUtility.cs","lineNumber":1263,"sourceCode":"            }\n\n            Analytics.SendApplyEvent(\n                Analytics.ApplyScope.AddedComponent,\n                component,\n                assetPath,\n                action,\n                startTime,\n                false\n            );\n        }\n\n        public static void RevertAddedComponent(Component component, InteractionMode action)\n        {\n            if (component == null)\n                throw new ArgumentNullException(nameof(component), \"Cannot revert added component. Component is null.\");\n\n            if (!PrefabUtility.IsAddedComponentOverride(component))\n                throw new ArgumentException(\"Cannot revert added component. Component is not an added component override on a Prefab instance.\", nameof(component));\n\n            var prefabInstanceGameObject = component.gameObject;\n\n            PrefabUtility.Internal_CallPrefabInstanceReverting(prefabInstanceGameObject);\n\n            if (action == InteractionMode.UserAction)\n            {\n                string dependentComponents = string.Join(\n                    \", \",\n#pragma warning disable UA2001 // The Banned API Analyzer produces compile errors for any new Linq code. This pre-existing usage has been suppressed, but should be rewritten if possible.\n                    GetAddedComponentDependencies(component, OverrideOperation.Revert).Select(ObjectNames.GetInspectorTitle));\n#pragma warning restore UA2001\n                if (!string.IsNullOrEmpty(dependentComponents))\n                {\n                    string error = String.Format(\n                        L10n.Tr(\"Can't revert added component {0} because {1} depends on it.\"),\n                        ObjectNames.GetInspectorTitle(component),\n                        dependentComponents);","sourceCodeStart":1245,"sourceCodeEnd":1281,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/Prefabs/PrefabUtility.cs#L1245-L1281","documentation":"Thrown by RevertAddedComponent when component is non-null but PrefabUtility.IsAddedComponentOverride(component) is false. Revert of an 'added component' override only applies to components that were added on the instance relative to the asset; a regular inherited/overridden component is rejected with ArgumentException.","triggerScenarios":"Calling RevertAddedComponent on a component that exists on the asset (so it is an override, not an addition); reverting a component on a non-prefab GameObject; reverting after the override was already applied/cleared.","commonSituations":"Generic override-revert tooling that routes every component through RevertAddedComponent; confusing revert of a modified component (RevertObjectOverride) with revert of an added component; double-revert after state already cleared.","solutions":["Guard with: if (!PrefabUtility.IsAddedComponentOverride(component)) return; or use RevertObjectOverride for modified components.","Verify the component is an added override before reverting.","Use the correct revert API per override kind (added component vs property override vs removed component)."],"exampleFix":"// before\nPrefabUtility.RevertAddedComponent(comp, InteractionMode.UserAction);\n\n// after\nif (PrefabUtility.IsAddedComponentOverride(comp))\n    PrefabUtility.RevertAddedComponent(comp, InteractionMode.UserAction);\nelse\n    PrefabUtility.RevertObjectOverride(comp, InteractionMode.UserAction);","handlingStrategy":"type-guard","validationCode":"if (!PrefabUtility.IsAddedComponentOverride(component))\n{ PrefabUtility.RevertObjectOverride(component, action); return; }\nPrefabUtility.RevertAddedComponent(component, action);","typeGuard":"static bool IsAddedOverride(Component c)\n    => c != null && PrefabUtility.IsAddedComponentOverride(c);","tryCatchPattern":null,"preventionTips":["Verify IsAddedComponentOverride before reverting an added component.","Use RevertObjectOverride for modified (non-added) components.","Match the revert API to the override kind."],"tags":["prefab","validation","added-component","type-mismatch"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}