diff --git a/app/lib/methods/subscriptions/room.js b/app/lib/methods/subscriptions/room.js
index bbab25b58c0100259e42ea52812e7844c1ee0f50..1a3de160b73b29c3a06387ebd2de437ba172290a 100644
--- a/app/lib/methods/subscriptions/room.js
+++ b/app/lib/methods/subscriptions/room.js
@@ -19,7 +19,6 @@ export default function subscribeRoom({ rid }) {
 	let disconnectedListener;
 	let notifyRoomListener;
 	let messageReceivedListener;
-	const typingTimeouts = {};
 
 	const handleConnection = () => {
 		this.loadMissedMessages({ rid }).catch(e => console.log(e));
@@ -200,12 +199,6 @@ export default function subscribeRoom({ rid }) {
 			messageReceivedListener.then(removeListener);
 			messageReceivedListener = false;
 		}
-		Object.keys(typingTimeouts).forEach((key) => {
-			if (typingTimeouts[key]) {
-				clearTimeout(typingTimeouts[key]);
-				typingTimeouts[key] = null;
-			}
-		});
 		reduxStore.dispatch(clearUserTyping());
 	};
 
diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js
index aadbe18eaea3d0b96c3b63a3a51fa6f9f5f1b674..7bfe4e5c63f4b71f6a5675a5c68583952f328ca8 100644
--- a/app/views/RoomView/index.js
+++ b/app/views/RoomView/index.js
@@ -203,6 +203,9 @@ class RoomView extends React.Component {
 				this.init();
 			});
 		}
+		if (appState === 'background' && appState !== prevProps.appState) {
+			this.unsubscribe();
+		}
 	}
 
 	async componentWillUnmount() {
@@ -234,9 +237,7 @@ class RoomView extends React.Component {
 				}
 			}
 		}
-		if (this.sub && this.sub.stop) {
-			this.sub.stop();
-		}
+		this.unsubscribe();
 		if (this.didFocusListener && this.didFocusListener.remove) {
 			this.didFocusListener.remove();
 		}
@@ -282,6 +283,7 @@ class RoomView extends React.Component {
 							this.setLastOpen(null);
 						}
 						RocketChat.readMessages(room.rid, newLastOpen).catch(e => console.log(e));
+						this.unsubscribe();
 						this.sub = await RocketChat.subscribeRoom(room);
 					}
 				}
@@ -324,6 +326,12 @@ class RoomView extends React.Component {
 		}
 	}
 
+	unsubscribe = () => {
+		if (this.sub && this.sub.stop) {
+			this.sub.stop();
+		}
+	}
+
 	observeRoom = (room) => {
 		const observable = room.observe();
 		this.subSubscription = observable
diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js
index ef96f10b7cff777110f779331e2b82079a18815b..2f60cbc665f9911affb62ad82d90f61178c1b4af 100644
--- a/app/views/RoomsListView/index.js
+++ b/app/views/RoomsListView/index.js
@@ -165,7 +165,7 @@ class RoomsListView extends React.Component {
 		this.willFocusListener = props.navigation.addListener('willFocus', () => {
 			// Check if there were changes while not focused (it's set on sCU)
 			if (this.shouldUpdate) {
-				animateNextTransition();
+				// animateNextTransition();
 				this.forceUpdate();
 				this.shouldUpdate = false;
 			}