Show a different view mode depending on role
Turns out, there's a hook for that.

function hook_entity_view_mode_alter(&amp;$view_mode, Drupal\Core\Entity\EntityInterface $entity, $context) {

  // For nodes, change the view mode when it is teaser.
  if ($entity-&gt;getEntityTypeId() == 'node' &amp;&amp; $view_mode == 'teaser') {
    $view_mode = 'my_custom_view_mode';
  }
}