diff --git a/src/actions/members.js b/src/actions/members.js
index dee9e19..e361436 100644
--- a/src/actions/members.js
+++ b/src/actions/members.js
@@ -257,10 +257,11 @@ async function getStatsDistributionDone(handle, track, subTrack, uuid, tokenV3)
  * @desc Create an action that signals beginning of subtrack challenges loading.
  * @param {String} handle Member handle.
  * @param {String} uuid Operation UUID.
+ * @param {Number} pageNum Page index.
  * @return {Action}
  */
-async function getSubtrackChallengesInit(handle, uuid) {
-  return { handle, uuid };
+async function getSubtrackChallengesInit(handle, uuid, pageNum) {
+  return { handle, uuid, pageNum };
 }
 
 /**
@@ -340,7 +341,7 @@ async function getSubtrackChallengesV4Done(
       challenges: res.challenges,
       refresh,
       handle,
-    }));
+    })).catch(e => ({ handle, error: e }));
 }
 
 /**
diff --git a/src/reducers/members.js b/src/reducers/members.js
index 76c70d5..6355d77 100644
--- a/src/reducers/members.js
+++ b/src/reducers/members.js
@@ -289,10 +289,16 @@ function onGetActiveChallengesDone(state, { error, payload }) {
  * @return {Object} New state.
  */
 function onGetSubtrackChallengesInit(state, { payload }) {
-  const { handle, uuid } = payload;
+  const { handle, uuid, pageNum } = payload;
+
   return {
     ...state,
-    [handle]: { ...state[handle], loadingSubTrackChallengesUUID: uuid },
+    [handle]: {
+      ...state[handle],
+      loadingSubTrackChallengesUUID: uuid,
+      subtrackChallengesHasMore: false,
+      ...(pageNum === 1 ? { subtrackChallenges: [] } : {}),
+    },
   };
 }
 
@@ -303,18 +309,28 @@ function onGetSubtrackChallengesInit(state, { payload }) {
  * @return {Object} New state.
  */
 function onGetSubtrackChallengesDone(state, { error, payload }) {
-  if (error) {
-    logger.error('Failed to get member subtrack challenges', payload);
-    fireErrorMessage('Failed to get member subtrack challenges', '');
-    return state;
-  }
-
   const {
     uuid,
     challenges,
     refresh,
     handle,
+    error: payloadError,
   } = payload;
+
+  if (error || payloadError) {
+    logger.error('Failed to get member subtrack challenges', payload);
+    fireErrorMessage('Failed to get member subtrack challenges', '');
+
+    return {
+      ...state,
+      [handle]: {
+        ...state[handle],
+        subtrackChallengesHasMore: false,
+        loadingSubTrackChallengesUUID: '',
+      },
+    };
+  }
+
   if (uuid !== state[handle].loadingSubTrackChallengesUUID) return state;
 
   return {