<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I have read the <a href="https://github.com/electron/electron/blob/master/CONTRIBUTING.md">Contributing Guidelines</a> for this project.</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I agree to follow the <a href="https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md">Code of Conduct</a> that this project adheres to.</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I have searched the issue tracker for a feature request that matches the one I want to file, without success.</li>
</ul>
<h3 dir="auto">Duplicates</h3>
<p dir="auto">First of all, these duplicates are questions; not discussions so this issue can be open yet.<br>
<a href="https://github.com/electron/electron/issues/10861" data-hovercard-type="issue" data-hovercard-url="/electron/electron/issues/10861/hovercard">#10861</a></p>
<p dir="auto">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.</p>
<p dir="auto">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.</p>
<p dir="auto">My question would be...<br>
<strong>Why not package Chromium as a shared resource (per system or per user)</strong><br>
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.</p>
<p dir="auto">This could be done as an optional electron-builder/packager/forge option.</p>
<h3 dir="auto">Preflight Checklist</h3>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I have read the <a href="https://github.com/electron/electron/blob/master/CONTRIBUTING.md">Contributing Guidelines</a> for this project.</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I agree to follow the <a href="https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md">Code of Conduct</a> that this project adheres to.</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I have searched the <a href="https://www.github.com/electron/electron/issues">issue tracker</a> for a feature request that matches the one I want to file, without success.</li>
</ul>
<h3 dir="auto">Electron Version</h3>
<p dir="auto">12.0.1</p>
<h3 dir="auto">What operating system are you using?</h3>
<p dir="auto">Windows</p>
<h3 dir="auto">Operating System Version</h3>
<p dir="auto">10</p>
<h3 dir="auto">What arch are you using?</h3>
<p dir="auto">x64</p>
<h3 dir="auto">Last Known Working Electron version</h3>
<p dir="auto"><em>No response</em></p>
<h3 dir="auto">Expected Behavior</h3>
<p dir="auto">Moving window, should not trigger a resize event</p>
<h3 dir="auto">Actual Behavior</h3>
<p dir="auto">Move window triggers resize event</p>
<h3 dir="auto">Testcase Gist URL</h3>
<p dir="auto"><em>No response</em></p>
<h3 dir="auto">Additional Information</h3>
<p dir="auto"><em>No response</em></p>
<p dir="auto"><a href="https://github.com/HaulinOats/electron-event-overlap">Here's</a> a repo demonstrating this, or see the trimmed down example below.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="const {app, BrowserWindow} = require('electron')

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

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

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

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

  mainWindow.on(&quot;moved&quot;, () =&gt; {
    console.log(&quot;Finished moving: current size: &quot; + 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()
})"><pre class="notranslate"><code class="notranslate">const {app, BrowserWindow} = require('electron')

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

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

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

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

  mainWindow.on("moved", () =&gt; {
    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()
})
</code></pre></div>
<p dir="auto">Start the app and move the window around. You'll see some output like this:</p>
<p dir="auto">resize event: current size: [801,601]<br>
Finished moving: current size: [801,601]<br>
Finished moving: current size: [801,601]<br>
Finished moving: current size: [801,601]<br>
Finished moving: current size: [801,601]<br>
Finished moving: current size: [801,601]<br>
resize event: current size: [801,600]<br>
Finished moving: current size: [801,600]<br>
resize event: current size: [800,600]<br>
Finished moving: current size: [800,600]<br>
resize event: current size: [801,601]<br>
Finished moving: current size: [801,601]</p>
<p dir="auto">This is a continuation of <a href="https://github.com/electron/electron/issues/18978" data-hovercard-type="issue" data-hovercard-url="/electron/electron/issues/18978/hovercard">this</a> closed issue. There, erickzhao says:</p>
<blockquote>
<p dir="auto">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.</p>
</blockquote>
<blockquote>
<p dir="auto">For instance, a 800x600 window might subtly resize to 800x601 or 801x600 during moving. Not sure what the best solution to this would be.</p>
</blockquote>