diff --git a/web/public/locales/en/views/settings.json b/web/public/locales/en/views/settings.json
index 742025ce7..70aea99ea 100644
--- a/web/public/locales/en/views/settings.json
+++ b/web/public/locales/en/views/settings.json
@@ -430,7 +430,7 @@
"enableDesc": "Temporarily disable an enabled camera until Frigate restarts. Disabling a camera completely stops Frigate's processing of this camera's streams. Detection, recording, and debugging will be unavailable. Note: This does not disable go2rtc restreams.",
"disableLabel": "Disabled cameras",
"disableDesc": "Enable a camera that is currently not visible in the UI and disabled in the configuration. A restart of Frigate is required after enabling.",
- "enableSuccess": "Enabled {{cameraName}} in configuration"
+ "enableSuccess": "Enabled {{cameraName}} in configuration. Restart Frigate to apply the changes."
},
"cameraConfig": {
"add": "Add Camera",
diff --git a/web/src/views/settings/CameraManagementView.tsx b/web/src/views/settings/CameraManagementView.tsx
index 5781046f7..df250fab9 100644
--- a/web/src/views/settings/CameraManagementView.tsx
+++ b/web/src/views/settings/CameraManagementView.tsx
@@ -19,10 +19,12 @@ import { isDesktop } from "react-device-detect";
import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel";
import { Switch } from "@/components/ui/switch";
import { Trans } from "react-i18next";
-import { useEnabledState } from "@/api/ws";
+import { useEnabledState, useRestart } from "@/api/ws";
import { Label } from "@/components/ui/label";
import axios from "axios";
import ActivityIndicator from "@/components/indicators/activity-indicator";
+import RestartDialog from "@/components/overlay/dialog/RestartDialog";
+import RestartRequiredIndicator from "@/components/indicators/RestartRequiredIndicator";
type CameraManagementViewProps = {
setUnsavedChanges: React.Dispatch>;
@@ -44,6 +46,10 @@ export default function CameraManagementView({
); // Track camera being edited
const [showWizard, setShowWizard] = useState(false);
+ // State for restart dialog when enabling a disabled camera
+ const [restartDialogOpen, setRestartDialogOpen] = useState(false);
+ const { send: sendRestart } = useRestart();
+
// List of cameras for dropdown
const enabledCameras = useMemo(() => {
if (config) {
@@ -148,6 +154,7 @@ export default function CameraManagementView({
htmlFor={"disabled-cameras-switch"}
>
{t("cameraManagement.streams.disableLabel")}
+