Flutter for a Hot-Reloadable Plugin-Based Linux Desktop App?

I’m designing a desktop application that is meant to be extended by third-party developers via plugins.

A hard requirement is that plugins can be hot reloaded both during development and while the app is running, without restarting the main application.

The goal is something similar to VSCode or Obsidian, where plugins can also contribute UI elements.

The primary target platform is Linux desktop.

Would Flutter be a good choice for this architecture?

Some specific concerns:

  • Dynamic plugin loading/unloading at runtime

  • Sandboxing/isolation between plugins

  • Allowing plugins to inject custom UI

  • IPC vs in-process plugins

  • Developer experience for plugin authors

  • Performance/memory implications on Linux desktop

I’d also appreciate hearing from anyone who has attempted something similar with Flutter desktop.

There’s an exciting future for Flutter on Linux desktop, especially given that Canonical recently took over Flutter desktop maintenance.

Dart supports JIT compilation; it’s what allows hot reload while running a Flutter app in debug mode. It looks like you can do something similar for a production app by running ./flutter/tools/gn --runtime-mode=jit_release, according to an old wiki page.

You might also want to look into the flutter_eval and flutter_d4rt packages.