diff --git a/Source/Editor/CustomEditors/Dedicated/MissingScriptEditor.cs b/Source/Editor/CustomEditors/Dedicated/MissingScriptEditor.cs
new file mode 100644
index 000000000..03d5ddd55
--- /dev/null
+++ b/Source/Editor/CustomEditors/Dedicated/MissingScriptEditor.cs
@@ -0,0 +1,26 @@
+using FlaxEditor.CustomEditors.Editors;
+using FlaxEngine;
+using FlaxEngine.GUI;
+
+namespace FlaxEditor.CustomEditors.Dedicated;
+
+///
+/// The missing script editor.
+///
+[CustomEditor(typeof(MissingScript)), DefaultEditor]
+public class MissingScriptEditor : GenericEditor
+{
+ ///
+ public override void Initialize(LayoutElementsContainer layout)
+ {
+ if (layout.ContainerControl is not DropPanel dropPanel)
+ {
+ base.Initialize(layout);
+ return;
+ }
+
+ dropPanel.HeaderTextColor = Color.OrangeRed;
+
+ base.Initialize(layout);
+ }
+}
diff --git a/Source/Engine/Level/Components/MissingScript.h b/Source/Engine/Level/Components/MissingScript.h
new file mode 100644
index 000000000..601346203
--- /dev/null
+++ b/Source/Engine/Level/Components/MissingScript.h
@@ -0,0 +1,65 @@
+#pragma once
+
+#include "Engine/Core/Cache.h"
+#include "Engine/Scripting/Script.h"
+#include "Engine/Scripting/ScriptingObjectReference.h"
+#include "Engine/Serialization/JsonWriters.h"
+
+///
+/// Actor script component that represents missing script.
+///
+API_CLASS(Attributes="HideInEditor") class FLAXENGINE_API MissingScript : public Script
+{
+ API_AUTO_SERIALIZATION();
+ DECLARE_SCRIPTING_TYPE(MissingScript);
+
+public:
+
+ ///
+ /// Namespace and type name of missing script.
+ ///
+ API_FIELD(Attributes="ReadOnly") String MissingTypeName;
+
+ ///
+ /// Missing script serialized data.
+ ///
+ API_FIELD(Hidden, Attributes="HideInEditor") String Data;
+
+ ///
+ /// Field for assigning new script to transfer data to.
+ ///
+ API_PROPERTY()
+ FORCE_INLINE ScriptingObjectReference