In my experience it's going to be very hard to make moving elements around performant, unless you're using multiple canvases (which is basically just using the DOM) or you use WebGL. How are you going to solve this problem?
At styling and layout I use dirty flag managment, so that branches of the component tree is restyled or layed out only if needed. This kind of dirty-management makes stuff a bit more complicated than otherwise, but this is a tradeoff. At painting I did not implement caching (painting to a memory buffer) and dirty flag management yet, but here I will also do optimizations in the future. This is a bit tricky, as painted components can have alpha/trasparency.
The most serious bottleneck will be probably painting (everything else can be addressed with algorithmic optimizations).
At the beginning of the project I've looked at canvas painting benchmarks, and I decided canvas performance is already quite good. The slowest is drawing texts, but even that is not that terribly slow. I expect that canvas performance will improve in the browsers in the future so time works for me.
Currently my samples' performance feels acceptable, although I did not do serious performance tests yet (and as I mentioned I did not implement the most agressive optimizations regarding painting yet.)
TL;DR: Making this fast is quite challenging, but not undoable I think.