diff --git a/index.html b/index.html
index b7e0327f0748f70fc76d15df18a38641ef221870..3e0880f3912ff1127ce645501ff29546ca3092af 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.18c101a0fa585f93c419.js"></script><script src="app/ecolyo.2191be4f765ced62bfce.js"></script></div></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.77ab24693fc6c3417c89.js"></script><script src="app/ecolyo.2191be4f765ced62bfce.js"></script></div></body></html>
\ No newline at end of file
diff --git a/services/monthlyReportNotification/ecolyo.js b/services/monthlyReportNotification/ecolyo.js
index 38965b37d373547e5c970ba88e7f8ee9a8e428b1..e67ad37ee9ac3dff2d9d7f98c14255de541ab9f1 100644
--- a/services/monthlyReportNotification/ecolyo.js
+++ b/services/monthlyReportNotification/ecolyo.js
@@ -163720,6 +163720,7 @@ const buildComparisonText = async (client, period) => {
   logStack('info', 'Building consumption text...');
   const consumption = await getConsumptionValue(client, [_fluid.FluidType.ELECTRICITY, _fluid.FluidType.GAS, _fluid.FluidType.WATER], period);
   const fluidTexts = [];
+  logStack('error', JSON.stringify(consumption));
 
   if ((_consumption$FluidTyp = consumption[_fluid.FluidType.ELECTRICITY]) !== null && _consumption$FluidTyp !== void 0 && _consumption$FluidTyp.percentageVariation) {
     const value = consumption[_fluid.FluidType.ELECTRICITY].percentageVariation;
@@ -163739,6 +163740,7 @@ const buildComparisonText = async (client, period) => {
     fluidTexts.push(`<p class="water text">${sign}&nbsp;${formatConsumptionValue(value)}&nbsp;%&nbsp;d'eau</p>`);
   }
 
+  logStack('error', JSON.stringify(fluidTexts));
   return fluidTexts.join('');
 };
 /**
diff --git a/vendors/ecolyo.18c101a0fa585f93c419.js b/vendors/ecolyo.77ab24693fc6c3417c89.js
similarity index 99%
rename from vendors/ecolyo.18c101a0fa585f93c419.js
rename to vendors/ecolyo.77ab24693fc6c3417c89.js
index dcb69698ca2476cbce7a2c59ccb2796391b33d61..0cd934e54f7b32a8704471d73ecd08729eb9ec5b 100644
--- a/vendors/ecolyo.18c101a0fa585f93c419.js
+++ b/vendors/ecolyo.77ab24693fc6c3417c89.js
@@ -33609,13 +33609,15 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.WebviewMessenger = exports.DebugWebviewMessenger = void 0;
 
+var _createClass2 = _interopRequireDefault(__webpack_require__("W8MJ"));
+
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__("lwsE"));
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA"));
 
 var _postMe = __webpack_require__("c4kq");
 
-var WebviewMessenger = function WebviewMessenger(windowRef) {
+var WebviewMessenger = /*#__PURE__*/(0, _createClass2.default)(function WebviewMessenger(windowRef) {
   var _this = this;
 
   (0, _classCallCheck2.default)(this, WebviewMessenger);
@@ -33643,8 +33645,7 @@ var WebviewMessenger = function WebviewMessenger(windowRef) {
     return removeMessageListener;
   });
   this.windowRef = windowRef;
-};
-
+});
 exports.WebviewMessenger = WebviewMessenger;
 
 var DebugWebviewMessenger = function DebugWebviewMessenger(messenger) {
@@ -198052,11 +198053,13 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.WebviewService = void 0;
 
+var _createClass2 = _interopRequireDefault(__webpack_require__("W8MJ"));
+
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__("lwsE"));
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA"));
 
-var WebviewService = function WebviewService(connection) {
+var WebviewService = /*#__PURE__*/(0, _createClass2.default)(function WebviewService(connection) {
   var _this = this;
 
   (0, _classCallCheck2.default)(this, WebviewService);
@@ -198079,8 +198082,7 @@ var WebviewService = function WebviewService(connection) {
   this.close = function () {
     return connection.close();
   };
-};
-
+});
 exports.WebviewService = WebviewService;
 
 /***/ }),
@@ -283273,18 +283275,16 @@ exports.isWebDevMode = exports.isNativeDevMode = exports.interpolate = exports.g
 
 var _construct2 = _interopRequireDefault(__webpack_require__("sXyB"));
 
-var _toConsumableArray2 = _interopRequireDefault(__webpack_require__("RIqP"));
-
 var interpolate = function interpolate(str, params) {
   if (!params) return str;
   var names = Object.keys(params);
   var vals = Object.values(params); // I do not see security risks here, we're not executing user input
   // eslint-disable-next-line @typescript-eslint/no-implied-eval
 
-  var makeInterpolate = (0, _construct2.default)(Function, (0, _toConsumableArray2.default)(names).concat(["return `".concat(str, "`;")]));
+  var makeInterpolate = (0, _construct2.default)(Function, names.concat(["return `".concat(str, "`;")]));
 
   try {
-    return makeInterpolate.apply(void 0, (0, _toConsumableArray2.default)(vals));
+    return makeInterpolate.apply(void 0, vals);
   } catch (error) {
     // String template and params did not match
     return str;
@@ -287905,8 +287905,8 @@ var WebviewIntentProvider = function WebviewIntentProvider(_ref2) {
 
   var setBarWebviewContext = setBarContext || getBarInitAPI();
   (0, _react.useEffect)(function () {
-    !connection && !webviewService && isValidEnv() && getConnection(setConnection, methods);
-  }, [connection, webviewService]);
+    !connection && !webviewService && isValidEnv() && getConnection(setConnection, methods).catch(log);
+  }, [connection, webviewService, methods]);
   (0, _react.useEffect)(function () {
     !service && connection && setService(new _api.WebviewService(connection));
   }, [service, connection]);
@@ -379421,6 +379421,8 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.NativeMessenger = exports.DebugNativeMessenger = void 0;
 
+var _createClass2 = _interopRequireDefault(__webpack_require__("W8MJ"));
+
 var _classCallCheck2 = _interopRequireDefault(__webpack_require__("lwsE"));
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA"));
@@ -379430,8 +379432,7 @@ var _postMe = __webpack_require__("c4kq");
 var _api = __webpack_require__("onNx");
 
 var log = (0, _postMe.debug)('NativeMessenger');
-
-var NativeMessenger = function NativeMessenger(webviewRef) {
+var NativeMessenger = /*#__PURE__*/(0, _createClass2.default)(function NativeMessenger(webviewRef) {
   var _this = this;
 
   (0, _classCallCheck2.default)(this, NativeMessenger);
@@ -379464,8 +379465,7 @@ var NativeMessenger = function NativeMessenger(webviewRef) {
     });
   });
   this.injectJavaScript = webviewRef.injectJavaScript;
-};
-
+});
 exports.NativeMessenger = NativeMessenger;
 
 var DebugNativeMessenger = function DebugNativeMessenger(messenger) {