diff --git a/src/components/views/room_settings/AliasSettings.js b/src/components/views/room_settings/AliasSettings.js
index ee4fc73593..d6a6b608e2 100644
--- a/src/components/views/room_settings/AliasSettings.js
+++ b/src/components/views/room_settings/AliasSettings.js
@@ -44,81 +44,25 @@ export default class AliasSettings extends React.Component {
     constructor(props) {
         super(props);
 
-        const aliasState = this.recalculateState(props.aliasEvents, props.canonicalAliasEvent);
-        this.state = Object.assign({newItem: ""}, aliasState);
-    }
-
-    recalculateState(aliasEvents, canonicalAliasEvent) {
-        aliasEvents = aliasEvents || [];
-
         const state = {
             domainToAliases: {}, // { domain.com => [#alias1:domain.com, #alias2:domain.com] }
             remoteDomains: [], // [ domain.com, foobar.com ]
             canonicalAlias: null, // #canonical:domain.com
             updatingCanonicalAlias: false,
+            newItem: "",
         };
+
         const localDomain = MatrixClientPeg.get().getDomain();
-
-        state.domainToAliases = this.aliasEventsToDictionary(aliasEvents);
-
+        state.domainToAliases = this.aliasEventsToDictionary(props.aliasEvents || []);
         state.remoteDomains = Object.keys(state.domainToAliases).filter((domain) => {
             return domain !== localDomain && state.domainToAliases[domain].length > 0;
         });
 
-        if (canonicalAliasEvent) {
-            state.canonicalAlias = canonicalAliasEvent.getContent().alias;
+        if (props.canonicalAliasEvent) {
+            state.canonicalAlias = props.canonicalAliasEvent.getContent().alias;
         }
 
-        return state;
-    }
-
-    saveSettings() {
-        let promises = [];
-
-        // save new aliases for m.room.aliases
-        const aliasOperations = this.getAliasOperations();
-        for (let i = 0; i < aliasOperations.length; i++) {
-            const alias_operation = aliasOperations[i];
-            console.log("alias %s %s", alias_operation.place, alias_operation.val);
-            switch (alias_operation.place) {
-                case 'add':
-                    promises.push(
-                        MatrixClientPeg.get().createAlias(
-                            alias_operation.val, this.props.roomId,
-                        ),
-                    );
-                    break;
-                case 'del':
-                    promises.push(
-                        MatrixClientPeg.get().deleteAlias(
-                            alias_operation.val,
-                        ),
-                    );
-                    break;
-                default:
-                    console.log("Unknown alias operation, ignoring: " + alias_operation.place);
-            }
-        }
-
-        let oldCanonicalAlias = null;
-        if (this.props.canonicalAliasEvent) {
-            oldCanonicalAlias = this.props.canonicalAliasEvent.getContent().alias;
-        }
-
-        const newCanonicalAlias = this.state.canonicalAlias;
-
-        if (this.props.canSetCanonicalAlias && oldCanonicalAlias !== newCanonicalAlias) {
-            console.log("AliasSettings: Updating canonical alias");
-            promises = [Promise.all(promises).then(
-                MatrixClientPeg.get().sendStateEvent(
-                    this.props.roomId, "m.room.canonical_alias", {
-                        alias: newCanonicalAlias,
-                    }, "",
-                ),
-            )];
-        }
-
-        return promises;
+        this.state = state;
     }
 
     aliasEventsToDictionary(aliasEvents) { // m.room.alias events
@@ -136,11 +80,6 @@ export default class AliasSettings extends React.Component {
         return (alias.match(/^#([^\/:,]+?):(.+)$/) && encodeURI(alias) === alias);
     }
 
-    getAliasOperations() {
-        const oldAliases = this.aliasEventsToDictionary(this.props.aliasEvents);
-        return ObjectUtils.getKeyValueArrayDiffs(oldAliases, this.state.domainToAliases);
-    }
-
     changeCanonicalAlias(alias) {
         if (!this.props.canSetCanonicalAlias) return;
 
diff --git a/src/components/views/settings/tabs/GeneralRoomSettingsTab.js b/src/components/views/settings/tabs/GeneralRoomSettingsTab.js
index 75373a69bc..0ce2c174e4 100644
--- a/src/components/views/settings/tabs/GeneralRoomSettingsTab.js
+++ b/src/components/views/settings/tabs/GeneralRoomSettingsTab.js
@@ -68,12 +68,6 @@ export default class GeneralRoomSettingsTab extends React.Component {
         });
     };
 
-    _saveAliases = (e) => {
-        // TODO: Live modification?
-        if (!this.refs.aliasSettings) return;
-        this.refs.aliasSettings.saveSettings();
-    };
-
     _saveGroups = (e) => {
         // TODO: Live modification?
         if (!this.refs.flairSettings) return;
@@ -113,12 +107,9 @@ export default class GeneralRoomSettingsTab extends React.Component {
 
                 <span className='mx_SettingsTab_subheading'>{_t("Room Addresses")}</span>
                 <div className='mx_SettingsTab_section mx_SettingsTab_subsectionText'>
-                    <AliasSettings ref="aliasSettings" roomId={this.props.roomId}
+                    <AliasSettings roomId={this.props.roomId}
                                    canSetCanonicalAlias={canSetCanonical} canSetAliases={canSetAliases}
                                    canonicalAliasEvent={canonicalAliasEv} aliasEvents={aliasEvents} />
-                    <AccessibleButton onClick={this._saveAliases} kind='primary'>
-                        {_t("Save")}
-                    </AccessibleButton>
                 </div>
                 <div className='mx_SettingsTab_section'>
                     <LabelledToggleSwitch value={this.state.isRoomPublished}