One of the biggest problems with developing blocks for Gutenberg is that it relies on the output markup as the overall source of truth, when it should be the attributes and/or state. So, if for any reason you want to a simply replace a "div" with a "nav" in a block you developed a year ago, you are screwed.