diff --git a/app/src/main/java/com/google/reviewit/ReviewChangesFragment.java b/app/src/main/java/com/google/reviewit/ReviewChangesFragment.java
index 4c93b7c..e667928 100644
--- a/app/src/main/java/com/google/reviewit/ReviewChangesFragment.java
+++ b/app/src/main/java/com/google/reviewit/ReviewChangesFragment.java
@@ -24,6 +24,8 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.widget.ScrollView;
 import android.widget.TextView;
 
 import com.google.gerrit.extensions.restapi.RestApiException;
@@ -66,7 +68,24 @@
       }
     });
 
-    // TODO detect when scrolled to the end and automatically load next page
+    final View nextPageProgress = v(R.id.nextPageProgress);
+    final ScrollView scrollView = (ScrollView) v(R.id.scrollView);
+    scrollView.getViewTreeObserver().addOnScrollChangedListener(
+        new ViewTreeObserver.OnScrollChangedListener() {
+          @Override
+          public void onScrollChanged() {
+            if (getApp().getQueryHandler().hasNext()
+                && nextPageProgress.getVisibility() == View.GONE) {
+              View lastChild =
+                  scrollView.getChildAt(scrollView.getChildCount() - 1);
+              if ((lastChild.getBottom()
+                  - (scrollView.getHeight() + scrollView.getScrollY())) == 0) {
+                setVisible(nextPageProgress);
+                display();
+              }
+            }
+          }
+        });
   }
 
   private void display() {
@@ -83,6 +102,7 @@
     new AsyncTask<Void, Void, ChangeListData>() {
       private View progress;
       private View initialProgress;
+      private View nextPageProgress;
       private View reloadButton;
       private TextView statusText;
       private ViewGroup changeList;
@@ -92,6 +112,7 @@
         super.onPreExecute();
         progress = v(R.id.progress);
         initialProgress = v(R.id.initialProgress);
+        nextPageProgress = v(R.id.nextPageProgress);
         reloadButton = v(R.id.reloadButton);
         statusText = tv(R.id.statusText);
         changeList = vg(R.id.changeList);
@@ -129,7 +150,7 @@
 
         getActivity().invalidateOptionsMenu();
         setInvisible(progress);
-        setGone(initialProgress, reloadButton);
+        setGone(initialProgress, reloadButton, nextPageProgress);
 
         if (changeListData.error != null) {
           statusText.setText(changeListData.error);
diff --git a/app/src/main/java/com/google/reviewit/app/QueryHandler.java b/app/src/main/java/com/google/reviewit/app/QueryHandler.java
index bdaa6f3..0a87518 100644
--- a/app/src/main/java/com/google/reviewit/app/QueryHandler.java
+++ b/app/src/main/java/com/google/reviewit/app/QueryHandler.java
@@ -64,7 +64,10 @@
 
   public List<Change> next() throws RestApiException {
     query();
-    return result.subList(page * LIMIT_QUERY, (page + 1) * LIMIT_QUERY);
+    List<Change> nextChanges =
+        result.subList(page * LIMIT_QUERY, (page + 1) * LIMIT_QUERY);
+    page++;
+    return nextChanges;
   }
 
   public boolean hasNext() {
diff --git a/app/src/main/res/layout/content_review_changes.xml b/app/src/main/res/layout/content_review_changes.xml
index 3851a97..35e87b5 100644
--- a/app/src/main/res/layout/content_review_changes.xml
+++ b/app/src/main/res/layout/content_review_changes.xml
@@ -22,11 +22,11 @@
   <include layout="@layout/progress"/>
 
   <ScrollView
+    android:id="@+id/scrollView"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
     <LinearLayout
-      android:id="@+id/changeList"
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
@@ -56,6 +56,22 @@
         android:clickable="true"
         android:src="@drawable/ic_refresh_black_48dp"
         android:visibility="gone"/>
+
+      <LinearLayout
+        android:id="@+id/changeList"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+      </LinearLayout>
+
+      <ProgressBar
+        android:id="@+id/nextPageProgress"
+        android:layout_marginTop="3dp"
+        android:layout_marginBottom="3dp"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:indeterminate="true"
+        android:visibility="gone"/>
     </LinearLayout>
   </ScrollView>
 </LinearLayout>
