diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue
index 1c07bae9..5d50e72a 100644
--- a/src/components/notification/notification.vue
+++ b/src/components/notification/notification.vue
@@ -24,12 +24,15 @@
             <small>{{$t('notifications.followed_you')}}</small>
           </span>
         </div>
-        <small class="timeago"><router-link :to="{ name: 'conversation', params: { id: notification.status.id } }"><timeago :since="notification.action.created_at" :auto-update="240"></timeago></router-link></small>
+        <small class="timeago"><router-link v-if="notification.status" :to="{ name: 'conversation', params: { id: notification.status.id } }"><timeago :since="notification.action.created_at" :auto-update="240"></timeago></router-link></small>
       </span>
       <div class="follow-text" v-if="notification.type === 'follow'">
         <router-link :to="{ name: 'user-profile', params: { id: notification.action.user.id } }">@{{notification.action.user.screen_name}}</router-link>
       </div>
-      <status v-else class="faint" :compact="true" :statusoid="notification.status" :noHeading="true"></status>
+      <status v-if="notification.status" v-else class="faint" :compact="true" :statusoid="notification.status" :noHeading="true"></status>
+      <div v-if="!notification.status">
+        Favorite for missing post
+      </div>
     </div>
   </div>
 </template>
diff --git a/src/services/notifications_fetcher/notifications_fetcher.service.js b/src/services/notifications_fetcher/notifications_fetcher.service.js
new file mode 100644
index 00000000..5aedc4fb
--- /dev/null
+++ b/src/services/notifications_fetcher/notifications_fetcher.service.js
@@ -0,0 +1,41 @@
+import apiService from '../api/api.service.js'
+
+const update = ({store, notifications, older}) => {
+  store.dispatch('setNotificationsError', { value: false })
+
+  store.dispatch('addNewNotifications', { notifications, older })
+}
+
+const fetchAndUpdate = ({store, credentials, older = false}) => {
+  const args = { credentials }
+  const rootState = store.rootState || store.state
+  const timelineData = rootState.statuses.notifications
+
+  if (older) {
+    if (timelineData.minId !== Number.POSITIVE_INFINITY) {
+      args['until'] = timelineData.minId
+    }
+  } else {
+    args['since'] = timelineData.maxId
+  }
+
+  args['timeline'] = 'notifications'
+
+  return apiService.fetchTimeline(args)
+    .then((notifications) => {
+      update({store, notifications, older})
+    }, () => store.dispatch('setNotificationsError', { value: true }))
+}
+
+const startFetching = ({credentials, store}) => {
+  fetchAndUpdate({ credentials, store })
+  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })
+  return setInterval(boundFetchAndUpdate, 10000)
+}
+
+const notificationsFetcher = {
+  fetchAndUpdate,
+  startFetching
+}
+
+export default notificationsFetcher