diff --git a/changelog.d/3634.bugfix b/changelog.d/3634.bugfix
new file mode 100644
index 0000000000..0b1f007030
--- /dev/null
+++ b/changelog.d/3634.bugfix
@@ -0,0 +1 @@
+Crash when opening room addresses screen with no internet connection
\ No newline at end of file
diff --git a/changelog.d/3635.feature b/changelog.d/3635.feature
new file mode 100644
index 0000000000..30d2cc64b4
--- /dev/null
+++ b/changelog.d/3635.feature
@@ -0,0 +1 @@
+Add retry support in room addresses screen
\ No newline at end of file
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasAction.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasAction.kt
index 80e1603453..e83f9f4aa2 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasAction.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasAction.kt
@@ -36,4 +36,7 @@ sealed class RoomAliasAction : VectorViewModelAction {
     object ToggleAddLocalAliasForm : RoomAliasAction()
     data class SetNewLocalAliasLocalPart(val aliasLocalPart: String) : RoomAliasAction()
     object AddLocalAlias : RoomAliasAction()
+
+    // Retry to fetch data in error
+    object Retry : RoomAliasAction()
 }
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt
index 4a683b6292..a14bb61606 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt
@@ -57,6 +57,7 @@ class RoomAliasController @Inject constructor(
         fun setNewLocalAliasLocalPart(aliasLocalPart: String)
         fun addLocalAlias()
         fun openAliasDetail(alias: String)
+        fun retry()
     }
 
     var callback: Callback? = null
@@ -99,8 +100,10 @@ class RoomAliasController @Inject constructor(
             }
             is Fail       -> {
                 errorWithRetryItem {
+                    id("rd_error")
                     text(host.stringProvider.getString(R.string.room_alias_publish_to_directory_error,
                             host.errorFormatter.toHumanReadable(data.roomDirectoryVisibility.error)))
+                    listener { host.callback?.retry() }
                 }
             }
         }
@@ -119,7 +122,6 @@ class RoomAliasController @Inject constructor(
         data.canonicalAlias
                 ?.takeIf { it.isNotEmpty() }
                 ?.let { canonicalAlias ->
-
                     profileActionItem {
                         id("canonical")
                         title(data.canonicalAlias)
@@ -224,6 +226,7 @@ class RoomAliasController @Inject constructor(
                 errorWithRetryItem {
                     id("alt_error")
                     text(host.errorFormatter.toHumanReadable(localAliases.error))
+                    listener { host.callback?.retry() }
                 }
             }
         }
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasFragment.kt
index 3f429737f2..36dbf7bf8c 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasFragment.kt
@@ -181,6 +181,10 @@ class RoomAliasFragment @Inject constructor(
                 .show(childFragmentManager, "ROOM_ALIAS_ACTIONS")
     }
 
+    override fun retry() {
+        viewModel.handle(RoomAliasAction.Retry)
+    }
+
     private fun removeLocalAlias(alias: String) {
         MaterialAlertDialogBuilder(requireContext(), R.style.ThemeOverlay_Vector_MaterialAlertDialog_Destructive)
                 .setTitle(R.string.dialog_title_confirmation)
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasViewModel.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasViewModel.kt
index b8a0149198..aa9981997c 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasViewModel.kt
@@ -25,8 +25,8 @@ import com.airbnb.mvrx.Success
 import com.airbnb.mvrx.Uninitialized
 import com.airbnb.mvrx.ViewModelContext
 import dagger.assisted.Assisted
-import dagger.assisted.AssistedInject
 import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
 import im.vector.app.core.extensions.exhaustive
 import im.vector.app.core.platform.VectorViewModel
 import im.vector.app.features.powerlevel.PowerLevelsObservableFactory
@@ -199,9 +199,19 @@ class RoomAliasViewModel @AssistedInject constructor(@Assisted initialState: Roo
             RoomAliasAction.AddLocalAlias                 -> handleAddLocalAlias()
             is RoomAliasAction.RemoveLocalAlias           -> handleRemoveLocalAlias(action)
             is RoomAliasAction.PublishAlias               -> handlePublishAlias(action)
+            RoomAliasAction.Retry                         -> handleRetry()
         }.exhaustive
     }
 
+    private fun handleRetry() = withState { state ->
+        if (state.localAliases is Fail) {
+            fetchRoomAlias()
+        }
+        if (state.roomDirectoryVisibility is Fail) {
+            fetchRoomDirectoryVisibility()
+        }
+    }
+
     private fun handleSetRoomDirectoryVisibility(action: RoomAliasAction.SetRoomDirectoryVisibility) {
         postLoading(true)
         viewModelScope.launch {