A few thoughts
The local file system is an obvious one, access to peripherals is another.
A third - which is probably more common - is the bundling of a specific browser version. The software I build is B2B - and the users are told repeatedly to use Chrome, and yet some still use Safari. While the idea of the software working fully across all browsers is ideal, it’s not always the case, and the dev time to find and fix all the browser specific quirks is prohibitive and some very odd browser specific bugs come up. Even if coaches are using Chrome, there are some weird things that change between chrome versions which can be extremely hard to debug, some of these are deprecation’s and can be found with care, some of them are pure bugs in the browser. By bundling the application as an electron app, we can tie users into a specific version of Chrome and avoid all these issues.
A fourth is performance reasons, any data intensive app that is used across multiple tabs requires individual connections per tab, with data being sent repeatedly to each tab. While the use of an application specific client side data cache could help with this, it is usecase specific. Bundling the app with electron gives the possibility of a single data connection from the electron side, with each tab/window using that same collection to reduce data transfer and improve performance.
A fifth reason is the UI - there are limits on what you can do with a PWA, namely - no tabs, or split views, unless you encode them into the application itself. I won’t go into all the details of this drawback, but switching from a full browser to PWA doesn’t allow you to have tabs, and split views are ONLY possible within electron, unless you make them visible to web users, which isn’t always desirable (e.g., only enabling
Meteor.isCordova, etc). Similarly, if you want modals without electron you are limited to two types, in app modals (stuck within the same window) or full new windows, rendering the entire meteor app a second time (potentially with a specific route). Using electron gives a third option: custom modals designed specifically for your app, these could still be built using blaze/react and thus reuse code from your main application, but would not require the entire JS bundle be evaluated by each modal. I’ve found (only in a controlled test environment so far) that this can make the opening of modals significantly faster, which vastly improves the UI experience.
Lastly, while Microsoft has embraced PWA’s, Apple has not - you cannot submit PWA apps to the app store, which has an (admittedly small) impact on branding.
It’s worth noting that I am a massive proponent of PWA’s I hate having to build iOS apps with cordova just because Apple doesn’t want to support PWAs on iOS. It drives me mad.