diff --git a/.eslintrc.js b/.eslintrc.js
index e4f98e3f85ee456e7f9ef51c9f4b6b5befbc403c..de9c35b0a34109c8eb80937313cafa7cbf943d24 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -31,6 +31,12 @@ module.exports = {
         '@typescript-eslint/no-var-requires': 'off',
         '@typescript-eslint/no-unnecessary-type-assertion': 'error',
 
+        '@typescript-eslint/default-param-last': 'error',
+        '@typescript-eslint/prefer-for-of': 'warn',
+        '@typescript-eslint/prefer-includes': 'error',
+        '@typescript-eslint/prefer-string-starts-ends-with': 'error',
+        '@typescript-eslint/switch-exhaustiveness-check': 'error',
+
         // causes a build error and has a lot of effects on components
         '@typescript-eslint/prefer-nullish-coalescing': 'off',
 
diff --git a/src/components/FluidChart/FluidChart.tsx b/src/components/FluidChart/FluidChart.tsx
index 1f80029664e3e6c673aa235ed04c58c0fe716fdb..50da25f22e63e16d1815f4aa8ce3d8d3040abca1 100644
--- a/src/components/FluidChart/FluidChart.tsx
+++ b/src/components/FluidChart/FluidChart.tsx
@@ -112,6 +112,8 @@ const FluidChart = ({ fluidType }: { fluidType: FluidType }) => {
       case FluidType.WATER:
         dispatch(setShowOfflineData(false))
         break
+      default:
+        throw new Error('Unexpected fluid type')
     }
   }
 
