diff --git a/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-components.module.ts b/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-components.module.ts
index 64a90d5d24..44bc1ad4c8 100644
--- a/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-components.module.ts
+++ b/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-components.module.ts
@@ -24,6 +24,7 @@ import { TbIotHubAddItemDialogComponent } from './iot-hub-add-item-dialog.compon
import { TbIotHubInstallDialogComponent } from './iot-hub-install-dialog.component';
import { TbIotHubUpdateDialogComponent } from './iot-hub-update-dialog.component';
import { TbIotHubDeleteDialogComponent } from './iot-hub-delete-dialog.component';
+import { TbIotHubUnpublishedWarningDialogComponent } from './iot-hub-unpublished-warning-dialog.component';
import { TbDeviceInstallDialogComponent } from './device-install-dialog/device-install-dialog.component';
import { TbIotHubSearchComponent } from './iot-hub-search.component';
import { TbIotHubInstalledItemsTableComponent } from './iot-hub-installed-items-table.component';
@@ -39,6 +40,7 @@ import { IotHubActionsService } from './iot-hub-actions.service';
TbIotHubInstallDialogComponent,
TbIotHubUpdateDialogComponent,
TbIotHubDeleteDialogComponent,
+ TbIotHubUnpublishedWarningDialogComponent,
TbDeviceInstallDialogComponent,
TbIotHubSearchComponent,
TbIotHubInstalledItemsTableComponent,
@@ -59,6 +61,7 @@ import { IotHubActionsService } from './iot-hub-actions.service';
TbIotHubInstallDialogComponent,
TbIotHubUpdateDialogComponent,
TbIotHubDeleteDialogComponent,
+ TbIotHubUnpublishedWarningDialogComponent,
TbDeviceInstallDialogComponent,
TbIotHubSearchComponent,
TbIotHubInstalledItemsTableComponent,
diff --git a/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-unpublished-warning-dialog.component.html b/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-unpublished-warning-dialog.component.html
new file mode 100644
index 0000000000..2f14b5f99a
--- /dev/null
+++ b/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-unpublished-warning-dialog.component.html
@@ -0,0 +1,32 @@
+
+
+
+ warning
+
{{ 'iot-hub.unpublished-warning-title' | translate }}
+
+
{{ 'iot-hub.unpublished-warning-text' | translate }}
+
+ {{ data.item.name }}
+ v {{ data.item.version }}
+
+
+
+
+
+
diff --git a/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-unpublished-warning-dialog.component.scss b/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-unpublished-warning-dialog.component.scss
new file mode 100644
index 0000000000..184924cbcc
--- /dev/null
+++ b/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-unpublished-warning-dialog.component.scss
@@ -0,0 +1,82 @@
+/**
+ * Copyright © 2016-2026 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.tb-iot-hub-warning-content {
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ padding: 24px;
+ max-width: 480px;
+}
+
+.tb-iot-hub-warning-title-row {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+}
+
+.tb-iot-hub-warning-icon {
+ color: #d32f2f;
+ font-size: 28px;
+ width: 28px;
+ height: 28px;
+}
+
+.tb-iot-hub-warning-title {
+ font-size: 20px;
+ font-weight: 600;
+ line-height: 24px;
+ letter-spacing: 0.1px;
+ color: rgba(0, 0, 0, 0.87);
+ margin: 0;
+}
+
+.tb-iot-hub-warning-text {
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 20px;
+ letter-spacing: 0.2px;
+ color: rgba(0, 0, 0, 0.75);
+ margin: 0;
+}
+
+.tb-iot-hub-warning-item {
+ display: flex;
+ align-items: baseline;
+ gap: 8px;
+ padding: 12px 16px;
+ background: rgba(211, 47, 47, 0.08);
+ border-left: 3px solid #d32f2f;
+ border-radius: 2px;
+
+ .tb-iot-hub-warning-item-name {
+ font-weight: 600;
+ color: rgba(0, 0, 0, 0.87);
+ }
+
+ .tb-iot-hub-warning-item-version {
+ font-size: 13px;
+ color: rgba(0, 0, 0, 0.54);
+ }
+}
+
+.tb-iot-hub-warning-actions {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ gap: 8px;
+ padding: 8px;
+}
diff --git a/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-unpublished-warning-dialog.component.ts b/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-unpublished-warning-dialog.component.ts
new file mode 100644
index 0000000000..3d55dc598a
--- /dev/null
+++ b/ui-ngx/src/app/modules/home/components/iot-hub/iot-hub-unpublished-warning-dialog.component.ts
@@ -0,0 +1,53 @@
+///
+/// Copyright © 2016-2026 The Thingsboard Authors
+///
+/// Licensed under the Apache License, Version 2.0 (the "License");
+/// you may not use this file except in compliance with the License.
+/// You may obtain a copy of the License at
+///
+/// http://www.apache.org/licenses/LICENSE-2.0
+///
+/// Unless required by applicable law or agreed to in writing, software
+/// distributed under the License is distributed on an "AS IS" BASIS,
+/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+/// See the License for the specific language governing permissions and
+/// limitations under the License.
+///
+
+import { Component, Inject } from '@angular/core';
+import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
+import { Router } from '@angular/router';
+import { Store } from '@ngrx/store';
+import { AppState } from '@core/core.state';
+import { DialogComponent } from '@shared/components/dialog.component';
+import { MpItemVersionView } from '@shared/models/iot-hub/iot-hub-version.models';
+
+export interface IotHubUnpublishedWarningDialogData {
+ item: MpItemVersionView;
+}
+
+@Component({
+ selector: 'tb-iot-hub-unpublished-warning-dialog',
+ standalone: false,
+ templateUrl: './iot-hub-unpublished-warning-dialog.component.html',
+ styleUrls: ['./iot-hub-unpublished-warning-dialog.component.scss']
+})
+export class TbIotHubUnpublishedWarningDialogComponent extends DialogComponent {
+
+ constructor(
+ protected store: Store,
+ protected router: Router,
+ protected dialogRef: MatDialogRef,
+ @Inject(MAT_DIALOG_DATA) public data: IotHubUnpublishedWarningDialogData
+ ) {
+ super(store, router, dialogRef);
+ }
+
+ confirm(): void {
+ this.dialogRef.close(true);
+ }
+
+ cancel(): void {
+ this.dialogRef.close(false);
+ }
+}