This is a MVP explaining what is broken with the preload functionality. There is a problem where the ipcRenderer does not have access to .on in a renderer process. You can find more discussion on the github issue.
git clone https://github.com/reZach/broken-preload-example
cd broken-preload-example
npm i
npm run start
The ipcRenderer should be allowed to add an event with the .on method in the renderer process.