Xmonad: dynamically adding physical monitors

I have xmonad configured via home-manager like so:

xsession = {
  enable = true;
  windowManager.xmonad = {
    enable = true;
    enableContribAndExtras = true;
    extraPackages = self: [ self.xmobar ];
  };
};

with the following close-to-vanilla xmonad.hs:

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run
import XMonad.Util.EZConfig
import System.IO

main = do
    xmproc <- spawnPipe "xmobar ~/.xmobarrc"
    xmonad $ docks def
        { layoutHook = avoidStruts $ layoutHook def
        , logHook = dynamicLogWithPP xmobarPP
            { ppOutput = hPutStrLn xmproc
            , ppTitle = xmobarColor "green" "" . shorten 50
            }

        , modMask    = mod4Mask
        , terminal   = "st"
        , focusedBorderColor = "#528b8b"
        , borderWidth = 2
        , normalBorderColor = "#3a3a3a"
        } `additionalKeysP` myKeys

myKeys =
    [ ("M-x q", spawn "qutebrowser")
    , ("M-S-p", spawn "passmenu")
    ] ++ xf86Keys

xf86Keys =
    [ ("<XF86AudioMute>", spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle")
    , ("<XF86AudioMicMute>", spawn "pactl set-source-mute @DEFAULT_SOURCE@ toggle")
    , ("<XF86AudioRaiseVolume>", spawn "pactl set-sink-mute @DEFAULT_SINK@ false && pactl set-sink-volume @DEFAULT_SINK@ +2%")
    , ("<XF86AudioLowerVolume>", spawn "pactl set-sink-mute @DEFAULT_SINK@ false && pactl set-sink-volume @DEFAULT_SINK@ -2%")
    , ("<XF86ScreenSaver>", spawn "echo RELOADAGENT | gpg-connect-agent; physlock")
    , ("<XF86MonBrightnessUp>", spawn "light -A 5")
    , ("<XF86MonBrightnessDown>", spawn "light -U 5")
    ]

and I’m having some issues dynamically adding a physical monitor; if I connect an external monitor and reboot my system, xmonad finds it and manages it as expected, but if I add a monitor via xrandr --output <OUTPUT> --right-of LVDS-1 --auto my primary output is offset like the image below, and I’m not able to spawn any windows on the external monitor. Is there something I’m missing?

Cheers.

Upgrading from 19.03 to 19.09 seems to have resolved the issue. Unfortunately I don’t have time to bisect the range of commits that affected XMonad between the two releases.