Drupal 8

Drupal 8 contextual links are locally cached in sessionStorage

I ran into a seriously confusing issue with a project that I’m learning the internals of Drupal 8 for: custom contextual links were not reliably appearing or even disappearing after removing them from code, and the only thing that seemed to work was to fully uninstall  and reinstall the custom module, which is far from ideal. Turns out that, for whatever reason, Drupal caches contextual link markup in sessionStorage, which is why clearing Drupal’s own cache had no effect like you would expect coming from Drupal 7. Ways of dealing with this are fully clearing your browser’s cache, opening the page in a new tab (due to how sessionStorage works), or opening up your browser’s developer tools and deleting the sessionStorage entries for the entities or other identifiers. For example, for a block it would be Drupal.contextual.block.*, while for a node it would be Drupal.contextual.node.*.