after figuring out the grid / filters demo, I copied the relevent parts to one of my grids, adjusted for columns, and set local:false in the filters variable being loaded into the grid's features.

This caused problems so I dug into the code for FilterFeatures to track what is happening.

inside bindStore..

Code:
if(store){ if (this.local) { store.on('load', this.onLoad, this); } else { store.on('beforeload', this.onBeforeLoad, this); } }
So I check out FilterFeature's onBeforeLoad method and find all kinds of problems.
first, it's expecting arguments of store and options. This must be leftovers from 3.x, as the 4.x store's onBeforeLoad event sends store and an isntance of Ext.data.Operation. The function then furthers to stray by trying to locate a non-existant 'params' property of the options argument.

While trying to trace this down, I loaded the method's arguments variable into a gloabl to examine.
To my surprise, the onBeforeLoad method was being called with {} for arguments, thus no store, operation, or options.

For reference, i'm using a BufferStore with a properly configured proxy.Direct.