New state model and partial updates

I’m working on writing a new client-server component with Vaadin 7 and I’m trying to understand the best practices for partial updates. My server side component has a HierarchicalContainer. I understand that when the container is set on my component, I can update my ComponentState with custom state objects and that will be automatically pushed to the client. On the client side, I get the onStateChange call and I can rebuild my UI.

My question is how partial updates should be handled. Let’s assume the user changes one item in the Container. If I update the item in my ComponentState, the client side will get an onStateChange and rebuild the entire UI again which isn’t good for performance. I could use RPC to add/modify/remove a single item but then it feels like I’m circumventing the client-server state model. I could use the ComponentState as a way to capture changes (like having itemsRemoved and itemsAdded fields) but then it isn’t really state but more of generic event mechanism that captures a single repaint.

Maybe I’m just thinking about this incorrectly. I’m wondering if someone who has written some components using the new state and RPC models in Vaadin 7 can share their recommendation on a good design pattern for components with containers on the server side and propagating those changes. I tried looking at the Vaadin source but most of the more complex components (like Table and Tree) are still using the UIDL/PaintTarget approach.

Thanks,
-mike