But it makes sense contextually for users to set defaults from within the app they're using, that's when they're thinking about it. It's more intuitive UX.
The best solution is a system permissions dialog to confirm the change, so an app can't change anything silently.
Because using a control panel for all handlers isn't a particularly user-friendly experience, scrolling through 60 file types to hunt down the one you're looking for and then locate the appropriate .exe file. I mean the panel should exist but for power users.
The natural time to ask to set a default browser is:
- The user attempts to open a link in the default browser and it isn't set.
- The user installs a new browser.
- The user uninstalls a browser that is set as the default.
Inside the app there is no way to tell the difference between wanting to use that particular app for this one specific task, or preferring this app above all others. (An adaptive UX could notice that the user has manually opened an app many more times than others and suggest setting it as default.)
The problem here is Microsoft gives no way to uninstall Edge. So the only way to know if the user wants to stop using it as default, if they didn't switch when installing another browser, is for the 3rd-party app to reach in and claw back the default setting.
It is most convenient by far to set defaults from within the app, but I don’t think it makes the most sense, it produces too much “spooky action at a distance” where e.g. because you clicked a button in Edge, now when you’re in Chrome and click on a pdf, Edge opens up, or vice versa.
The best solution is a system permissions dialog to confirm the change, so an app can't change anything silently.
Because using a control panel for all handlers isn't a particularly user-friendly experience, scrolling through 60 file types to hunt down the one you're looking for and then locate the appropriate .exe file. I mean the panel should exist but for power users.