As can be seen below, after modifying the store by calling loadData, the snapshot is not updated to reflect the latest clean data source, but instead represents the first loaded data source. I'm doing advanced filtering in my application (because NestedList is not yet inheriting from list, so I'm basically coding NestedList with filters). To workaround for now I am calling "delete store.snapshot;" before "store.loadData(..."

Code:
Ext.setup({ onReady: function () {
    var data = [];
    for (var x = 0; x < 100; x++) data[data.length] = { html: x };
    new Ext.List({
        fullscreen: true,
        store: new Ext.data.Store({ fields: ['html'] }),
        tpl: new Ext.XTemplate('<tpl for="."><div class="list-item">{html}</div></tpl>'),
        itemSelector: '.list-item',
        dockedItems: [{ dock: 'top', xtype: 'button', text: 'shorten list',
            handler: function () {
                var store = this.ownerCt.getStore();
                store.loadData([{ html: 'invisible'}]);
                alert(store.snapshot.getCount());
            }
        }]
    }).getStore().loadData(data);
}});