I’ve only recently developed my first Gutenberg blocks, and am now experimenting with “somewhat dynamic” blocks. My blocks revolve around microformats, after all, and I do not want existing posts reflecting block changes. I want these microformats “baked in,” even after my plugin’s deactivated.
Since we build dynamic blocks at 10up we now also don’t have the issue of not being able to update markup in patterns anymore. Because we can update the markup of our dynamic block which gets reflected everywhere.
Update: Just now reading https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/creating-dynamic-blocks/.
You can also save an HTML representation of the block, [which] will be rendered if your block is deactivated or your render callback is removed.
Best of both worlds? (My current approach, and a fairly standard one, involves a REST API call to get any “dynamic” data, while rendering is still done entirely in the block editor.)