diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialogWithDoNotShowAgain.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialogWithDoNotShowAgain.kt
new file mode 100644
index 0000000000..671e35c926
--- /dev/null
+++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/ErrorDialogWithDoNotShowAgain.kt
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2024 New Vector Ltd
+ *
+ * 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.
+ */
+
+package io.element.android.libraries.designsystem.components.dialogs
+
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.height
+import androidx.compose.material3.BasicAlertDialog
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
+import io.element.android.compound.theme.ElementTheme
+import io.element.android.libraries.designsystem.preview.ElementPreview
+import io.element.android.libraries.designsystem.preview.PreviewsDayNight
+import io.element.android.libraries.designsystem.theme.components.Checkbox
+import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent
+import io.element.android.libraries.designsystem.theme.components.Text
+import io.element.android.libraries.ui.strings.CommonStrings
+
+@OptIn(ExperimentalMaterial3Api::class)
+@Composable
+fun ErrorDialogWithDoNotShowAgain(
+ content: String,
+ onDismiss: (Boolean) -> Unit,
+ modifier: Modifier = Modifier,
+ title: String = ErrorDialogDefaults.title,
+ submitText: String = ErrorDialogDefaults.submitText,
+) {
+ var doNotShowAgain by remember { mutableStateOf(false) }
+ BasicAlertDialog(
+ modifier = modifier,
+ onDismissRequest = { onDismiss(doNotShowAgain) }
+ ) {
+ SimpleAlertDialogContent(
+ title = title,
+ submitText = submitText,
+ onSubmitClick = { onDismiss(doNotShowAgain) },
+ ) {
+ Column {
+ Text(
+ text = content,
+ style = ElementTheme.materialTypography.bodyMedium,
+ )
+ Spacer(modifier = Modifier.height(8.dp))
+ Row(verticalAlignment = Alignment.CenterVertically) {
+ Checkbox(checked = doNotShowAgain, onCheckedChange = { doNotShowAgain = it })
+ Text(
+ text = stringResource(id = CommonStrings.common_do_not_show_this_again),
+ style = ElementTheme.materialTypography.bodyMedium,
+ )
+ }
+ }
+ }
+ }
+}
+
+@PreviewsDayNight
+@Composable
+internal fun ErrorDialogWithDoNotShowAgainPreview() = ElementPreview {
+ ErrorDialogWithDoNotShowAgain(
+ content = "Content",
+ onDismiss = {},
+ )
+}
diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml
index fd7f695c58..7c7b23cfa6 100644
--- a/libraries/ui-strings/src/main/res/values/localazy.xml
+++ b/libraries/ui-strings/src/main/res/values/localazy.xml
@@ -129,6 +129,7 @@
"Decryption error"
"Developer options"
"Direct chat"
+ "Do not show this again"
"(edited)"
"Editing"
"* %1$s %2$s"