diff --git a/src/components/Loader/Loader.tsx b/src/components/Loader/Loader.tsx
index 2b9a41a680d94b53c83d4e60acfbeda66abd24aa..b39445ec6c3fd1bfa706a883d776e3b2fb7cf396 100644
--- a/src/components/Loader/Loader.tsx
+++ b/src/components/Loader/Loader.tsx
@@ -18,16 +18,21 @@ const Loader = ({ color = 'gold', fluidType, text }: LoaderProps) => {
   const { t } = useI18n()
   let variant = color
 
-  switch (fluidType) {
-    case FluidType.ELECTRICITY:
-      variant = 'elec'
-      break
-    case FluidType.GAS:
-      variant = 'gaz'
-      break
-    case FluidType.WATER:
-      variant = 'water'
-      break
+  if (fluidType !== undefined) {
+    switch (fluidType) {
+      case FluidType.ELECTRICITY:
+        variant = 'elec'
+        break
+      case FluidType.GAS:
+        variant = 'gaz'
+        break
+      case FluidType.WATER:
+        variant = 'water'
+        break
+      case FluidType.MULTIFLUID:
+        variant = 'gold'
+        break
+    }
   }
 
   return (
diff --git a/src/components/PartnerIssue/PartnerIssueModal.tsx b/src/components/PartnerIssue/PartnerIssueModal.tsx
index 3d8540225226727f34f872c2ea8829b4931d9781..1e295b2933607f0d70748e704890e4809d7e4506 100644
--- a/src/components/PartnerIssue/PartnerIssueModal.tsx
+++ b/src/components/PartnerIssue/PartnerIssueModal.tsx
@@ -7,6 +7,7 @@ import StyledIconButton from 'components/CommonKit/IconButton/StyledIconButton'
 import { useI18n } from 'cozy-ui/transpiled/react/providers/I18n'
 import { FluidType } from 'enums'
 import React from 'react'
+import { getFluidLabel } from 'utils/utils'
 import './partnerIssueModal.scss'
 
 interface PartnerIssueModalProps {
@@ -22,17 +23,6 @@ const PartnerIssueModal = ({
 }: PartnerIssueModalProps) => {
   const { t } = useI18n()
 
-  const getFluidTypeLabel = () => {
-    switch (issuedFluid) {
-      case FluidType.ELECTRICITY:
-        return 'elec'
-      case FluidType.WATER:
-        return 'water'
-      case FluidType.GAS:
-        return 'gaz'
-    }
-  }
-
   return (
     <Dialog
       open={open}
@@ -66,7 +56,9 @@ const PartnerIssueModal = ({
           className="partner-issue-content text-16-normal"
           dangerouslySetInnerHTML={{
             __html: t(
-              `consumption.partner_issue_modal.error_connect_${getFluidTypeLabel()}`
+              `consumption.partner_issue_modal.error_connect_${getFluidLabel(
+                issuedFluid
+              )}`
             ),
           }}
         />
diff --git a/src/migrations/migration.ts b/src/migrations/migration.ts
index e79d15e3084d57328d0c3a83012b4e384a3c3d9e..0e0dea00ca76941f03ae901e8ed4c7d890b71030 100644
--- a/src/migrations/migration.ts
+++ b/src/migrations/migration.ts
@@ -167,6 +167,8 @@ export async function migrate(
       }
 
       switch (result.type) {
+        case MIGRATION_RESULT_FAILED:
+          throw new Error('Migration failed')
         case MIGRATION_RESULT_NOOP:
         case MIGRATION_RESULT_COMPLETE:
           await updateSchemaVersion(_client, migration.targetSchemaVersion)
diff --git a/src/services/queryRunner.service.ts b/src/services/queryRunner.service.ts
index 441f4a27a6dbc261c6312ffaca3078597bcfe3b1..efd0abdeb3f53c2d24da9202c395a269a43e8a59 100644
--- a/src/services/queryRunner.service.ts
+++ b/src/services/queryRunner.service.ts
@@ -250,6 +250,8 @@ export default class QueryRunner {
           },
         }
         break
+      case TimeStep.HOUR:
+        throw new Error('Unexpected time step')
     }
     return predicate
   }
diff --git a/src/services/quiz.service.ts b/src/services/quiz.service.ts
index 6dac376e5b60fed7502cb3afa8b1003505b52916..cde3563d4bdb3933e542bce3c37a1b666864a2dd 100644
--- a/src/services/quiz.service.ts
+++ b/src/services/quiz.service.ts
@@ -347,6 +347,10 @@ export default class QuizService {
     let endTime = today
     const isPeriod = Object.keys(period).length !== 0
     switch (interval) {
+      case TimeStep.HALF_AN_HOUR:
+      case TimeStep.HOUR:
+      case TimeStep.DAY:
+        throw new Error('Unexpected time step')
       case TimeStep.WEEK:
         startTime = isPeriod
           ? DateTime.fromObject(period).startOf('week')
diff --git a/src/utils/utils.spec.ts b/src/utils/utils.spec.ts
index 64a349dda2822c6df7a4267da875e6e07b63e964..6bd4fe0f095a1e5ceb2a332f9d3c5513b9b6a2c6 100644
--- a/src/utils/utils.spec.ts
+++ b/src/utils/utils.spec.ts
@@ -13,6 +13,7 @@ import {
   formatOffPeakHours,
   formatTwoDigits,
   getChallengeTitleWithLineReturn,
+  getFluidLabel,
   getFluidName,
   getFluidTypeTranslation,
   getFluidUnit,
@@ -262,6 +263,21 @@ describe('utils test', () => {
     })
   })
 
+  describe('getFluidLabel', () => {
+    it('should return elec', () => {
+      expect(getFluidLabel(FluidType.ELECTRICITY)).toBe('elec')
+    })
+    it('should return gas', () => {
+      expect(getFluidLabel(FluidType.GAS)).toBe('gaz')
+    })
+    it('should return water', () => {
+      expect(getFluidLabel(FluidType.WATER)).toBe('water')
+    })
+    it('should return multi', () => {
+      expect(getFluidLabel(FluidType.MULTIFLUID)).toBe('multi')
+    })
+  })
+
   describe('formatListWithAnd', () => {
     it('should return empty string', () => {
       expect(formatListWithAnd([])).toBe('')
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index 10ce560cae3060bf92779a22a43b95abe905a9a8..a2336f765e407f8bdcf6fa63a50f70a6ecf6f6cd 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -64,6 +64,19 @@ export const getPartnerKey = (fluidType: FluidType) => {
   }
 }
 
+export const getFluidLabel = (fluidType: FluidType) => {
+  switch (fluidType) {
+    case FluidType.ELECTRICITY:
+      return 'elec'
+    case FluidType.GAS:
+      return 'gaz'
+    case FluidType.WATER:
+      return 'water'
+    case FluidType.MULTIFLUID:
+      return 'multi'
+  }
+}
+
 export function getKonnectorUpdateError(type: string) {
   switch (type.toUpperCase()) {
     case 'USER_ACTION_NEEDED.OAUTH_OUTDATED':