The canvas changes size when either the viewport changes, which you don't really have full control over, and when you change its size manually. Ideally you would not use manually changing the size of the canvas for zooming type effects.
The only tool we have for non developer changes is the Drawing Canvas Condition "On resolution changed".
I think the best solution using that would be storing a snapshot using the Binary plug in Local storage.
That means replacing the snapshot incrementally, and there will be missed frames.