Performance issues in one of the most recent updates cause Metamask to freeze and/or crash out completely on certain common actions, making some dApps unusable.
Adding the chainId validation as a strict requirement for connection even on private networks broke dapps running on chains/nodes that do not implement the chain_id method, including those connecting to older versions of geth.
An update which caused chainChanged to be emitted on every page load, producing some infinite reload loops and making dApps unusable, especially where programmed to refresh onChainChanged.
Especially lately, Metamask has been forcing updates that break dApps without notice.