diff --git a/Packages/nadena.dev.modular-avatar/Editor/PreventStripTagObjects.cs b/Packages/nadena.dev.modular-avatar/Editor/PreventStripTagObjects.cs
new file mode 100644
index 00000000..f16c0df9
--- /dev/null
+++ b/Packages/nadena.dev.modular-avatar/Editor/PreventStripTagObjects.cs
@@ -0,0 +1,59 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using UnityEditor;
+using UnityEngine;
+using VRC.SDKBase;
+using VRC.SDKBase.Editor.BuildPipeline;
+
+namespace nadena.dev.modular_avatar.core.editor
+{
+ ///
+ /// See https://feedback.vrchat.com/sdk-bug-reports/p/ieditoronly-components-should-be-destroyed-late-in-the-build-process
+ ///
+ [InitializeOnLoad]
+ internal static class PreventStripTagObjects
+ {
+ static PreventStripTagObjects()
+ {
+ EditorApplication.delayCall += () =>
+ {
+ var f_callbacks = typeof(VRCBuildPipelineCallbacks).GetField("_preprocessAvatarCallbacks",
+ BindingFlags.Static | BindingFlags.NonPublic);
+ var callbacks = (List) f_callbacks.GetValue(null);
+
+ var filteredCallbacks = callbacks.Where(c => !(c is RemoveAvatarEditorOnly)).ToList();
+
+ f_callbacks.SetValue(null, filteredCallbacks);
+ };
+ }
+ }
+
+ internal class ReplacementRemoveAvatarEditorOnly : IVRCSDKPreprocessAvatarCallback
+ {
+ public int callbackOrder => -1024;
+
+ public bool OnPreprocessAvatar(GameObject avatarGameObject)
+ {
+ foreach (var xform in avatarGameObject.GetComponentsInChildren(true))
+ {
+ if (xform != null && xform.CompareTag("EditorOnly"))
+ {
+ Object.DestroyImmediate(xform.gameObject);
+ }
+ }
+
+ foreach (var editoronly in avatarGameObject.GetComponentsInChildren(true))
+ {
+ if (editoronly == null || editoronly is AvatarTagComponent)
+ {
+ continue;
+ }
+
+ Object.DestroyImmediate((Component) editoronly);
+ }
+
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/nadena.dev.modular-avatar/Editor/PreventStripTagObjects.cs.meta b/Packages/nadena.dev.modular-avatar/Editor/PreventStripTagObjects.cs.meta
new file mode 100644
index 00000000..a9c65cd8
--- /dev/null
+++ b/Packages/nadena.dev.modular-avatar/Editor/PreventStripTagObjects.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: eb8f842fbf1e4efdaf940eaf12cbbbb1
+timeCreated: 1681553175
\ No newline at end of file