diff --git a/include/ChatPage.h b/include/ChatPage.h
index be8fc12c72fd5438d473cc7ad432b12485a0d586..e8a40adebff24c3219b04ffb49cdd8fc62bd3434 100644
--- a/include/ChatPage.h
+++ b/include/ChatPage.h
@@ -37,7 +37,6 @@
 
 constexpr int CONSENSUS_TIMEOUT    = 1000;
 constexpr int SHOW_CONTENT_TIMEOUT = 3000;
-constexpr int SYNC_INTERVAL        = 2000;
 
 class ChatPage : public QWidget
 {
@@ -66,7 +65,6 @@ private slots:
         void syncCompleted(const SyncResponse &response);
         void syncFailed(const QString &msg);
         void changeTopRoomInfo(const QString &room_id);
-        void startSync();
         void logout();
         void addRoom(const QString &room_id);
         void removeRoom(const QString &room_id);
@@ -106,7 +104,6 @@ private:
         // Safety net if consensus is not possible or too slow.
         QTimer *showContentTimer_;
         QTimer *consensusTimer_;
-        QTimer *syncTimer_;
 
         QString current_room_;
         QMap<QString, QPixmap> room_avatars_;
diff --git a/src/ChatPage.cc b/src/ChatPage.cc
index 2484418370b373815ddb4b72bba495c608c7a72e..514494ea28a42de8d03b7b9ffeee2d6c29c267ea 100644
--- a/src/ChatPage.cc
+++ b/src/ChatPage.cc
@@ -111,10 +111,6 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent)
         user_info_widget_ = new UserInfoWidget(sideBarTopWidget_);
         sideBarTopWidgetLayout_->addWidget(user_info_widget_);
 
-        syncTimer_ = new QTimer(this);
-        syncTimer_->setSingleShot(true);
-        connect(syncTimer_, SIGNAL(timeout()), this, SLOT(startSync()));
-
         connect(user_info_widget_, SIGNAL(logout()), client_.data(), SLOT(logout()));
         connect(client_.data(), SIGNAL(loggedOut()), this, SLOT(logout()));
 
@@ -243,8 +239,6 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent)
 void
 ChatPage::logout()
 {
-        syncTimer_->stop();
-
         // Delete all config parameters.
         QSettings settings;
         settings.beginGroup("auth");
@@ -302,12 +296,6 @@ ChatPage::bootstrap(QString userid, QString homeserver, QString token)
         client_->initialSync();
 }
 
-void
-ChatPage::startSync()
-{
-        client_->sync();
-}
-
 void
 ChatPage::setOwnAvatar(const QPixmap &img)
 {
@@ -322,7 +310,7 @@ ChatPage::syncFailed(const QString &msg)
                 return;
 
         qWarning() << "Sync error:" << msg;
-        syncTimer_->start(SYNC_INTERVAL);
+        client_->sync();
 }
 
 // TODO: Should be moved in another class that manages this global list.
@@ -419,7 +407,7 @@ ChatPage::syncCompleted(const SyncResponse &response)
         room_list_->sync(state_manager_);
         view_manager_->sync(response.rooms());
 
-        syncTimer_->start(SYNC_INTERVAL);
+        client_->sync();
 }
 
 void
@@ -472,7 +460,7 @@ ChatPage::initialSyncCompleted(const SyncResponse &response)
         // Initialize room list.
         room_list_->setInitialRooms(settingsManager_, state_manager_);
 
-        syncTimer_->start(SYNC_INTERVAL);
+        client_->sync();
 
         emit contentLoaded();
 }
@@ -585,7 +573,7 @@ ChatPage::loadStateFromCache()
         showContentTimer_->start(SHOW_CONTENT_TIMEOUT);
 
         // Start receiving events.
-        syncTimer_->start(SYNC_INTERVAL);
+        client_->sync();
 }
 
 void
@@ -682,7 +670,4 @@ ChatPage::updateTypingUsers(const QString &roomid, const QList<QString> &user_id
         typingUsers_.insert(roomid, users);
 }
 
-ChatPage::~ChatPage()
-{
-        syncTimer_->stop();
-}
+ChatPage::~ChatPage() {}