Issue 1:
I have read the Contributing Guidelines for this project.

I agree to follow the Code of Conduct that this project adheres to.

I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Duplicates

First of all, these duplicates are questions; not discussions so this issue can be open yet.

#10861

Hello guys, so, in the past months I've been using Electron and I have to say that it's a really good framework. But I've found the great issue; app size.

Electron apps are way TOO BIG, more than they shouldn't. I know that this is because of the Chromium engine who needs to be packaged with Electron.

My question would be...

Why not package Chromium as a shared resource (per system or per user)

This could work like Node Modules do; every Electron version has a chromium engine. So if for example, Discord has electron 7 and vscode does too we are reducing app size.

This could be done as an optional electron-builder/packager/forge option.

Issue 2:
Preflight Checklist

I have read the Contributing Guidelines for this project.

I agree to follow the Code of Conduct that this project adheres to.

I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Electron Version

12.0.1

What operating system are you using?

Windows

Operating System Version

10

What arch are you using?

x64

Last Known Working Electron version

No response

Expected Behavior

Moving window, should not trigger a resize event

Actual Behavior

Move window triggers resize event

Testcase Gist URL

No response

Additional Information

No response

Here's a repo demonstrating this, or see the trimmed down example below.

const {app, BrowserWindow} = require('electron')

function createWindow () {
const mainWindow = new BrowserWindow({
width: 800,
height: 600
});

mainWindow.loadURL('https://google.com');

mainWindow.on('resize', ()=>{
console.log('resize event: current size: ' + JSON.stringify(mainWindow.getSize()));
});

mainWindow.on('move', ()=>{
// console.log('move event');
});

mainWindow.on("moved", () => {
console.log("Finished moving: current size: " + JSON.stringify(mainWindow.getSize()));
})
}

app.on('ready', createWindow)

app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})

app.on('activate', function () {
if (mainWindow === null) createWindow()
})

Start the app and move the window around. You'll see some output like this:

resize event: current size: [801,601]

Finished moving: current size: [801,601]

Finished moving: current size: [801,601]

Finished moving: current size: [801,601]

Finished moving: current size: [801,601]

Finished moving: current size: [801,601]

resize event: current size: [801,600]

Finished moving: current size: [801,600]

resize event: current size: [800,600]

Finished moving: current size: [800,600]

resize event: current size: [801,601]

Finished moving: current size: [801,601]

This is a continuation of this closed issue. There, erickzhao says:

It seems like the resize event is triggered because the Chromium internals actually change the window size by 0 or 1 every time you move the window.

For instance, a 800x600 window might subtly resize to 800x601 or 801x600 during moving. Not sure what the best solution to this would be.