Custom block and menu caching I have a custom block building a menu.
The cache works fine until a menu item is enabled/disabled in the menu edit, e.g. 

admin/structure/menu/manage/main
toggle the enabled checkbox and save.

The block does not reflect changes until the cache is cleared.

I have:

            '#cache' =&gt; [
                'tags' =&gt; [
                    'node_list'
                ],
                'contexts' =&gt; [
                    'url.path',
                ],
            ],


which picks up the url / menu text changes and also makes sure the block is valid for each node it is on [i.e. not showing the same block content on every node, but this node's version].

What tag do I need to make sure the cache is invalidated when menu item:enabled is toggled?
You have to add the cache tag of the menu, in this case the main menu:

  '#cache' =&gt; [
    'tags' =&gt; [
      'config:system.menu.main',
      ...