In Beta 2, if the number of records in an infinite-scrolling grid is less than the page size - say, 35 total records with page size 50 - and the size of the grid is larger than the visible area in the browser so that a scrollbar is generated, the first visible set of records will load, but the grid will go blank when we attempt to scroll. We fixed this with a small change to onElScroll in PagingScroller:

Old code:

Code:
    onElScroll: function(e, t) {
...
        me.syncScroll = true;
        // end of request was past what the total is, grab from the end back a pageSize
        if (requestEnd > totalCount - 1) {
            this.cancelLoad();
            if (store.rangeSatisfied(totalCount - pageSize, totalCount - 1)) {
                me.syncScroll = true;
            }
            store.guaranteeRange(totalCount - pageSize, totalCount - 1);
        // Out of range, need to reset the current data set
        } else if (visibleStart < guaranteedStart || visibleEnd > guaranteedEnd) {
            if (store.rangeSatisfied(requestStart, requestEnd)) {
                this.cancelLoad();
                store.guaranteeRange(requestStart, requestEnd);
            } else {
                store.mask();
                me.attemptLoad(requestStart, requestEnd);
            }
            // dont sync the scroll view immediately, sync after the range has been guaranteed
            me.syncScroll = false;
        } else if (activePrefetch && visibleStart < (guaranteedStart + numFromEdge) && prevPage > 0) {
            me.syncScroll = true;
            store.prefetchPage(prevPage);
        } else if (activePrefetch && visibleEnd > (guaranteedEnd - numFromEdge) && nextPage < lastPage) {
            me.syncScroll = true;
            store.prefetchPage(nextPage);
        }
New code:


Code:
        onElScroll: function(e, t) {
...
            me.syncScroll = true;
            if (totalCount >= pageSize) {
                // end of request was past what the total is, grab from the end back a pageSize
                if (requestEnd > totalCount - 1) {
                    this.cancelLoad();
                    if (store.rangeSatisfied(totalCount - pageSize, totalCount - 1)) {
                        me.syncScroll = true;
                    }
                    store.guaranteeRange(totalCount - pageSize, totalCount - 1);
                    // Out of range, need to reset the current data set
                } else if (visibleStart < guaranteedStart || visibleEnd > guaranteedEnd) {
                    if (store.rangeSatisfied(requestStart, requestEnd)) {
                        this.cancelLoad();
                        store.guaranteeRange(requestStart, requestEnd);
                    } else {
                        store.mask();
                        me.attemptLoad(requestStart, requestEnd);
                    }
                    // dont sync the scroll view immediately, sync after the range has been guaranteed
                    me.syncScroll = false;
                } else if (activePrefetch && visibleStart < (guaranteedStart + numFromEdge) && prevPage > 0) {
                    me.syncScroll = true;
                    store.prefetchPage(prevPage);
                } else if (activePrefetch && visibleEnd > (guaranteedEnd - numFromEdge) && nextPage < lastPage) {
                    me.syncScroll = true;
                    store.prefetchPage(nextPage);
                }
            }