diff --git a/src/mainapplication.cpp b/src/mainapplication.cpp
index 8d67ba95e4c72f969940443353d2c7343b04ecb2..d515cd8fc50c2d0a671ec6388f296b57bc7ebc7c 100644
--- a/src/mainapplication.cpp
+++ b/src/mainapplication.cpp
@@ -146,11 +146,6 @@ MainApplication::fileDebug(QFile* debugFile)
 
 MainApplication::MainApplication(int& argc, char** argv)
     : QApplication(argc, argv)
-    , engine_(new QQmlApplicationEngine())
-    , connectivityMonitor_(new ConnectivityMonitor(this))
-    , settingsManager_(new AppSettingsManager(this))
-    , systemTray_(new SystemTray(settingsManager_.get(), this))
-    , previewEngine_(new PreviewEngine(this))
 {
     QObject::connect(this, &QApplication::aboutToQuit, [this] { cleanup(); });
 }
@@ -164,6 +159,14 @@ MainApplication::~MainApplication()
 bool
 MainApplication::init()
 {
+    // This 2-phase initialisation prevents ephemeral instances from
+    // performing unnecessary tasks, like initializing the webengine.
+    engine_.reset(new QQmlApplicationEngine(this));
+    connectivityMonitor_.reset(new ConnectivityMonitor(this));
+    settingsManager_.reset(new AppSettingsManager(this));
+    systemTray_.reset(new SystemTray(settingsManager_.get(), this));
+    previewEngine_.reset(new PreviewEngine(this));
+
     setWindowIcon(QIcon(":/images/jami.ico"));
 
 #ifdef Q_OS_LINUX