diff --git a/.vscode/settings.json b/.vscode/settings.json
index ec02b433c2fa2772f38712180238c8b3980ac3d3..1f1e7b0bf6bb476eaa432a6a0377fc9abc92a62c 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -79,6 +79,7 @@
     "konnectors",
     "lastname",
     "Lugdunum",
+    "legalnotice",
     "luxon",
     "matomo",
     "Matomo",
@@ -88,6 +89,7 @@
     "MULTIFLUID",
     "mutlifluid",
     "Picto",
+    "profiletype",
     "PROFILETYPE",
     "Reinit",
     "splashscreen",
diff --git a/package.json b/package.json
index 43b7cc9752aae509ef6569676303f6cc7fdab740..932f0c84bc9ccecff6bb7f290ef38123e6222f70 100644
--- a/package.json
+++ b/package.json
@@ -68,6 +68,7 @@
     "global": "^4.4.0",
     "handlebars": "^4.7.7",
     "handlebars-loader": "^1.7.1",
+    "history": "^5.3.0",
     "lodash": "^4.17.15",
     "mjml-browser": "^4.10.2",
     "null-loader": "^4.0.1",
@@ -75,7 +76,7 @@
     "react": "16.14.0",
     "react-dom": "16.14.0",
     "react-redux": "^7.2.2",
-    "react-router-dom": "5.3.3",
+    "react-router-dom": "^6.6.1",
     "react-swipeable-views": "0.14.0",
     "redux-devtools-extension": "^2.13.8",
     "xlsx": "^0.18.5"
@@ -87,7 +88,6 @@
     "@types/d3": "^6.0.0",
     "@types/enzyme": "^3.10.8",
     "@types/file-saver": "^2.0.5",
-    "@types/history": "^4.7.5",
     "@types/jest": "^29.0.0",
     "@types/lodash": "^4.14.149",
     "@types/luxon": "^3.0.0",
@@ -97,7 +97,7 @@
     "@types/react-dom": "^16.9.8",
     "@types/react-lottie": "^1.2.3",
     "@types/react-redux": "^7.1.11",
-    "@types/react-router-dom": "^5.1.3",
+    "@types/react-router-dom": "^5.3.3",
     "@types/redux-mock-store": "^1.0.2",
     "@typescript-eslint/eslint-plugin": "^5.37.0",
     "@typescript-eslint/parser": "^5.37.0",
diff --git a/src/components/Action/ActionBegin.spec.tsx b/src/components/Action/ActionBegin.spec.tsx
index 5193fdc0668637ac64cbbc273e9cdbf35bccfff1..e660968f86e589910ddb115ca045b37a7e804ba3 100644
--- a/src/components/Action/ActionBegin.spec.tsx
+++ b/src/components/Action/ActionBegin.spec.tsx
@@ -35,11 +35,11 @@ jest.mock('services/action.service', () => {
     }
   })
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
   }
 })
@@ -54,7 +54,7 @@ describe('ActionBegin component', () => {
         profile: profileData,
       },
     })
-    mockImportIconbyId.mockReturnValue('')
+    mockImportIconById.mockReturnValue('')
 
     const wrapper = mount(
       <Provider store={store}>
@@ -77,7 +77,7 @@ describe('ActionBegin component', () => {
       AllEcogestureData[5],
       AllEcogestureData[2],
     ])
-    mockImportIconbyId.mockReturnValue('')
+    mockImportIconById.mockReturnValue('')
     const store = mockStore({
       ecolyo: {
         challenge: userChallengeData[1],
@@ -108,7 +108,7 @@ describe('ActionBegin component', () => {
         profile: profileData,
       },
     })
-    mockImportIconbyId.mockReturnValue('')
+    mockImportIconById.mockReturnValue('')
 
     const wrapper = mount(
       <Provider store={store}>
@@ -133,7 +133,7 @@ describe('ActionBegin component', () => {
         profile: profileData,
       },
     })
-    mockImportIconbyId.mockReturnValue('')
+    mockImportIconById.mockReturnValue('')
 
     const wrapper = mount(
       <Provider store={store}>
@@ -160,7 +160,7 @@ describe('ActionBegin component', () => {
         profile: profileData,
       },
     })
-    mockImportIconbyId.mockReturnValue('')
+    mockImportIconById.mockReturnValue('')
 
     const wrapper = mount(
       <Provider store={store}>
diff --git a/src/components/Action/ActionBegin.tsx b/src/components/Action/ActionBegin.tsx
index ca25da039fdcd87347f43df0ebd138f2d06834c2..c1c45183ba142f9e4552d53a5763289372bbbee7 100644
--- a/src/components/Action/ActionBegin.tsx
+++ b/src/components/Action/ActionBegin.tsx
@@ -1,17 +1,17 @@
-import React, { useCallback, useState, useEffect } from 'react'
+import { Button } from '@material-ui/core'
+import defaultIcon from 'assets/icons/visu/ecogesture/default.svg'
+import ActionModal from 'components/Action/ActionModal'
+import StarsContainer from 'components/Challenge/StarsContainer'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import { Client, useClient } from 'cozy-client'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useSelector } from 'react-redux'
 import { Ecogesture, UserChallenge } from 'models'
-import StarsContainer from 'components/Challenge/StarsContainer'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import ActionModal from 'components/Action/ActionModal'
-import './actionBegin.scss'
-import { AppStore } from 'store'
+import React, { useCallback, useEffect, useState } from 'react'
+import { useSelector } from 'react-redux'
 import ActionService from 'services/action.service'
-import { importIconbyId } from 'utils/utils'
-import { Button } from '@material-ui/core'
-import defaultIcon from 'assets/icons/visu/ecogesture/default.svg'
+import { AppStore } from 'store'
+import { importIconById } from 'utils/utils'
+import './actionBegin.scss'
 
 interface ActionBeginProps {
   action?: Ecogesture
@@ -68,7 +68,7 @@ const ActionBegin: React.FC<ActionBeginProps> = ({
   useEffect(() => {
     async function handleEcogestureIcon() {
       if (currentAction) {
-        const icon = await importIconbyId(currentAction.id, 'ecogesture')
+        const icon = await importIconById(currentAction.id, 'ecogesture')
         if (icon) {
           setActionIcon(icon)
         } else {
diff --git a/src/components/Action/ActionCard.spec.tsx b/src/components/Action/ActionCard.spec.tsx
index 39f844c422c10bd7f29bef8ec1d66439bf114a38..b91d9de04786fb04148019726bc3c6a397ab8368 100644
--- a/src/components/Action/ActionCard.spec.tsx
+++ b/src/components/Action/ActionCard.spec.tsx
@@ -21,11 +21,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
   }
 })
diff --git a/src/components/Action/ActionCard.tsx b/src/components/Action/ActionCard.tsx
index 6dcfbfac60b6b6d5adcdb5d538d2fa558416a633..fa5299b089465c4cb35ce2093255b47ffceb2d62 100644
--- a/src/components/Action/ActionCard.tsx
+++ b/src/components/Action/ActionCard.tsx
@@ -1,16 +1,16 @@
-import React, { useState, useCallback, useEffect } from 'react'
-import { Ecogesture } from 'models'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import { importIconbyId } from 'utils/utils'
-import './actionList.scss'
 import { Button } from '@material-ui/core'
-import EcogestureModal from 'components/Ecogesture/EcogestureModal'
 import defaultIcon from 'assets/icons/visu/ecogesture/default.svg'
-import UsageEventService from 'services/usageEvent.service'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import EcogestureModal from 'components/Ecogesture/EcogestureModal'
 import { useClient } from 'cozy-client'
 import { UsageEventType } from 'enum/usageEvent.enum'
+import { Ecogesture } from 'models'
+import React, { useCallback, useEffect, useState } from 'react'
 import { useSelector } from 'react-redux'
+import UsageEventService from 'services/usageEvent.service'
 import { AppStore } from 'store'
+import { importIconById } from 'utils/utils'
+import './actionList.scss'
 
 interface ActionCardProps {
   action: Ecogesture
@@ -53,7 +53,7 @@ const ActionCard: React.FC<ActionCardProps> = ({
 
   useEffect(() => {
     async function handleEcogestureIcon() {
-      const icon = await importIconbyId(action.id, 'ecogesture')
+      const icon = await importIconById(action.id, 'ecogesture')
       if (icon) {
         setActionIcon(icon)
       } else {
diff --git a/src/components/Action/ActionDone.spec.tsx b/src/components/Action/ActionDone.spec.tsx
index b22aad89dd19f51ee017f2ba2311e2d0ed8cab38..b5071b647b31878ff649846f558a1ac7c4f44079 100644
--- a/src/components/Action/ActionDone.spec.tsx
+++ b/src/components/Action/ActionDone.spec.tsx
@@ -26,12 +26,10 @@ jest.mock('services/usageEvent.service')
 const mockAddEvent = jest.fn()
 UsageEventService.addEvent = mockAddEvent
 
-const mockHistoryGoBack = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    goBack: mockHistoryGoBack,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 const mockupdateUserChallenge = jest.fn()
 jest.mock('services/challenge.service', () => {
diff --git a/src/components/Action/ActionDone.tsx b/src/components/Action/ActionDone.tsx
index b5d5731bdc542a3abaa662515a8017512ef672e5..c483853482883d01cfecc473b6a0474a3107eb6f 100644
--- a/src/components/Action/ActionDone.tsx
+++ b/src/components/Action/ActionDone.tsx
@@ -1,19 +1,19 @@
-import React, { useCallback } from 'react'
-import { UserChallenge } from 'models'
 import { Button } from '@material-ui/core'
+import starFilled from 'assets/icons/visu/challenge/starFilled.svg'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import { useClient } from 'cozy-client'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { UsageEventType } from 'enum/usageEvent.enum'
 import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
+import { UserChallenge } from 'models'
+import React, { useCallback } from 'react'
+import { useDispatch } from 'react-redux'
+import { useNavigate } from 'react-router-dom'
 import ChallengeService from 'services/challenge.service'
+import UsageEventService from 'services/usageEvent.service'
 import { updateUserChallengeList } from 'store/challenge/challenge.actions'
-import { useDispatch } from 'react-redux'
-import { useClient } from 'cozy-client'
-import { useHistory } from 'react-router-dom'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import starFilled from 'assets/icons/visu/challenge/starFilled.svg'
-import './actionDone.scss'
 import { toggleChallengeActionNotification } from 'store/global/global.actions'
-import { UsageEventType } from 'enum/usageEvent.enum'
-import UsageEventService from 'services/usageEvent.service'
+import './actionDone.scss'
 interface ActionDoneProps {
   currentChallenge: UserChallenge
 }
@@ -24,7 +24,7 @@ const ActionDone: React.FC<ActionDoneProps> = ({
   const { t } = useI18n()
   const client = useClient()
   const dispatch = useDispatch()
-  const history = useHistory()
+  const navigate = useNavigate()
   const handleEndAction = useCallback(async () => {
     const challengeService = new ChallengeService(client)
     const updatedChallenge: UserChallenge =
@@ -42,8 +42,8 @@ const ActionDone: React.FC<ActionDoneProps> = ({
     })
     dispatch(toggleChallengeActionNotification(false))
     dispatch(updateUserChallengeList(updatedChallenge))
-    history.goBack()
-  }, [currentChallenge, dispatch, client, history])
+    navigate(-1)
+  }, [currentChallenge, dispatch, client, navigate])
 
   return (
     <div className="action-done-container">
diff --git a/src/components/Action/ActionOnGoing.spec.tsx b/src/components/Action/ActionOnGoing.spec.tsx
index 7b2d0347827580ac2ca64d383e0e2f6afbaa65c7..db8fec3a79b77ae6c9c6fbc1b10ee11b57cd8c4c 100644
--- a/src/components/Action/ActionOnGoing.spec.tsx
+++ b/src/components/Action/ActionOnGoing.spec.tsx
@@ -23,11 +23,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
   }
 })
diff --git a/src/components/Action/ActionView.spec.tsx b/src/components/Action/ActionView.spec.tsx
index 50040a437b9a686564147e238b82f656bda3ddef..d6bd172a6fc807182814ba36a57c93cbf684779b 100644
--- a/src/components/Action/ActionView.spec.tsx
+++ b/src/components/Action/ActionView.spec.tsx
@@ -21,6 +21,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 jest.mock('components/Header/CozyBar', () => 'mock-cozybar')
 jest.mock('components/Header/Header', () => 'mock-header')
 jest.mock('components/Content/Content', () => 'mock-content')
diff --git a/src/components/Analysis/AnalysisConsumption.spec.tsx b/src/components/Analysis/AnalysisConsumption.spec.tsx
index 4dfb6ac44d9d2b895956b28902f7a3664cab1862..1595ec68f262a62896841fd0a1a77c7dd2586ba6 100644
--- a/src/components/Analysis/AnalysisConsumption.spec.tsx
+++ b/src/components/Analysis/AnalysisConsumption.spec.tsx
@@ -27,12 +27,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
   }
 })
 
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 const mockgetMonthlyForecast = jest.fn()
@@ -300,6 +298,6 @@ describe('AnalysisConsumption component', () => {
       wrapper.update()
     })
     wrapper.find(Button).first().simulate('click')
-    expect(mockHistoryPush).toBeCalledWith('/profileType')
+    expect(mockedNavigate).toBeCalledWith('/profileType')
   })
 })
diff --git a/src/components/Analysis/AnalysisConsumption.tsx b/src/components/Analysis/AnalysisConsumption.tsx
index ea850893ab874a7aa107c2fa97dc32c30b2aa659..daa4d07f30ddcd7095d21789e725a20da1f13fa6 100644
--- a/src/components/Analysis/AnalysisConsumption.tsx
+++ b/src/components/Analysis/AnalysisConsumption.tsx
@@ -20,7 +20,7 @@ import { PerformanceIndicator, Profile } from 'models'
 import { MonthlyForecast, ProfileType } from 'models/profileType.model'
 import React, { useCallback, useEffect, useState } from 'react'
 import { useSelector } from 'react-redux'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import ProfileTypeService from 'services/profileType.service'
 import ProfileTypeEntityService from 'services/profileTypeEntity.service'
 import { AppStore } from 'store'
@@ -38,7 +38,7 @@ const AnalysisConsumption: React.FC<AnalysisConsumptionProps> = ({
   analysisDate,
 }: AnalysisConsumptionProps) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const client: Client = useClient()
   const userPriceConsumption: number = aggregatedPerformanceIndicator.value || 0
   const profile: Profile = useSelector(
@@ -97,7 +97,7 @@ const AnalysisConsumption: React.FC<AnalysisConsumptionProps> = ({
   )
 
   const goToForm = () => {
-    history.push('/profileType')
+    navigate('/profileType')
   }
 
   useEffect(() => {
diff --git a/src/components/Analysis/AnalysisError.spec.tsx b/src/components/Analysis/AnalysisError.spec.tsx
index b612c1422197e971ae30d5478a1115767b9484ba..1c8fbc8f087afe197f7844743f6b5de44176edbf 100644
--- a/src/components/Analysis/AnalysisError.spec.tsx
+++ b/src/components/Analysis/AnalysisError.spec.tsx
@@ -17,14 +17,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
-const mockHistoryGoBack = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-    goBack: mockHistoryGoBack,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 const mockStore = configureStore([])
 
diff --git a/src/components/Analysis/AnalysisErrorModal.tsx b/src/components/Analysis/AnalysisErrorModal.tsx
index 561e0e0e284e646bfce0cd6087d14531abe556d8..85f09505697773d606c7762294303c710ac2342c 100644
--- a/src/components/Analysis/AnalysisErrorModal.tsx
+++ b/src/components/Analysis/AnalysisErrorModal.tsx
@@ -2,19 +2,19 @@ import Button from '@material-ui/core/Button'
 import Dialog from '@material-ui/core/Dialog'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import React from 'react'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import './analysisError.scss'
 
 const AnalysisErrorModal: React.FC = () => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const goToConsumption = () => {
-    history.push('/consumption')
+    navigate('/consumption')
   }
   const goBack = () => {
     if (history.length <= 2) {
-      history.push('/consumption')
-    } else history.goBack()
+      navigate('/consumption')
+    } else navigate(-1)
   }
   return (
     <Dialog
diff --git a/src/components/Analysis/ElecHalfHourMonthlyAnalysis.tsx b/src/components/Analysis/ElecHalfHourMonthlyAnalysis.tsx
index c80479c0bc760ddccb18ae119e6c473b47f096f0..58165f30c0720574e4f615614457c07dcbd53d47 100644
--- a/src/components/Analysis/ElecHalfHourMonthlyAnalysis.tsx
+++ b/src/components/Analysis/ElecHalfHourMonthlyAnalysis.tsx
@@ -178,11 +178,7 @@ const ElecHalfHourMonthlyAnalysis: React.FC<
               <Icon icon={RightArrowIcon} size={24} />
             </IconButton>
           </div>
-          {isLoading && (
-            <div className="loader-container">
-              <Loader color="elec" />
-            </div>
-          )}
+          {isLoading && <Loader color="elec" />}
           {!isLoading && (
             <>
               {getPowerChart()}
diff --git a/src/components/Analysis/elecHalfHourMonthlyAnalysis.scss b/src/components/Analysis/elecHalfHourMonthlyAnalysis.scss
index 1c91ccaf086d8e266c051b1869760209b3c2bc92..4ea1ba5dec4ce4995302569192dfcc10ea6741ce 100644
--- a/src/components/Analysis/elecHalfHourMonthlyAnalysis.scss
+++ b/src/components/Analysis/elecHalfHourMonthlyAnalysis.scss
@@ -73,9 +73,6 @@
   .consomin {
     min-height: 100px;
   }
-  .loader-container {
-    text-align: center;
-  }
   .no_data {
     text-align: center;
     color: white;
diff --git a/src/components/App.tsx b/src/components/App.tsx
index cd290bbd0ef71a50fd8b192df69b06379bd2b480..5de0b85096d762cf1c1a77fdc5a81c55d859aff8 100644
--- a/src/components/App.tsx
+++ b/src/components/App.tsx
@@ -1,17 +1,15 @@
-import React, { useEffect } from 'react'
-import { HashRouter } from 'react-router-dom'
-import { Layout, Main, Content } from 'cozy-ui/transpiled/react/Layout'
-import { useSelector } from 'react-redux'
-import { AppStore } from 'store'
-
-import Routes from 'components/Routes/Routes'
 import Navbar from 'components/Navbar/Navbar'
+import WelcomeModal from 'components/Onboarding/WelcomeModal'
+import AppRoutes from 'components/Routes/Routes'
 import SplashRoot from 'components/Splash/SplashRoot'
 import SplashScreen from 'components/Splash/SplashScreen'
 import SplashScreenError from 'components/Splash/SplashScreenError'
-import WelcomeModal from 'components/Onboarding/WelcomeModal'
-import MatomoTracker from 'utils/matomoTracker'
+import { Content, Layout, Main } from 'cozy-ui/transpiled/react/Layout'
+import React, { useEffect } from 'react'
+import { useSelector } from 'react-redux'
 import EnvironmentService from 'services/environment.service'
+import { AppStore } from 'store'
+import MatomoTracker from 'utils/matomoTracker'
 
 interface AppProps {
   tracker: MatomoTracker
@@ -34,26 +32,24 @@ export const App = ({ tracker }: AppProps) => {
   }, [termsStatus.accepted, tracker, isDev])
 
   return (
-    <HashRouter {...history}>
-      <Layout>
-        <SplashRoot
-          splashComponent={SplashScreen}
-          splashErrorComponent={SplashScreenError}
-        >
-          {termsStatus.accepted && (
-            <>
-              <WelcomeModal open={!onboarding.isWelcomeSeen} />
-              <Navbar />
-            </>
-          )}
-          <Main>
-            <Content className="app-content">
-              <Routes termsStatus={termsStatus} />
-            </Content>
-          </Main>
-        </SplashRoot>
-      </Layout>
-    </HashRouter>
+    <Layout>
+      <SplashRoot
+        splashComponent={SplashScreen}
+        splashErrorComponent={SplashScreenError}
+      >
+        {termsStatus.accepted && (
+          <>
+            <WelcomeModal open={!onboarding.isWelcomeSeen} />
+            <Navbar />
+          </>
+        )}
+        <Main>
+          <Content className="app-content">
+            <AppRoutes termsStatus={termsStatus} />
+          </Content>
+        </Main>
+      </SplashRoot>
+    </Layout>
   )
 }
 
diff --git a/src/components/Challenge/ChallengeCardDone.spec.tsx b/src/components/Challenge/ChallengeCardDone.spec.tsx
index aed2d7c32e5144ba4da88082915aea8c158b0ab8..e447ca39f94588f1d0fee157b1a693b61826d331 100644
--- a/src/components/Challenge/ChallengeCardDone.spec.tsx
+++ b/src/components/Challenge/ChallengeCardDone.spec.tsx
@@ -1,6 +1,6 @@
-import React from 'react'
-import { shallow } from 'enzyme'
 import ChallengeCardDone from 'components/Challenge/ChallengeCardDone'
+import { shallow } from 'enzyme'
+import React from 'react'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
@@ -12,16 +12,22 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 const mockFormatNumberValues = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => mockImportIconbyId),
+    importIconById: jest.fn(() => mockImportIconById),
     formatNumberValues: jest.fn(() => mockFormatNumberValues),
     getChallengeTitleWithLineReturn: jest.fn(() => 'Challenge 1'),
   }
 })
 
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
+
 describe('ChallengeCardDone component', () => {
   it('should be rendered correctly', () => {
     const component = shallow(
diff --git a/src/components/Challenge/ChallengeCardDone.tsx b/src/components/Challenge/ChallengeCardDone.tsx
index 5ad7f626d5a2bb3b14241444eb7faf726bc53254..969e55c0f4c78fe10974e4245c85ce74cdaa9a44 100644
--- a/src/components/Challenge/ChallengeCardDone.tsx
+++ b/src/components/Challenge/ChallengeCardDone.tsx
@@ -1,18 +1,18 @@
-import React, { useEffect, useState } from 'react'
-import './challengeCardDone.scss'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { Button } from '@material-ui/core'
+import defaultIcon from 'assets/icons/visu/duelResult/default.svg'
 import classNames from 'classnames'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { UserChallengeSuccess } from 'enum/userChallenge.enum'
+import { UserChallenge } from 'models'
+import React, { useEffect, useState } from 'react'
+import { useNavigate } from 'react-router-dom'
 import {
   formatNumberValues,
   getChallengeTitleWithLineReturn,
-  importIconbyId,
+  importIconById,
 } from 'utils/utils'
-import { UserChallenge } from 'models'
-import { UserChallengeSuccess } from 'enum/userChallenge.enum'
-import defaultIcon from 'assets/icons/visu/duelResult/default.svg'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import { useHistory } from 'react-router-dom'
-import { Button } from '@material-ui/core'
+import './challengeCardDone.scss'
 
 interface ChallengeCardDoneProps {
   userChallenge: UserChallenge
@@ -22,7 +22,7 @@ const ChallengeCardDone: React.FC<ChallengeCardDoneProps> = ({
   userChallenge,
 }: ChallengeCardDoneProps) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const [winIcon, setWinIcon] = useState<string>(defaultIcon)
   const [lossIcon, setLossIcon] = useState<string>(defaultIcon)
 
@@ -51,18 +51,18 @@ const ChallengeCardDone: React.FC<ChallengeCardDoneProps> = ({
   }
 
   const goDuel = async () => {
-    history.push('/challenges/duel?id=' + userChallenge.id)
+    navigate('/challenges/duel?id=' + userChallenge.id)
   }
 
   useEffect(() => {
     async function handleEcogestureIcon() {
-      const icon = await importIconbyId(userChallenge.id + '-1', 'duelResult')
+      const icon = await importIconById(userChallenge.id + '-1', 'duelResult')
       if (icon) {
         setWinIcon(icon)
       } else {
         setWinIcon(defaultIcon)
       }
-      const icon2 = await importIconbyId(userChallenge.id + '-0', 'duelResult')
+      const icon2 = await importIconById(userChallenge.id + '-0', 'duelResult')
       if (icon2) {
         setLossIcon(icon2)
       } else {
diff --git a/src/components/Challenge/ChallengeCardOnGoing.tsx b/src/components/Challenge/ChallengeCardOnGoing.tsx
index 586a2c3710ae00b0c960995a20c1b8fc3917d90d..9933fcbee9c92fbeb3c714c2aec83529ba3312cb 100644
--- a/src/components/Challenge/ChallengeCardOnGoing.tsx
+++ b/src/components/Challenge/ChallengeCardOnGoing.tsx
@@ -17,11 +17,11 @@ import { UserQuizState } from 'enum/userQuiz.enum'
 import { UserChallenge } from 'models'
 import React, { useCallback, useEffect, useState } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import ChallengeService from 'services/challenge.service'
 import { AppStore } from 'store'
 import { updateUserChallengeList } from 'store/challenge/challenge.actions'
-import { getChallengeTitleWithLineReturn, importIconbyId } from 'utils/utils'
+import { getChallengeTitleWithLineReturn, importIconById } from 'utils/utils'
 import './challengeCardOnGoing.scss'
 import ChallengeNoFluidModal from './ChallengeNoFluidModal'
 import StarsContainer from './StarsContainer'
@@ -35,7 +35,7 @@ const ChallengeCardOnGoing: React.FC<ChallengeCardOnGoingProps> = ({
   const client: Client = useClient()
   const { t } = useI18n()
   const dispatch = useDispatch()
-  const history = useHistory()
+  const navigate = useNavigate()
   const [isOneFluidUp, setIsOneFluidUp] = useState<boolean>(true)
   const [challengeIcon, setChallengeIcon] = useState<string>(defaultIcon)
   const [isDone, setisDone] = useState<boolean>(false)
@@ -63,7 +63,7 @@ const ChallengeCardOnGoing: React.FC<ChallengeCardOnGoingProps> = ({
         dispatch(updateUserChallengeList(updatedChallenge))
       }
       setIsLoading(false)
-      history.push('/challenges/duel?id=' + userChallenge.id)
+      navigate('/challenges/duel?id=' + userChallenge.id)
     } else {
       setIsLoading(false)
       toggleNoFluidModal()
@@ -78,22 +78,21 @@ const ChallengeCardOnGoing: React.FC<ChallengeCardOnGoingProps> = ({
       )
       dispatch(updateUserChallengeList(updatedChallenge))
     }
-    if (userChallenge.progress.quizProgress !== 5)
-      history.push('/challenges/quiz')
+    if (userChallenge.progress.quizProgress !== 5) navigate('/challenges/quiz')
   }
   const goExploration = () => {
     if (userChallenge.progress.explorationProgress !== 5)
-      history.push('/challenges/exploration')
+      navigate('/challenges/exploration')
   }
   const goAction = () => {
     if (userChallenge.progress.actionProgress !== 5)
-      history.push('/challenges/action')
+      navigate('/challenges/action')
   }
 
   useEffect(() => {
     let subscribed = true
     async function importIcon() {
-      importIconbyId(userChallenge.id, 'challenge').then(icon => {
+      importIconById(userChallenge.id, 'challenge').then(icon => {
         if (subscribed) {
           icon ? setChallengeIcon(icon) : setChallengeIcon(defaultChallengeIcon)
         }
diff --git a/src/components/Challenge/ChallengeCardUnlocked.spec.tsx b/src/components/Challenge/ChallengeCardUnlocked.spec.tsx
index b455ad417a91598bc98890d33f2cb2ceae8d176c..3a8dcbb186ec5b0930ac94e722e45bae3d847810 100644
--- a/src/components/Challenge/ChallengeCardUnlocked.spec.tsx
+++ b/src/components/Challenge/ChallengeCardUnlocked.spec.tsx
@@ -26,10 +26,10 @@ jest.mock('services/challenge.service', () => {
     }
   })
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => mockImportIconbyId),
+    importIconById: jest.fn(() => mockImportIconById),
     getChallengeTitleWithLineReturn: jest.fn(() => 'Challenge 1'),
   }
 })
diff --git a/src/components/Challenge/ChallengeCardUnlocked.tsx b/src/components/Challenge/ChallengeCardUnlocked.tsx
index eaf5718d192cf3e11a74c324d43783f8b41eee51..60603710c92b10e56596abbe4ef31e78dcf017fe 100644
--- a/src/components/Challenge/ChallengeCardUnlocked.tsx
+++ b/src/components/Challenge/ChallengeCardUnlocked.tsx
@@ -1,20 +1,20 @@
-import React, { useCallback, useEffect, useState } from 'react'
+import Button from '@material-ui/core/Button'
+import defaultIcon from 'assets/icons/visu/challenge/challengeLocked.svg'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import { Client, useClient } from 'cozy-client'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { FluidState } from 'enum/fluid.enum'
+import { UsageEventType } from 'enum/usageEvent.enum'
+import { UserChallenge } from 'models'
+import React, { useCallback, useEffect, useState } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
+import ChallengeService from 'services/challenge.service'
+import UsageEventService from 'services/usageEvent.service'
+import { AppStore } from 'store'
 import { updateUserChallengeList } from 'store/challenge/challenge.actions'
+import { getChallengeTitleWithLineReturn, importIconById } from 'utils/utils'
 import './challengeCardUnlocked.scss'
-import { UserChallenge } from 'models'
-import ChallengeService from 'services/challenge.service'
-import Button from '@material-ui/core/Button'
 import ChallengeNoFluidModal from './ChallengeNoFluidModal'
-import { AppStore } from 'store'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import defaultIcon from 'assets/icons/visu/challenge/challengeLocked.svg'
-import { getChallengeTitleWithLineReturn, importIconbyId } from 'utils/utils'
-import UsageEventService from 'services/usageEvent.service'
-import { UsageEventType } from 'enum/usageEvent.enum'
-import { FluidState } from 'enum/fluid.enum'
 
 interface ChallengeCardUnlockedProps {
   userChallenge: UserChallenge
@@ -70,7 +70,7 @@ const ChallengeCardUnlocked: React.FC<ChallengeCardUnlockedProps> = ({
 
   useEffect(() => {
     async function handleEcogestureIcon() {
-      const icon = await importIconbyId(userChallenge.id, 'challenge')
+      const icon = await importIconById(userChallenge.id, 'challenge')
       if (icon) {
         setChallengeIcon(icon)
       }
diff --git a/src/components/CommonKit/ErrorPage/ErrorPage.spec.tsx b/src/components/CommonKit/ErrorPage/ErrorPage.spec.tsx
index abaea68bc68f3bc6cc2821c833a25d2e86fc1c63..c916c501d205d86d1816d257d4a58441a74d1d55 100644
--- a/src/components/CommonKit/ErrorPage/ErrorPage.spec.tsx
+++ b/src/components/CommonKit/ErrorPage/ErrorPage.spec.tsx
@@ -1,12 +1,12 @@
 /* eslint-disable react/display-name */
-import React from 'react'
+import { Button } from '@material-ui/core'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
+import React from 'react'
+import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
 import { globalStateData } from '../../../../tests/__mocks__/globalStateData.mock'
-import { Provider } from 'react-redux'
 import ErrorPage from './ErrorPage'
-import { Button } from '@material-ui/core'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -17,12 +17,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 jest.mock('components/Header/Header', () => () => <div id="Header" />)
@@ -60,6 +58,6 @@ describe('ErrorPage component', () => {
       </Provider>
     )
     wrapper.find(Button).simulate('click')
-    expect(mockHistoryPush).toHaveBeenCalledWith('/ecogestures')
+    expect(mockedNavigate).toHaveBeenCalledWith('/ecogestures')
   })
 })
diff --git a/src/components/CommonKit/ErrorPage/ErrorPage.tsx b/src/components/CommonKit/ErrorPage/ErrorPage.tsx
index 58341fef52e2530efb389b64878749cc216bb1c1..4142f1c9b176ea4a6d53e5778e630ffef5382530 100644
--- a/src/components/CommonKit/ErrorPage/ErrorPage.tsx
+++ b/src/components/CommonKit/ErrorPage/ErrorPage.tsx
@@ -6,7 +6,7 @@ import CozyBar from 'components/Header/CozyBar'
 import Header from 'components/Header/Header'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import React, { useCallback, useState } from 'react'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import './errorPage.scss'
 
 interface ErrorPageProps {
@@ -18,7 +18,7 @@ const ErrorPage: React.FC<ErrorPageProps> = ({
   text,
   returnPage,
 }: ErrorPageProps) => {
-  const history = useHistory()
+  const navigate = useNavigate()
   const { t } = useI18n()
 
   const [headerHeight, setHeaderHeight] = useState<number>(0)
@@ -26,8 +26,8 @@ const ErrorPage: React.FC<ErrorPageProps> = ({
     setHeaderHeight(height)
   }
   const handleClick = useCallback(() => {
-    history.push(`/${returnPage}`)
-  }, [history, returnPage])
+    navigate(`/${returnPage}`)
+  }, [navigate, returnPage])
   return (
     <>
       <CozyBar titleKey={'error_page.main'} />
diff --git a/src/components/Connection/Connection.spec.tsx b/src/components/Connection/Connection.spec.tsx
index 20cb2ada3e1242a55a25cb627c594827141ce0d8..d339c9b712e517eca65902f26761e3e337ae0533 100644
--- a/src/components/Connection/Connection.spec.tsx
+++ b/src/components/Connection/Connection.spec.tsx
@@ -29,6 +29,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 const mockStore = configureStore([])
 const useDispatchSpy = jest.spyOn(reactRedux, 'useDispatch')
 const useSelectorSpy = jest.spyOn(reactRedux, 'useSelector')
diff --git a/src/components/Connection/ExpiredConsentModal.spec.tsx b/src/components/Connection/ExpiredConsentModal.spec.tsx
index 4dd3fb84520227f1de56debcc40c86b70e6e706b..74ba58c51bf9595adbf60df0ba2ba655e6a8edc6 100644
--- a/src/components/Connection/ExpiredConsentModal.spec.tsx
+++ b/src/components/Connection/ExpiredConsentModal.spec.tsx
@@ -1,14 +1,14 @@
-import React from 'react'
+import { Button } from '@material-ui/core'
+import { FluidType } from 'enum/fluid.enum'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
-import ExpiredConsentModal from './ExpiredConsentModal'
-import { FluidType } from 'enum/fluid.enum'
-import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
+import React from 'react'
+import * as reactRedux from 'react-redux'
 import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import { Button } from '@material-ui/core'
-import * as reactRedux from 'react-redux'
 import { fluidStatusConnectedData } from '../../../tests/__mocks__/fluidStatusData.mock'
+import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
+import ExpiredConsentModal from './ExpiredConsentModal'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -19,12 +19,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 const mockToggleModal = jest.fn()
 const mockHandleCloseClick = jest.fn()
@@ -37,7 +35,7 @@ describe('ExpiredConsentModal component', () => {
     },
   })
   beforeEach(() => {
-    mockHistoryPush.mockReset()
+    mockedNavigate.mockReset()
   })
   it('should be rendered correctly', () => {
     const component = mount(
@@ -68,7 +66,7 @@ describe('ExpiredConsentModal component', () => {
     )
     component.find(Button).at(1).simulate('click')
     expect(useDispatchSpy).toHaveBeenCalledTimes(1)
-    expect(mockHistoryPush).toHaveBeenCalledTimes(1)
+    expect(mockedNavigate).toHaveBeenCalledTimes(1)
   })
   it('should launch the update consent process for Enedis', () => {
     const useDispatchSpy = jest.spyOn(reactRedux, 'useDispatch')
@@ -87,7 +85,7 @@ describe('ExpiredConsentModal component', () => {
     )
     component.find(Button).at(1).simulate('click')
     expect(useDispatchSpy).toHaveBeenCalledTimes(2)
-    expect(mockHistoryPush).toHaveBeenCalledTimes(1)
+    expect(mockedNavigate).toHaveBeenCalledTimes(1)
   })
   it('should click on close modal', () => {
     const component = mount(
diff --git a/src/components/Connection/ExpiredConsentModal.tsx b/src/components/Connection/ExpiredConsentModal.tsx
index 96dd6a33b42071b6580e9beac44d28000be5cef4..792c8301f707e54b63001033112137c3ac2070c9 100644
--- a/src/components/Connection/ExpiredConsentModal.tsx
+++ b/src/components/Connection/ExpiredConsentModal.tsx
@@ -1,21 +1,21 @@
-import React, { useCallback } from 'react'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { Button, IconButton } from '@material-ui/core'
 import Dialog from '@material-ui/core/Dialog'
 import CloseIcon from 'assets/icons/ico/close.svg'
 import EnedisIcon from 'assets/icons/ico/consent-outdated-enedis.svg'
 import GrdfIcon from 'assets/icons/ico/consent-outdated-grdf.svg'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import Icon from 'cozy-ui/transpiled/react/Icon'
-import { Button, IconButton } from '@material-ui/core'
 import { FluidType } from 'enum/fluid.enum'
-import './expiredConsentModal.scss'
-import { useHistory } from 'react-router-dom'
+import { AccountSgeData } from 'models'
+import React, { useCallback } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
+import { useNavigate } from 'react-router-dom'
+import { AppStore } from 'store'
 import {
   setShouldRefreshConsent,
   updateSgeStore,
 } from 'store/global/global.actions'
-import { AppStore } from 'store'
-import { AccountSgeData } from 'models'
+import './expiredConsentModal.scss'
 
 interface ExpiredConsentModalProps {
   open: boolean
@@ -31,7 +31,7 @@ const ExpiredConsentModal: React.FC<ExpiredConsentModalProps> = ({
   toggleModal,
 }: ExpiredConsentModalProps) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const dispatch = useDispatch()
   const { fluidStatus } = useSelector((state: AppStore) => state.ecolyo.global)
 
@@ -57,8 +57,8 @@ const ExpiredConsentModal: React.FC<ExpiredConsentModalProps> = ({
       dispatch(setShouldRefreshConsent(true))
     }
     toggleModal()
-    history.push(`/consumption/${FluidType[fluidType].toLocaleLowerCase()}`)
-  }, [dispatch, fluidStatus, fluidType, history, toggleModal])
+    navigate(`/consumption/${FluidType[fluidType].toLocaleLowerCase()}`)
+  }, [dispatch, fluidStatus, fluidType, navigate, toggleModal])
 
   return (
     <Dialog
diff --git a/src/components/Connection/SGEConnect/SgeConnectView.spec.tsx b/src/components/Connection/SGEConnect/SgeConnectView.spec.tsx
index 5f768c23a1bbb35bbee5ea95f74701d92777469a..cc0478b20fa95c845de3f47da42df5cc97bb91a1 100644
--- a/src/components/Connection/SGEConnect/SgeConnectView.spec.tsx
+++ b/src/components/Connection/SGEConnect/SgeConnectView.spec.tsx
@@ -1,12 +1,12 @@
-import React from 'react'
+import { SgeStep } from 'enum/sgeStep.enum'
 import { mount } from 'enzyme'
-import configureStore from 'redux-mock-store'
+import toJson from 'enzyme-to-json'
+import React from 'react'
+import * as reactRedux from 'react-redux'
 import { Provider } from 'react-redux'
+import configureStore from 'redux-mock-store'
 import { globalStateData } from '../../../../tests/__mocks__/globalStateData.mock'
-import toJson from 'enzyme-to-json'
 import SgeConnectView from './SgeConnectView'
-import * as reactRedux from 'react-redux'
-import { SgeStep } from 'enum/sgeStep.enum'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -17,6 +17,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 jest.mock('components/Content/Content', () => 'mock-content')
 jest.mock('components/FormGlobal/FormProgress', () => 'mock-formprogress')
 
diff --git a/src/components/Connection/SGEConnect/SgeInit.spec.tsx b/src/components/Connection/SGEConnect/SgeInit.spec.tsx
index 8755cca5bb3038b261b16375203bf7e596b27026..dc745f6f3c1f841fe5c7c51ff2b327ccbe8755e2 100644
--- a/src/components/Connection/SGEConnect/SgeInit.spec.tsx
+++ b/src/components/Connection/SGEConnect/SgeInit.spec.tsx
@@ -22,12 +22,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 const mockConnect = jest.fn()
@@ -64,7 +62,7 @@ describe('SgeInit component', () => {
       </Provider>
     )
     wrapper.find(Button).first().simulate('click')
-    expect(mockHistoryPush).toHaveBeenCalled()
+    expect(mockedNavigate).toHaveBeenCalled()
   })
   it('should launch account and trigger creation process', async () => {
     const store = mockStore({
diff --git a/src/components/Connection/SGEConnect/SgeInit.tsx b/src/components/Connection/SGEConnect/SgeInit.tsx
index a2d3b9d3f2e39b00d98bdd9a58199c1d72967403..259324ac27e7d96c2973435dd07edeff4e3eda7f 100644
--- a/src/components/Connection/SGEConnect/SgeInit.tsx
+++ b/src/components/Connection/SGEConnect/SgeInit.tsx
@@ -6,7 +6,7 @@ import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { Account, FluidStatus } from 'models'
 import React, { useEffect } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import { AppStore } from 'store'
 import {
   setShouldRefreshConsent,
@@ -19,7 +19,7 @@ interface SgeInitProps {
 
 const SgeInit: React.FC<SgeInitProps> = ({ fluidStatus }: SgeInitProps) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const konnectorSlug: string = fluidStatus.connection.konnectorConfig.slug
   const account: Account | null = fluidStatus.connection.account
   const { sgeConnect } = useSelector((state: AppStore) => state.ecolyo.global)
@@ -58,7 +58,7 @@ const SgeInit: React.FC<SgeInitProps> = ({ fluidStatus }: SgeInitProps) => {
         <Button
           aria-label={t(`auth.${konnectorSlug}.accessibility.connect`)}
           onClick={() => {
-            history.push('/sge-connect')
+            navigate('/sge-connect')
           }}
           classes={{
             root: 'btn-highlight',
diff --git a/src/components/Content/Content.tsx b/src/components/Content/Content.tsx
index f10cb32c1d0690a06d472f05803608757abaa378..3f7e11a9aa3a6058a2cd7f223edf86427a51306f 100644
--- a/src/components/Content/Content.tsx
+++ b/src/components/Content/Content.tsx
@@ -1,12 +1,11 @@
+import FeedbackModal from 'components/Feedback/FeedbackModal'
+import { ScreenType } from 'enum/screen.enum'
 import React, { useCallback, useEffect } from 'react'
-import './content.scss'
-import { useSelector, useDispatch } from 'react-redux'
+import { useDispatch, useSelector } from 'react-redux'
 import { AppStore } from 'store'
 import { changeScreenType } from 'store/global/global.actions'
 import { updateModalIsFeedbacksOpen } from 'store/modal/modal.actions'
-import { ScreenType } from 'enum/screen.enum'
-import FeedbackModal from 'components/Feedback/FeedbackModal'
-import { useHistory } from 'react-router-dom'
+import './content.scss'
 interface ContentProps {
   children?: React.ReactNode
   height?: number
@@ -19,7 +18,6 @@ const Content: React.FC<ContentProps> = ({
   background = 'inherit',
 }: ContentProps) => {
   const dispatch = useDispatch()
-  const history = useHistory()
   const { screenType } = useSelector((state: AppStore) => state.ecolyo.global)
   const { isFeedbacksOpen } = useSelector(
     (state: AppStore) => state.ecolyo.modal
@@ -32,25 +30,10 @@ const Content: React.FC<ContentProps> = ({
     dispatch(updateModalIsFeedbacksOpen(false))
   }, [dispatch])
 
-  // Scroll handling
-  const app = document.querySelector('.app-content')
-
-  /**
-   * Handle Desktop scroll
-   */
-  const handleWindowScroll = useCallback(() => {
-    app?.scrollTo(0, 0)
-    window.scrollTo(0, 0)
-  }, [app])
-
-  // Set listners for scroll
+  // Set listeners for scroll
   useEffect(() => {
-    const listner = history.listen(handleWindowScroll)
-    return () => {
-      // remove listner subscription
-      listner()
-    }
-  }, [handleWindowScroll, history])
+    window.scrollTo(0, 0)
+  }, [])
 
   useEffect(() => {
     function handleResize() {
diff --git a/src/components/Duel/DuelEmptyValueModal.tsx b/src/components/Duel/DuelEmptyValueModal.tsx
index f960567e1405eeeade42c79ae88b04f7762bc56a..373de8b10fe165385f668fa85950654358b1bf44 100644
--- a/src/components/Duel/DuelEmptyValueModal.tsx
+++ b/src/components/Duel/DuelEmptyValueModal.tsx
@@ -1,13 +1,13 @@
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import React, { useEffect, useState } from 'react'
 import './duelEmptyValueModal.scss'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 
-import Icon from 'cozy-ui/transpiled/react/Icon'
-import Dialog from '@material-ui/core/Dialog'
 import Button from '@material-ui/core/Button'
+import Dialog from '@material-ui/core/Dialog'
+import Icon from 'cozy-ui/transpiled/react/Icon'
 
 import defaultIcon from 'assets/icons/visu/duelResult/default.svg'
-import { importIconbyId } from 'utils/utils'
+import { importIconById } from 'utils/utils'
 
 interface DuelEmptyValueModalProps {
   open: boolean
@@ -22,7 +22,7 @@ const DuelEmptyValueModal: React.FC<DuelEmptyValueModalProps> = ({
   const [emptyIcon, setEmptyIcon] = useState<string>(defaultIcon)
   useEffect(() => {
     async function handleEcogestureIcon() {
-      const icon = await importIconbyId('emptyValue', 'duel')
+      const icon = await importIconById('emptyValue', 'duel')
       if (icon) {
         setEmptyIcon(icon)
       } else {
diff --git a/src/components/Duel/DuelError.spec.tsx b/src/components/Duel/DuelError.spec.tsx
index 7955e98c24720c44fdf2aa5d45ddf79d0e065187..1e7314f2457cb4d7e78f7b0a44400177df4bd1ef 100644
--- a/src/components/Duel/DuelError.spec.tsx
+++ b/src/components/Duel/DuelError.spec.tsx
@@ -1,6 +1,6 @@
-import React from 'react'
-import { shallow } from 'enzyme'
 import DuelError from 'components/Duel/DuelError'
+import { shallow } from 'enzyme'
+import React from 'react'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -12,6 +12,12 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
   }
 })
 
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
+
 describe('DuelError component', () => {
   it('should be rendered correctly', () => {
     const component = shallow(<DuelError />).getElement()
diff --git a/src/components/Duel/DuelError.tsx b/src/components/Duel/DuelError.tsx
index d14ecfb0661d7b93339d31bef7287c87c59857ab..80e9e5945fa5d244104d05dbf1ebe9b91aaa7bff 100644
--- a/src/components/Duel/DuelError.tsx
+++ b/src/components/Duel/DuelError.tsx
@@ -1,16 +1,16 @@
-import React, { useCallback } from 'react'
+import Button from '@material-ui/core/Button'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useHistory } from 'react-router-dom'
+import React, { useCallback } from 'react'
+import { useNavigate } from 'react-router-dom'
 import './duelError.scss'
-import Button from '@material-ui/core/Button'
 
 const DuelError: React.FC = () => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
 
   const goBack = useCallback(() => {
-    history.goBack()
-  }, [history])
+    navigate(-1)
+  }, [navigate])
 
   return (
     <div className="duel-error-container">
diff --git a/src/components/Duel/DuelOngoing.spec.tsx b/src/components/Duel/DuelOngoing.spec.tsx
index acaea2598de209cc0f60e92e45c5ec9f77049b2c..8202525bd14939a9eaf3d42a974f8b34fd72f005 100644
--- a/src/components/Duel/DuelOngoing.spec.tsx
+++ b/src/components/Duel/DuelOngoing.spec.tsx
@@ -1,15 +1,15 @@
-import React from 'react'
+import DuelOngoing from 'components/Duel/DuelOngoing'
+import { UserChallengeState } from 'enum/userChallenge.enum'
 import { mount } from 'enzyme'
-import { Provider } from 'react-redux'
+import { DateTime } from 'luxon'
+import { UserChallenge } from 'models'
+import React from 'react'
 import { act } from 'react-dom/test-utils'
+import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import DuelOngoing from 'components/Duel/DuelOngoing'
-import { UserChallenge } from 'models'
-import { DateTime } from 'luxon'
-import { UserChallengeState } from 'enum/userChallenge.enum'
+import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
 import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
-import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
 import DuelResultModal from './DuelResultModal'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
@@ -36,16 +36,16 @@ jest.mock('services/challenge.service', () => {
 const mockHistoryPush = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
+  useNavigate: () => ({
     push: mockHistoryPush,
   }),
 }))
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 const mockFormatNumberValues = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
     formatNumberValues: jest.fn(() => {
       return mockFormatNumberValues
diff --git a/src/components/Duel/DuelOngoing.tsx b/src/components/Duel/DuelOngoing.tsx
index 171d0d946be1aac7a2053a3224151a1e4dd46bb4..9e6646353bb28780b793e278761ecaf60a6de765 100644
--- a/src/components/Duel/DuelOngoing.tsx
+++ b/src/components/Duel/DuelOngoing.tsx
@@ -1,9 +1,24 @@
-import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
-import { useHistory } from 'react-router-dom'
-import './duelOngoing.scss'
+import CaptionAverageIcon from 'assets/icons/visu/duel/captionAverage.svg'
+import CaptionConsumptionIcon from 'assets/icons/visu/duel/captionConsumption.svg'
+import CaptionIncomingIcon from 'assets/icons/visu/duel/captionIncoming.svg'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import DuelChart from 'components/Duel/DuelChart'
+import DuelResultModal from 'components/Duel/DuelResultModal'
+import LastDuelModal from 'components/Duel/lastDuelModal'
 import { Client, useClient } from 'cozy-client'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { UsageEventType } from 'enum/usageEvent.enum'
+import {
+  UserChallengeSuccess,
+  UserChallengeUpdateFlag,
+} from 'enum/userChallenge.enum'
+import { UserDuelState } from 'enum/userDuel.enum'
+import { Dataload, UserChallenge, UserDuel } from 'models'
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
+import { useNavigate } from 'react-router-dom'
+import ChallengeService from 'services/challenge.service'
+import UsageEventService from 'services/usageEvent.service'
 import { AppStore } from 'store'
 import {
   unlockNextUserChallenge,
@@ -11,23 +26,7 @@ import {
 } from 'store/challenge/challenge.actions'
 import { toggleChallengeDuelNotification } from 'store/global/global.actions'
 import { formatNumberValues } from 'utils/utils'
-
-import { UserDuel, UserChallenge, Dataload } from 'models'
-import {
-  UserChallengeSuccess,
-  UserChallengeUpdateFlag,
-} from 'enum/userChallenge.enum'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import CaptionAverageIcon from 'assets/icons/visu/duel/captionAverage.svg'
-import CaptionConsumptionIcon from 'assets/icons/visu/duel/captionConsumption.svg'
-import CaptionIncomingIcon from 'assets/icons/visu/duel/captionIncoming.svg'
-import ChallengeService from 'services/challenge.service'
-import DuelChart from 'components/Duel/DuelChart'
-import DuelResultModal from 'components/Duel/DuelResultModal'
-import LastDuelModal from 'components/Duel/lastDuelModal'
-import UsageEventService from 'services/usageEvent.service'
-import { UsageEventType } from 'enum/usageEvent.enum'
-import { UserDuelState } from 'enum/userDuel.enum'
+import './duelOngoing.scss'
 
 interface DuelOngoingProps {
   userChallenge: UserChallenge
@@ -44,7 +43,7 @@ const DuelOngoing: React.FC<DuelOngoingProps> = ({
     (state: AppStore) => state.ecolyo.challenge
   )
   const dispatch = useDispatch()
-  const history = useHistory()
+  const navigate = useNavigate()
   const [resultModal, setResultModal] = useState<boolean>(false)
   const [winChallenge, setWinChallenge] = useState<boolean>(false)
   const [isLastDuel, setIsLastDuel] = useState<boolean>(false)
@@ -96,7 +95,7 @@ const DuelOngoing: React.FC<DuelOngoingProps> = ({
     ) {
       setIsLastDuel(true)
     } else {
-      history.push('/challenges')
+      navigate('/challenges')
     }
   }, [
     client,
@@ -104,12 +103,12 @@ const DuelOngoing: React.FC<DuelOngoingProps> = ({
     winChallenge,
     dispatch,
     userChallengeList,
-    history,
+    navigate,
   ])
 
   const setLastResult = useCallback(async () => {
-    history.push('/challenges')
-  }, [history])
+    navigate('/challenges')
+  }, [navigate])
 
   useEffect(() => {
     function handleResize() {
diff --git a/src/components/Duel/DuelResultModal.spec.tsx b/src/components/Duel/DuelResultModal.spec.tsx
index 7afeda42df5d56f342c94006976a296c46dd595b..543839aff4da3f44d2450a32b5812902c92205ca 100644
--- a/src/components/Duel/DuelResultModal.spec.tsx
+++ b/src/components/Duel/DuelResultModal.spec.tsx
@@ -1,12 +1,11 @@
 import { mount } from 'enzyme'
 import React from 'react'
+import { act } from 'react-dom/test-utils'
 import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
 import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { profileData } from '../../../tests/__mocks__/profileData.mock'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
-
-import { act } from 'react-dom/test-utils'
 import DuelResultModal from './DuelResultModal'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
@@ -18,12 +17,12 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 const mockFormatNumberValues = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
     formatNumberValues: jest.fn(() => {
       return mockFormatNumberValues
@@ -41,7 +40,7 @@ describe('DuelResultModal component', () => {
         profile: profileData,
       },
     })
-    mockImportIconbyId.mockReturnValue('')
+    mockImportIconById.mockReturnValue('')
     const wrapper = mount(
       <Provider store={store}>
         <DuelResultModal
@@ -66,7 +65,7 @@ describe('DuelResultModal component', () => {
         profile: profileData,
       },
     })
-    mockImportIconbyId.mockReturnValue('')
+    mockImportIconById.mockReturnValue('')
 
     const wrapper = mount(
       <Provider store={store}>
diff --git a/src/components/Duel/DuelResultModal.tsx b/src/components/Duel/DuelResultModal.tsx
index 3b0ea595c6ef4d8e8ddd162974eefaf80c66debc..b1b1d28086b8651616c59080b59f48e073d4d705 100644
--- a/src/components/Duel/DuelResultModal.tsx
+++ b/src/components/Duel/DuelResultModal.tsx
@@ -1,13 +1,13 @@
-import React, { useEffect, useState } from 'react'
-import './duelResultModal.scss'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { formatNumberValues, importIconbyId } from 'utils/utils'
 import { UserChallenge } from 'models/challenge.model'
+import React, { useEffect, useState } from 'react'
+import { formatNumberValues, importIconById } from 'utils/utils'
+import './duelResultModal.scss'
 
-import Icon from 'cozy-ui/transpiled/react/Icon'
 import Button from '@material-ui/core/Button'
 import Dialog from '@material-ui/core/Dialog'
 import defaultIcon from 'assets/icons/visu/duelResult/default.svg'
+import Icon from 'cozy-ui/transpiled/react/Icon'
 
 interface DuelResultModalProps {
   open: boolean
@@ -31,13 +31,13 @@ const DuelResultModal: React.FC<DuelResultModalProps> = ({
 
   useEffect(() => {
     async function handleEcogestureIcon() {
-      const icon = await importIconbyId(userChallenge.id + '-1', 'duelResult')
+      const icon = await importIconById(userChallenge.id + '-1', 'duelResult')
       if (icon) {
         setWinIcon(icon)
       } else {
         setWinIcon(defaultIcon)
       }
-      const icon2 = await importIconbyId(userChallenge.id + '-0', 'duelResult')
+      const icon2 = await importIconById(userChallenge.id + '-0', 'duelResult')
       if (icon2) {
         setLossIcon(icon2)
       } else {
diff --git a/src/components/Duel/DuelUnlocked.spec.tsx b/src/components/Duel/DuelUnlocked.spec.tsx
index 74b23a0543a853eac78a4ee6f0b2d967ec14ab56..cbc81c630edb99cb32fdb76bff01414b870abd21 100644
--- a/src/components/Duel/DuelUnlocked.spec.tsx
+++ b/src/components/Duel/DuelUnlocked.spec.tsx
@@ -1,15 +1,15 @@
-import React from 'react'
+import Button from '@material-ui/core/Button'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import DuelUnlocked from 'components/Duel/DuelUnlocked'
+import { FluidType } from 'enum/fluid.enum'
+import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
 import { mount } from 'enzyme'
+import React from 'react'
 import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import DuelUnlocked from 'components/Duel/DuelUnlocked'
+import { formatNumberValues } from 'utils/utils'
 import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
-import { formatNumberValues } from 'utils/utils'
-import Button from '@material-ui/core/Button'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import { FluidType } from 'enum/fluid.enum'
-import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -20,12 +20,12 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 const mockFormatNumberValues = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
     formatNumberValues: jest.fn(() => {
       return mockFormatNumberValues
diff --git a/src/components/Duel/DuelUnlocked.tsx b/src/components/Duel/DuelUnlocked.tsx
index c542baeb0a557ed1899f306b8865ceb285ca93fa..328d791c8489c74edc5a58433c139e16047d2f93 100644
--- a/src/components/Duel/DuelUnlocked.tsx
+++ b/src/components/Duel/DuelUnlocked.tsx
@@ -1,19 +1,19 @@
-import React, { useCallback, useEffect, useState } from 'react'
-import './duelUnlocked.scss'
 import { Client, useClient } from 'cozy-client'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useDispatch } from 'react-redux'
 import { UserChallenge } from 'models'
-import { setChallengeConsumption } from 'store/challenge/challenge.actions'
+import React, { useCallback, useEffect, useState } from 'react'
+import { useDispatch } from 'react-redux'
 import ChallengeService from 'services/challenge.service'
-import { formatNumberValues, importIconbyId } from 'utils/utils'
+import { setChallengeConsumption } from 'store/challenge/challenge.actions'
+import { formatNumberValues, importIconById } from 'utils/utils'
+import './duelUnlocked.scss'
 
+import Button from '@material-ui/core/Button'
 import defaultDuelIcon from 'assets/icons/visu/challenge/CHALLENGE0001.svg'
 import defaultIcon from 'assets/icons/visu/duel/default.svg'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import Button from '@material-ui/core/Button'
-import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
 import { UsageEventType } from 'enum/usageEvent.enum'
+import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
 import UsageEventService from 'services/usageEvent.service'
 
 interface DuelUnlockedProps {
@@ -55,7 +55,7 @@ const DuelUnlocked: React.FC<DuelUnlockedProps> = ({
 
   useEffect(() => {
     async function handleEcogestureIcon() {
-      const icon = await importIconbyId(userChallenge.id, 'challenge')
+      const icon = await importIconById(userChallenge.id, 'challenge')
       if (icon) {
         setDuelIcon(icon)
       } else {
diff --git a/src/components/Duel/DuelView.spec.tsx b/src/components/Duel/DuelView.spec.tsx
index da088b854b7204eb110fd7f54844adb717eadc67..4f079d5f26c4e3c06e912b6c8710856be9e95987 100644
--- a/src/components/Duel/DuelView.spec.tsx
+++ b/src/components/Duel/DuelView.spec.tsx
@@ -1,14 +1,14 @@
-import React from 'react'
-import { shallow } from 'enzyme'
-import * as reactRedux from 'react-redux'
 import DuelView from 'components/Duel/DuelView'
 import { UserChallengeState } from 'enum/userChallenge.enum'
+import { UserDuelState } from 'enum/userDuel.enum'
+import { shallow } from 'enzyme'
+import React from 'react'
+import * as reactRedux from 'react-redux'
 import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
 import DuelError from './DuelError'
-import DuelUnlocked from './DuelUnlocked'
 import DuelOngoing from './DuelOngoing'
-import { UserDuelState } from 'enum/userDuel.enum'
+import DuelUnlocked from './DuelUnlocked'
 
 jest.mock('components/Header/CozyBar', () => 'mock-cozybar')
 jest.mock('components/Header/Header', () => 'mock-header')
@@ -16,14 +16,12 @@ jest.mock('components/Content/Content', () => 'mock-content')
 
 const mockUseSelector = jest.spyOn(reactRedux, 'useSelector')
 
-const mockHistoryGoBack = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   useLocation: () => ({
     search: '?id=CHALLENGE0002',
   }),
-  useHistory: () => ({
-    goBack: mockHistoryGoBack,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 describe('DuelView component', () => {
diff --git a/src/components/Duel/DuelView.tsx b/src/components/Duel/DuelView.tsx
index 54edb152bc533b29ab2c8ae014d08bb481b46b73..d96cc56ff760117c24dc14c00dbe8c9fd0640e61 100644
--- a/src/components/Duel/DuelView.tsx
+++ b/src/components/Duel/DuelView.tsx
@@ -8,7 +8,7 @@ import { UserDuelState } from 'enum/userDuel.enum'
 import { UserChallenge } from 'models'
 import React, { useCallback, useState } from 'react'
 import { useSelector } from 'react-redux'
-import { useHistory, useLocation } from 'react-router-dom'
+import { useLocation, useNavigate } from 'react-router-dom'
 import { AppStore } from 'store'
 import DuelEmptyValueModal from './DuelEmptyValueModal'
 import DuelOngoing from './DuelOngoing'
@@ -23,12 +23,12 @@ const DuelView: React.FC = () => {
     challenge => challenge.id === id
   )
 
-  const history = useHistory()
+  const navigate = useNavigate()
   const defineHeaderHeight = useCallback((height: number) => {
     setHeaderHeight(height)
   }, [])
   const goBackToChallenge = () => {
-    history.push('/challenges')
+    navigate('/challenges')
   }
   const renderDuel = (challenge: UserChallenge) => {
     switch (challenge.duel.state) {
diff --git a/src/components/Ecogesture/EcogestureCard.spec.tsx b/src/components/Ecogesture/EcogestureCard.spec.tsx
index 2aca94f0f5a5ffff3ac0c7749837d1a6dcfddfab..89d866f4378950918f30a64a3cd4c685f9120814 100644
--- a/src/components/Ecogesture/EcogestureCard.spec.tsx
+++ b/src/components/Ecogesture/EcogestureCard.spec.tsx
@@ -1,13 +1,13 @@
 /* eslint-disable react/display-name */
-import React from 'react'
-import { mount } from 'enzyme'
 import EcogestureCard from 'components/Ecogesture/EcogestureCard'
-import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
+import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
-import configureStore from 'redux-mock-store'
-import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
+import React from 'react'
 import { Provider } from 'react-redux'
 import { BrowserRouter } from 'react-router-dom'
+import configureStore from 'redux-mock-store'
+import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
+import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
@@ -22,11 +22,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
 jest.mock('components/CommonKit/Icon/StyledIcon', () => () => (
   <div id="StyledIcon" />
 ))
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
   }
 })
@@ -40,7 +40,7 @@ describe('EcogestureCard component', () => {
         global: globalStateData,
       },
     })
-    mockImportIconbyId.mockReturnValueOnce('')
+    mockImportIconById.mockReturnValueOnce('')
     const wrapper = mount(
       <Provider store={store}>
         <BrowserRouter>
@@ -58,7 +58,7 @@ describe('EcogestureCard component', () => {
         global: globalStateData,
       },
     })
-    mockImportIconbyId.mockReturnValue(undefined)
+    mockImportIconById.mockReturnValue(undefined)
     const wrapper = mount(
       <Provider store={store}>
         <BrowserRouter>
diff --git a/src/components/Ecogesture/EcogestureCard.tsx b/src/components/Ecogesture/EcogestureCard.tsx
index da0e18a3e2c7f502e40e2c1895aa78c76210da04..d0c502e2cf344c2e43163bfd2ccb2085da0257ea 100644
--- a/src/components/Ecogesture/EcogestureCard.tsx
+++ b/src/components/Ecogesture/EcogestureCard.tsx
@@ -1,13 +1,13 @@
-import React, { useState, useEffect } from 'react'
-import { Ecogesture } from 'models'
+import { Link } from '@material-ui/core/'
+import defaultIcon from 'assets/icons/visu/ecogesture/default.svg'
 import StyledEcogestureCard from 'components/CommonKit/Card/StyledEcogestureCard'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import { importIconbyId } from 'utils/utils'
+import { Ecogesture } from 'models'
+import React, { useEffect, useState } from 'react'
+import { Link as RouterLink } from 'react-router-dom'
+import { importIconById } from 'utils/utils'
 import './ecogestureCard.scss'
 import EfficientyRating from './EfficientyRating'
-import defaultIcon from 'assets/icons/visu/ecogesture/default.svg'
-import { Link as RouterLink } from 'react-router-dom'
-import { Link } from '@material-ui/core/'
 
 interface EcogestureCardProps {
   ecogesture: Ecogesture
@@ -21,7 +21,7 @@ const EcogestureCard: React.FC<EcogestureCardProps> = ({
   const [ecogestureIcon, setEcogestureIcon] = useState<string>('')
   useEffect(() => {
     async function handleEcogestureIcon() {
-      const icon = await importIconbyId(ecogesture.id, 'ecogesture')
+      const icon = await importIconById(ecogesture.id, 'ecogesture')
       if (icon) {
         setEcogestureIcon(icon)
       } else {
@@ -37,8 +37,8 @@ const EcogestureCard: React.FC<EcogestureCardProps> = ({
     <Link
       to={{
         pathname: `/ecogesture/${ecogesture.id}`,
-        state: { selectionCompleted },
       }}
+      state={{ selectionCompleted }}
       component={RouterLink}
       className="ecogesture-list-item"
     >
diff --git a/src/components/Ecogesture/EcogestureEmptyList.spec.tsx b/src/components/Ecogesture/EcogestureEmptyList.spec.tsx
index 01d6a11cd9b36f83d00fdd54b399c3ed3f74e360..09bfb0cc9e377400b21294eb8572f26b46da3830 100644
--- a/src/components/Ecogesture/EcogestureEmptyList.spec.tsx
+++ b/src/components/Ecogesture/EcogestureEmptyList.spec.tsx
@@ -17,12 +17,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 const mockStore = configureStore([])
 const mockChangeTab = jest.fn()
@@ -81,7 +79,7 @@ describe('EcogestureEmptyList component', () => {
       </Provider>
     )
     wrapper.find(Button).at(1).simulate('click')
-    expect(mockHistoryPush).toHaveBeenCalledWith('/ecogesture-form')
+    expect(mockedNavigate).toHaveBeenCalledWith('/ecogesture-form')
   })
   it('should render doing text with empty list on completed selection', () => {
     const store = mockStore({
diff --git a/src/components/Ecogesture/EcogestureEmptyList.tsx b/src/components/Ecogesture/EcogestureEmptyList.tsx
index 5c78275e6bf5c42d3176c8a3ad3af24392f77c2b..dfeb15139aa0387088e93412481be8f1bb93991b 100644
--- a/src/components/Ecogesture/EcogestureEmptyList.tsx
+++ b/src/components/Ecogesture/EcogestureEmptyList.tsx
@@ -1,12 +1,11 @@
-import React from 'react'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import Button from '@material-ui/core/Button'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import doingIcon from 'assets/icons/ico/doing-enabled.svg'
 import objectiveIcon from 'assets/icons/ico/objective-enabled.svg'
-
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import React from 'react'
+import { useNavigate } from 'react-router-dom'
 import './ecogestureEmptyList.scss'
-import { useHistory } from 'react-router-dom'
 
 interface EcogestureEmptyListProps {
   setTab: React.Dispatch<React.SetStateAction<number>>
@@ -21,7 +20,7 @@ const EcogestureEmptyList: React.FC<EcogestureEmptyListProps> = ({
   handleReinitClick,
 }: EcogestureEmptyListProps) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   return (
     <div className="ec-empty-container">
       <div className="ec-empty-content">
@@ -69,7 +68,7 @@ const EcogestureEmptyList: React.FC<EcogestureEmptyListProps> = ({
             <Button
               aria-label={t('ecogesture.emptyList.btn2')}
               onClick={() => {
-                history.push('/ecogesture-form')
+                navigate('/ecogesture-form')
               }}
               classes={{
                 root: 'btn-highlight btn2',
diff --git a/src/components/Ecogesture/EcogestureInitModal.spec.tsx b/src/components/Ecogesture/EcogestureInitModal.spec.tsx
index ed59dc9cb4583e1bfa5df52f01ea136e99926d84..b6f92fd6d00ef463f5ca951ae84d52e057d3a4c5 100644
--- a/src/components/Ecogesture/EcogestureInitModal.spec.tsx
+++ b/src/components/Ecogesture/EcogestureInitModal.spec.tsx
@@ -1,13 +1,13 @@
-import React from 'react'
+import { Button } from '@material-ui/core'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
+import React from 'react'
+import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
-import { Provider } from 'react-redux'
-import EcogestureInitModal from './EcogestureInitModal'
-import { Button } from '@material-ui/core'
+import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { mockInitialProfileState } from '../../../tests/__mocks__/store'
+import EcogestureInitModal from './EcogestureInitModal'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -18,18 +18,18 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
   }
 })
 const mockHistoryPush = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
+  useNavigate: () => ({
     push: mockHistoryPush,
   }),
 }))
diff --git a/src/components/Ecogesture/EcogestureList.tsx b/src/components/Ecogesture/EcogestureList.tsx
index cec76aff46bb1c3cc68e104b9d9ba5ebbf7d11b2..49e07606e07cdb627df50dee685696129b3ee260 100644
--- a/src/components/Ecogesture/EcogestureList.tsx
+++ b/src/components/Ecogesture/EcogestureList.tsx
@@ -1,17 +1,15 @@
-import React, { useState } from 'react'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useHistory } from 'react-router-dom'
-import { Ecogesture } from 'models'
-
-import { Menu, MenuItem, ListItemIcon } from '@material-ui/core/'
-
-import SortIcon from 'assets/icons/ico/sort.svg'
+import { ListItemIcon, Menu, MenuItem } from '@material-ui/core/'
+import Button from '@material-ui/core/Button'
 import CheckIcon from 'assets/icons/ico/check.svg'
-import EcogestureCard from 'components/Ecogesture/EcogestureCard'
+import SortIcon from 'assets/icons/ico/sort.svg'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import Button from '@material-ui/core/Button'
-import './ecogestureList.scss'
+import EcogestureCard from 'components/Ecogesture/EcogestureCard'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { EcogestureStatus, Usage } from 'enum/ecogesture.enum'
+import { Ecogesture } from 'models'
+import React, { useState } from 'react'
+import { useNavigate } from 'react-router-dom'
+import './ecogestureList.scss'
 
 interface EcogestureListProps {
   list: Ecogesture[]
@@ -31,13 +29,13 @@ const EcogestureList: React.FC<EcogestureListProps> = ({
   handleReinitClick,
 }: EcogestureListProps) => {
   const { t } = useI18n()
-  const history = useHistory()
-  const [activeFilter, setactiveFilter] = useState<string>(Usage[Usage.ALL])
-  const [openDropDown, setopenDropDown] = useState<boolean>(false)
+  const navigate = useNavigate()
+  const [activeFilter, setActiveFilter] = useState<string>(Usage[Usage.ALL])
+  const [openDropDown, setOpenDropDown] = useState<boolean>(false)
   const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)
 
   const toggleDropDown = () => {
-    setopenDropDown(prev => !prev)
+    setOpenDropDown(prev => !prev)
   }
 
   const toggleMenu = (event: React.MouseEvent<HTMLButtonElement>) => {
@@ -45,7 +43,7 @@ const EcogestureList: React.FC<EcogestureListProps> = ({
   }
 
   const closeMenu = (usage?: string) => {
-    usage && setactiveFilter(usage)
+    usage && setActiveFilter(usage)
     setAnchorEl(null)
   }
 
@@ -93,7 +91,7 @@ const EcogestureList: React.FC<EcogestureListProps> = ({
                 root: 'btn-highlight',
                 label: 'text-16-bold',
               }}
-              onClick={() => history.push('/ecogesture-selection')}
+              onClick={() => navigate('/ecogesture-selection')}
             >
               {t('ecogesture.button_selection')}
             </Button>
diff --git a/src/components/Ecogesture/EcogestureModal.spec.tsx b/src/components/Ecogesture/EcogestureModal.spec.tsx
index 561d8020c68246c657b1b072d0b8edf1e6adb371..778b78ada673d6c66bd474e651dd186fd6f77376 100644
--- a/src/components/Ecogesture/EcogestureModal.spec.tsx
+++ b/src/components/Ecogesture/EcogestureModal.spec.tsx
@@ -1,12 +1,12 @@
-import React from 'react'
-import { mount } from 'enzyme'
 import EcogestureModal from 'components/Ecogesture/EcogestureModal'
-import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
+import { mount } from 'enzyme'
+import React from 'react'
+import { act } from 'react-dom/test-utils'
+import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
-import { Provider } from 'react-redux'
-import { act } from 'react-dom/test-utils'
+import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
+import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -17,11 +17,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
   }
 })
diff --git a/src/components/Ecogesture/EcogestureModal.tsx b/src/components/Ecogesture/EcogestureModal.tsx
index d7b06ff987b09e40da4f8eaea18df36ecd3190be..e6abd217f67a318cb398c4a15dc6f7e230afbc2f 100644
--- a/src/components/Ecogesture/EcogestureModal.tsx
+++ b/src/components/Ecogesture/EcogestureModal.tsx
@@ -1,23 +1,23 @@
-import React, { useState, useEffect } from 'react'
-import './ecogestureModal.scss'
 import classNames from 'classnames'
+import useExploration from 'components/Hooks/useExploration'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { AppStore } from 'store'
+import React, { useEffect, useState } from 'react'
 import { useSelector } from 'react-redux'
+import { AppStore } from 'store'
 import { getPicto } from 'utils/picto'
-import useExploration from 'components/Hooks/useExploration'
-import { importIconbyId } from 'utils/utils'
+import { importIconById } from 'utils/utils'
+import './ecogestureModal.scss'
 
 import { Ecogesture } from 'models'
 
-import Icon from 'cozy-ui/transpiled/react/Icon'
+import Button from '@material-ui/core/Button'
 import Dialog from '@material-ui/core/Dialog'
 import IconButton from '@material-ui/core/IconButton'
-import Button from '@material-ui/core/Button'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import EfficientyRating from './EfficientyRating'
 import CloseIcon from 'assets/icons/ico/close.svg'
 import defaultIcon from 'assets/icons/visu/ecogesture/default.svg'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import Icon from 'cozy-ui/transpiled/react/Icon'
+import EfficientyRating from './EfficientyRating'
 
 interface EcogestureModalProps {
   open: boolean
@@ -47,7 +47,7 @@ const EcogestureModal: React.FC<EcogestureModalProps> = ({
   }
   useEffect(() => {
     async function handleEcogestureIcon() {
-      const icon = await importIconbyId(ecogesture.id, 'ecogesture')
+      const icon = await importIconById(ecogesture.id, 'ecogesture')
       if (icon) {
         setEcogestureIcon(icon)
       } else {
diff --git a/src/components/Ecogesture/EcogestureReinitModal.spec.tsx b/src/components/Ecogesture/EcogestureReinitModal.spec.tsx
index 2cc0a86e1516b66cb9ee543a30271f818bc2e7b9..8dce007bf23265432d1a2184f8e7e700de355d02 100644
--- a/src/components/Ecogesture/EcogestureReinitModal.spec.tsx
+++ b/src/components/Ecogesture/EcogestureReinitModal.spec.tsx
@@ -1,10 +1,10 @@
-import React from 'react'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
+import React from 'react'
+import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
-import { Provider } from 'react-redux'
+import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import EcogestureReinitModal from './EcogestureReinitModal'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
@@ -16,11 +16,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
   }
 })
diff --git a/src/components/Ecogesture/EcogestureView.spec.tsx b/src/components/Ecogesture/EcogestureView.spec.tsx
index b62290252e0b1148e071f4dc42d6e3272a9412f9..8a25aa6a6495e4623f2b1293f67afa5961956ab9 100644
--- a/src/components/Ecogesture/EcogestureView.spec.tsx
+++ b/src/components/Ecogesture/EcogestureView.spec.tsx
@@ -1,20 +1,20 @@
-import React from 'react'
+import { IconButton, Tab } from '@material-ui/core'
+import EcogestureView from 'components/Ecogesture/EcogestureView'
+import { Season } from 'enum/ecogesture.enum'
 import { mount } from 'enzyme'
-import { Provider } from 'react-redux'
+import toJson from 'enzyme-to-json'
+import React from 'react'
 import * as reactRedux from 'react-redux'
+import { Provider } from 'react-redux'
+import * as profileActions from 'store/profile/profile.actions'
+import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
-import EcogestureView from 'components/Ecogesture/EcogestureView'
-import { IconButton, Tab } from '@material-ui/core'
-import toJson from 'enzyme-to-json'
-import EcogestureInitModal from './EcogestureInitModal'
-import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
-import { Season } from 'enum/ecogesture.enum'
-import EcogestureEmptyList from './EcogestureEmptyList'
-import * as profileActions from 'store/profile/profile.actions'
 import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
+import EcogestureEmptyList from './EcogestureEmptyList'
+import EcogestureInitModal from './EcogestureInitModal'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -59,8 +59,7 @@ jest.mock('utils/utils', () => {
   }
 })
 const useSelectorSpy = jest.spyOn(reactRedux, 'useSelector')
-
-const mockHistoryGoBack = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
   useLocation: () => {
@@ -68,9 +67,7 @@ jest.mock('react-router-dom', () => ({
       search: '',
     }
   },
-  useHistory: () => ({
-    push: mockHistoryGoBack,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 describe('EcogestureView component', () => {
diff --git a/src/components/Ecogesture/EcogestureView.tsx b/src/components/Ecogesture/EcogestureView.tsx
index e167d49ac0bd263e6feaed2841f15e4db3ebc78f..412756216520f5113f5a1f71c9181360cebb7198 100644
--- a/src/components/Ecogesture/EcogestureView.tsx
+++ b/src/components/Ecogesture/EcogestureView.tsx
@@ -12,7 +12,7 @@ import { Ecogesture } from 'models'
 import { ProfileEcogesture } from 'models/profileEcogesture.model'
 import React, { useCallback, useEffect, useState } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
-import { useHistory, useLocation } from 'react-router-dom'
+import { useLocation, useNavigate } from 'react-router-dom'
 import EcogestureService from 'services/ecogesture.service'
 import { AppStore } from 'store'
 import { updateProfile } from 'store/profile/profile.actions'
@@ -65,7 +65,7 @@ const EcogestureView: React.FC = () => {
   const [tabValue, setTabValue] = useState<EcogestureStatus>(
     tab ? parseInt(tab) : EcogestureStatus.OBJECTIVE
   )
-  const history = useHistory()
+  const navigate = useNavigate()
   const [isLoaded, setIsLoaded] = useState<boolean>(false)
   const [allEcogestureList, setAllEcogestureList] = useState<Ecogesture[]>([])
   const [doingEcogestureList, setDoingEcogestureList] = useState<Ecogesture[]>(
@@ -88,8 +88,8 @@ const EcogestureView: React.FC = () => {
   const handleLaunchForm = useCallback(async () => {
     dispatch(updateProfile({ haveSeenEcogestureModal: true }))
     setOpenEcogestureInitModal(false)
-    history.push('/ecogesture-form?modal=false')
-  }, [dispatch, history])
+    navigate('/ecogesture-form?modal=false')
+  }, [dispatch, navigate])
 
   const handleCloseEcogestureInitModal = useCallback(async () => {
     dispatch(updateProfile({ haveSeenEcogestureModal: true }))
@@ -104,9 +104,9 @@ const EcogestureView: React.FC = () => {
     if (reset) {
       setOpenEcogestureReinitModal(false)
       setIsLoaded(true)
-      history.push('/ecogesture-form?modal=true')
+      navigate('/ecogesture-form?modal=true')
     }
-  }, [client, history])
+  }, [client, navigate])
 
   const handleCloseEcogestureReinitModal = useCallback(() => {
     setOpenEcogestureReinitModal(false)
@@ -117,10 +117,10 @@ const EcogestureView: React.FC = () => {
       event.preventDefault()
       const params = new URLSearchParams()
       params.append('tab', newValue.toString())
-      history.push({ search: params.toString() })
+      navigate({ search: params.toString() })
       setTabValue(newValue)
     },
-    [history]
+    [navigate]
   )
 
   const tabProps = useCallback((index: number) => {
diff --git a/src/components/Ecogesture/SingleEcogesture.spec.tsx b/src/components/Ecogesture/SingleEcogesture.spec.tsx
index bf710ac4a42484808a829c3ccacd8a215b4e4878..ce940c2a238190f33ccc1c409909dc27188586f1 100644
--- a/src/components/Ecogesture/SingleEcogesture.spec.tsx
+++ b/src/components/Ecogesture/SingleEcogesture.spec.tsx
@@ -1,12 +1,12 @@
 /* eslint-disable react/display-name */
-import React from 'react'
-import { mount } from 'enzyme'
-import { Provider } from 'react-redux'
 import SingleEcogesture from 'components/Ecogesture/SingleEcogesture'
+import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
+import React from 'react'
+import { Provider } from 'react-redux'
+import configureStore from 'redux-mock-store'
 import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
 import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
-import configureStore from 'redux-mock-store'
 import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
 
@@ -19,10 +19,21 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockedNavigate = jest.fn()
+
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+  useParams: () =>
+    jest.fn().mockReturnValue({ ecogestureID: 'ECOGESTURE0001' }),
+  useLocation: jest.fn().mockReturnValue({
+    state: { selectionCompleted: true },
+  }),
+}))
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: () => mockImportIconbyId,
+    importIconById: () => mockImportIconById,
   }
 })
 
@@ -37,26 +48,19 @@ jest.mock('components/Content/Content', () => (props: any) => (
   <div id="content">{props.children}</div>
 ))
 
-const mockgetEcogesturesByIds = jest.fn()
-const mockupdateEcogesture = jest.fn()
+const mockGetEcogesturesByIds = jest.fn()
+const mockUpdateEcogesture = jest.fn()
 jest.mock('services/ecogesture.service', () => {
   return jest.fn(() => {
     return {
-      getEcogesturesByIds: mockgetEcogesturesByIds,
-      updateEcogesture: mockupdateEcogesture,
+      getEcogesturesByIds: mockGetEcogesturesByIds,
+      updateEcogesture: mockUpdateEcogesture,
     }
   })
 })
 
 const mockStore = configureStore([])
 
-jest.mock('react-router-dom', () => ({
-  useLocation: jest.fn().mockReturnValue({
-    state: { selectionCompleted: true },
-  }),
-  useHistory: () => jest.fn(),
-}))
-
 describe('SingleEcogesture component', () => {
   it('should be rendered correctly', async () => {
     const store = mockStore({
@@ -66,14 +70,10 @@ describe('SingleEcogesture component', () => {
       },
     })
 
-    mockgetEcogesturesByIds.mockResolvedValue([ecogesturesData[0]])
+    mockGetEcogesturesByIds.mockResolvedValue([ecogesturesData[0]])
     const wrapper = mount(
       <Provider store={store}>
-        <SingleEcogesture
-          match={{
-            params: { id: 'ECOGESTURE0001' },
-          }}
-        />
+        <SingleEcogesture />
       </Provider>
     )
     await waitForComponentToPaint(wrapper)
@@ -88,24 +88,19 @@ describe('SingleEcogesture component', () => {
       },
     })
 
-    mockgetEcogesturesByIds.mockResolvedValue([ecogesturesData[0]])
-    mockImportIconbyId.mockReturnValue('')
+    mockGetEcogesturesByIds.mockResolvedValue([ecogesturesData[0]])
+    mockImportIconById.mockReturnValue('')
     const updatedEcogesture = { ...ecogesturesData[0], doing: true }
-    mockupdateEcogesture.mockResolvedValueOnce(updatedEcogesture)
+    mockUpdateEcogesture.mockResolvedValueOnce(updatedEcogesture)
     const wrapper = mount(
       <Provider store={store}>
-        <SingleEcogesture
-          match={{
-            params: { id: 'ECOGESTURE0001' },
-          }}
-        />
+        <SingleEcogesture />
       </Provider>
     )
     await waitForComponentToPaint(wrapper)
     wrapper.find('.doing-btn').first().simulate('click')
     await waitForComponentToPaint(wrapper)
-
-    expect(mockupdateEcogesture).toHaveBeenCalledWith(updatedEcogesture)
+    expect(mockUpdateEcogesture).toHaveBeenCalledWith(updatedEcogesture)
   })
   it('should change objective status', async () => {
     const store = mockStore({
@@ -115,24 +110,20 @@ describe('SingleEcogesture component', () => {
       },
     })
 
-    mockgetEcogesturesByIds.mockResolvedValue([ecogesturesData[0]])
-    mockImportIconbyId.mockReturnValue('icontest')
+    mockGetEcogesturesByIds.mockResolvedValue([ecogesturesData[0]])
+    mockImportIconById.mockReturnValue('icontest')
     const updatedEcogesture = { ...ecogesturesData[0], objective: true }
-    mockupdateEcogesture.mockResolvedValueOnce(updatedEcogesture)
+    mockUpdateEcogesture.mockResolvedValueOnce(updatedEcogesture)
 
     const wrapper = mount(
       <Provider store={store}>
-        <SingleEcogesture
-          match={{
-            params: { id: 'ECOGESTURE0001' },
-          }}
-        />
+        <SingleEcogesture />
       </Provider>
     )
     await waitForComponentToPaint(wrapper)
     wrapper.find('.objective-btn').first().simulate('click')
     await waitForComponentToPaint(wrapper)
-    expect(mockupdateEcogesture).toHaveBeenCalledWith(updatedEcogesture)
+    expect(mockUpdateEcogesture).toHaveBeenCalledWith(updatedEcogesture)
   })
   it('should toggle more details', async () => {
     const store = mockStore({
@@ -142,16 +133,12 @@ describe('SingleEcogesture component', () => {
       },
     })
 
-    mockgetEcogesturesByIds.mockResolvedValue([ecogesturesData[0]])
-    mockImportIconbyId.mockReturnValue(undefined)
+    mockGetEcogesturesByIds.mockResolvedValue([ecogesturesData[0]])
+    mockImportIconById.mockReturnValue(undefined)
 
     const wrapper = mount(
       <Provider store={store}>
-        <SingleEcogesture
-          match={{
-            params: { id: 'ECOGESTURE0001' },
-          }}
-        />
+        <SingleEcogesture />
       </Provider>
     )
     await waitForComponentToPaint(wrapper)
diff --git a/src/components/Ecogesture/SingleEcogesture.tsx b/src/components/Ecogesture/SingleEcogesture.tsx
index a84c41f078c18b82f9b5ad3b5aa989b48c7bd471..5368d0dcaef600f6fad9839d817c2b15dd61a011 100644
--- a/src/components/Ecogesture/SingleEcogesture.tsx
+++ b/src/components/Ecogesture/SingleEcogesture.tsx
@@ -15,35 +15,34 @@ import Loader from 'components/Loader/Loader'
 import { useClient } from 'cozy-client'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import Icon from 'cozy-ui/transpiled/react/Icon'
-import { Location } from 'history'
 import { Ecogesture } from 'models'
 import React, { useCallback, useEffect, useMemo, useState } from 'react'
 import { useSelector } from 'react-redux'
-import { useHistory, useLocation } from 'react-router-dom'
+import { Location, useLocation, useNavigate, useParams } from 'react-router-dom'
 import EcogestureService from 'services/ecogesture.service'
 import { AppStore } from 'store'
-import { importIconbyId } from 'utils/utils'
+import { importIconById } from 'utils/utils'
 import EfficientyRating from './EfficientyRating'
 import './singleEcogesture.scss'
 
-interface SingleEcogestureProps {
-  match: { params: { id: string } }
+interface EcogestureLocation extends Location {
+  state: {
+    selectionCompleted: boolean
+  }
 }
 
-const SingleEcogesture: React.FC<SingleEcogestureProps> = ({
-  match,
-}: SingleEcogestureProps) => {
+const SingleEcogesture: React.FC = () => {
   const { t } = useI18n()
   const client = useClient()
-  const history = useHistory()
-  const location: Location<any> = useLocation<any>()
+  const navigate = useNavigate()
+  const location: EcogestureLocation = useLocation()
   const [ecogesture, setEcogesture] = useState<Ecogesture>()
   const [ecogestureIcon, setEcogestureIcon] = useState<string>('')
   const [isMoreDetail, setIsMoreDetail] = useState<boolean>(false)
   const [isDoing, setIsDoing] = useState<boolean>(false)
   const [isObjective, setIsObjective] = useState<boolean>(false)
   const [isLoading, setIsLoading] = useState<boolean>(true)
-  const ecogestureID: string = match.params.id
+  const { ecogestureID } = useParams<{ ecogestureID: string }>()
   const selectionCompleted = location?.state?.selectionCompleted
 
   const ecogestureService = useMemo(
@@ -90,24 +89,19 @@ const SingleEcogesture: React.FC<SingleEcogestureProps> = ({
   useEffect(() => {
     let subscribed = true
     async function getSingleEcogesture() {
-      const data = await ecogestureService.getEcogesturesByIds([ecogestureID])
+      const data = await ecogestureService.getEcogesturesByIds([
+        ecogestureID || '',
+      ])
       if (subscribed) {
-        if (data && data[0]) {
+        if (data?.[0]) {
           setEcogesture(data[0])
           //Prevent case this key doesn't exist in doctype
-          setIsObjective(data[0].objective ? true : false)
-          setIsDoing(data[0].doing ? true : false)
-          const icon = await importIconbyId(data[0].id, 'ecogesture')
+          setIsObjective(data[0].objective)
+          setIsDoing(data[0].doing)
+          const icon = await importIconById(data[0].id, 'ecogesture')
           if (subscribed) {
-            if (icon) {
-              setEcogestureIcon(icon)
-            } else {
-              setEcogestureIcon(defaultIcon)
-            }
-            if (
-              currentChallenge &&
-              currentChallenge.exploration.ecogesture_id === data[0]._id
-            ) {
+            setEcogestureIcon(icon || defaultIcon)
+            if (currentChallenge?.exploration.ecogesture_id === data[0]._id) {
               setValidExploration(currentChallenge.exploration.id)
             }
           }
@@ -131,107 +125,112 @@ const SingleEcogesture: React.FC<SingleEcogestureProps> = ({
   if (isLoading) {
     return (
       <Content height={headerHeight}>
-        <div className="se-loader-container">
-          <Loader />
-        </div>
+        <Loader />
       </Content>
     )
   }
 
-  return ecogesture ? (
-    <>
-      <CozyBar
-        titleKey={'common.title_ecogesture'}
-        displayBackArrow={true}
-        backFunction={() => history.push('/ecogestures')}
-      />
-      <Header
-        setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'common.title_ecogesture'}
-        displayBackArrow={true}
-      />
-      <Content height={headerHeight}>
-        <div className="single-ecogesture">
-          <div className="icon-container">
-            {ecogestureIcon && (
-              <StyledIcon
-                className="icon-big"
-                icon={ecogestureIcon}
-                size={220}
-              />
-            )}
-          </div>
-          <div className="details">
-            <div className="text-22 title">{ecogesture.shortName}</div>
-            <div className="efficiency">
-              <span className="text text-14-normal">
-                {t('ecogesture_modal.efficiency')}
-              </span>
-              <EfficientyRating result={Math.round(ecogesture.efficiency)} />
-            </div>
-          </div>
-          <div className="styled-container">
-            <div className="long-name text-18-bold">{ecogesture.longName}</div>
-            <div
-              className={classNames('description text-16-normal-150', {
-                ['block']: isMoreDetail === true,
-              })}
-            >
-              {ecogesture.longDescription}
+  if (ecogesture) {
+    return (
+      <>
+        <CozyBar
+          titleKey={t('common.title_ecogesture')}
+          displayBackArrow={true}
+          backFunction={() => navigate('/ecogestures')}
+        />
+        <Header
+          setHeaderHeight={defineHeaderHeight}
+          desktopTitleKey={t('common.title_ecogesture')}
+          displayBackArrow={true}
+        />
+        <Content height={headerHeight}>
+          <div className="single-ecogesture">
+            <div className="icon-container">
+              {ecogestureIcon && (
+                <StyledIcon
+                  className="icon-big"
+                  icon={ecogestureIcon}
+                  size={220}
+                />
+              )}
             </div>
-            <div
-              className="toggle-text text-15-normal"
-              onClick={toggleMoreDetail}
-            >
-              {isMoreDetail
-                ? t('ecogesture_modal.show_less')
-                : t('ecogesture_modal.show_more')}
+            <div className="details">
+              <div className="text-22 title">{ecogesture.shortName}</div>
+              <div className="efficiency">
+                <span className="text text-14-normal">
+                  {t('ecogesture_modal.efficiency')}
+                </span>
+                <EfficientyRating result={Math.round(ecogesture.efficiency)} />
+              </div>
             </div>
-          </div>
-          {selectionCompleted && (
-            <div className="buttons-selection">
-              <IconButton
-                aria-label={t('ecogesture.objective')}
-                onClick={toggleObjective}
-                classes={{
-                  root: `btn-secondary-negative objective-btn ${
-                    isObjective && 'active'
-                  }`,
-                  label: 'text-15-normal',
-                }}
+            <div className="styled-container">
+              <div className="long-name text-18-bold">
+                {ecogesture.longName}
+              </div>
+              <div
+                className="toggle-text text-15-normal"
+                onClick={toggleMoreDetail}
+                role="button"
               >
-                <Icon
-                  className="status-icon"
-                  icon={
-                    isObjective ? objectiveEnabledIcon : objectiveDisabledIcon
-                  }
-                  size={40}
-                />
-                <span>{t('ecogesture.objective')}</span>
-              </IconButton>
-              <IconButton
-                aria-label={t('ecogesture.doing')}
-                onClick={toggleDoing}
-                classes={{
-                  root: `btn-secondary-negative doing-btn ${
-                    isDoing && 'active'
-                  }`,
-                  label: 'text-15-normal',
-                }}
+                {isMoreDetail
+                  ? t('ecogesture_modal.show_less')
+                  : t('ecogesture_modal.show_more')}
+              </div>
+              <div
+                className={classNames('description text-16-normal-150', {
+                  ['block']: isMoreDetail === true,
+                })}
               >
-                <Icon
-                  className="status-icon"
-                  icon={isDoing ? doingEnabledIcon : doingDisabledIcon}
-                  size={40}
-                />
-                <span>{t('ecogesture.doing')}</span>
-              </IconButton>
+                {ecogesture.longDescription}
+              </div>
             </div>
-          )}
-        </div>
-      </Content>
-    </>
-  ) : (
+            {selectionCompleted && (
+              <div className="buttons-selection">
+                <IconButton
+                  aria-label={t('ecogesture.objective')}
+                  onClick={toggleObjective}
+                  classes={{
+                    root: `btn-secondary-negative objective-btn ${
+                      isObjective && 'active'
+                    }`,
+                    label: 'text-15-normal',
+                  }}
+                >
+                  <Icon
+                    className="status-icon"
+                    icon={
+                      isObjective ? objectiveEnabledIcon : objectiveDisabledIcon
+                    }
+                    size={40}
+                  />
+                  <span>{t('ecogesture.objective')}</span>
+                </IconButton>
+                <IconButton
+                  aria-label={t('ecogesture.doing')}
+                  onClick={toggleDoing}
+                  classes={{
+                    root: `btn-secondary-negative doing-btn ${
+                      isDoing && 'active'
+                    }`,
+                    label: 'text-15-normal',
+                  }}
+                >
+                  <Icon
+                    className="status-icon"
+                    icon={isDoing ? doingEnabledIcon : doingDisabledIcon}
+                    size={40}
+                  />
+                  <span>{t('ecogesture.doing')}</span>
+                </IconButton>
+              </div>
+            )}
+          </div>
+        </Content>
+      </>
+    )
+  }
+
+  return (
     <ErrorPage
       text={t('error_page.no_ecogesture')}
       returnPage={'ecogestures'}
diff --git a/src/components/Ecogesture/__snapshots__/EcogestureCard.spec.tsx.snap b/src/components/Ecogesture/__snapshots__/EcogestureCard.spec.tsx.snap
index 2048000ad326de83daed64f01f35e5f163905be2..255097ff63691bdc6d98b5f3f83d3cd3ddeba081 100644
--- a/src/components/Ecogesture/__snapshots__/EcogestureCard.spec.tsx.snap
+++ b/src/components/Ecogesture/__snapshots__/EcogestureCard.spec.tsx.snap
@@ -15,21 +15,29 @@ exports[`EcogestureCard component should be rendered correctly 1`] = `
 >
   <BrowserRouter>
     <Router
-      history={
+      location={
+        Object {
+          "hash": "",
+          "key": "default",
+          "pathname": "/",
+          "search": "",
+          "state": null,
+        }
+      }
+      navigationType="POP"
+      navigator={
         Object {
           "action": "POP",
-          "block": [Function],
           "createHref": [Function],
+          "encodeLocation": [Function],
           "go": [Function],
-          "goBack": [Function],
-          "goForward": [Function],
-          "length": 1,
           "listen": [Function],
           "location": Object {
             "hash": "",
+            "key": "default",
             "pathname": "/",
             "search": "",
-            "state": undefined,
+            "state": null,
           },
           "push": [Function],
           "replace": [Function],
@@ -77,22 +85,17 @@ exports[`EcogestureCard component should be rendered correctly 1`] = `
             Object {
               "$$typeof": Symbol(react.forward_ref),
               "displayName": "Link",
-              "propTypes": Object {
-                "innerRef": [Function],
-                "onClick": [Function],
-                "replace": [Function],
-                "target": [Function],
-                "to": [Function],
-              },
               "render": [Function],
             }
           }
+          state={
+            Object {
+              "selectionCompleted": undefined,
+            }
+          }
           to={
             Object {
               "pathname": "/ecogesture/ECOGESTURE001",
-              "state": Object {
-                "selectionCompleted": undefined,
-              },
             }
           }
         >
@@ -112,22 +115,17 @@ exports[`EcogestureCard component should be rendered correctly 1`] = `
               Object {
                 "$$typeof": Symbol(react.forward_ref),
                 "displayName": "Link",
-                "propTypes": Object {
-                  "innerRef": [Function],
-                  "onClick": [Function],
-                  "replace": [Function],
-                  "target": [Function],
-                  "to": [Function],
-                },
                 "render": [Function],
               }
             }
+            state={
+              Object {
+                "selectionCompleted": undefined,
+              }
+            }
             to={
               Object {
                 "pathname": "/ecogesture/ECOGESTURE001",
-                "state": Object {
-                  "selectionCompleted": undefined,
-                },
               }
             }
           >
@@ -138,24 +136,19 @@ exports[`EcogestureCard component should be rendered correctly 1`] = `
                 Object {
                   "$$typeof": Symbol(react.forward_ref),
                   "displayName": "Link",
-                  "propTypes": Object {
-                    "innerRef": [Function],
-                    "onClick": [Function],
-                    "replace": [Function],
-                    "target": [Function],
-                    "to": [Function],
-                  },
                   "render": [Function],
                 }
               }
               onBlur={[Function]}
               onFocus={[Function]}
+              state={
+                Object {
+                  "selectionCompleted": undefined,
+                }
+              }
               to={
                 Object {
                   "pathname": "/ecogesture/ECOGESTURE001",
-                  "state": Object {
-                    "selectionCompleted": undefined,
-                  },
                 }
               }
               variant="inherit"
@@ -201,24 +194,19 @@ exports[`EcogestureCard component should be rendered correctly 1`] = `
                   Object {
                     "$$typeof": Symbol(react.forward_ref),
                     "displayName": "Link",
-                    "propTypes": Object {
-                      "innerRef": [Function],
-                      "onClick": [Function],
-                      "replace": [Function],
-                      "target": [Function],
-                      "to": [Function],
-                    },
                     "render": [Function],
                   }
                 }
                 onBlur={[Function]}
                 onFocus={[Function]}
+                state={
+                  Object {
+                    "selectionCompleted": undefined,
+                  }
+                }
                 to={
                   Object {
                     "pathname": "/ecogesture/ECOGESTURE001",
-                    "state": Object {
-                      "selectionCompleted": undefined,
-                    },
                   }
                 }
                 variant="inherit"
@@ -227,229 +215,223 @@ exports[`EcogestureCard component should be rendered correctly 1`] = `
                   className="MuiTypography-root MuiLink-root MuiLink-underlineHover ecogesture-list-item MuiTypography-colorPrimary"
                   onBlur={[Function]}
                   onFocus={[Function]}
+                  state={
+                    Object {
+                      "selectionCompleted": undefined,
+                    }
+                  }
                   to={
                     Object {
                       "pathname": "/ecogesture/ECOGESTURE001",
-                      "state": Object {
-                        "selectionCompleted": undefined,
-                      },
                     }
                   }
                 >
-                  <LinkAnchor
+                  <a
                     className="MuiTypography-root MuiLink-root MuiLink-underlineHover ecogesture-list-item MuiTypography-colorPrimary"
                     href="/ecogesture/ECOGESTURE001"
-                    navigate={[Function]}
                     onBlur={[Function]}
+                    onClick={[Function]}
                     onFocus={[Function]}
                   >
-                    <a
-                      className="MuiTypography-root MuiLink-root MuiLink-underlineHover ecogesture-list-item MuiTypography-colorPrimary"
-                      href="/ecogesture/ECOGESTURE001"
-                      onBlur={[Function]}
-                      onClick={[Function]}
-                      onFocus={[Function]}
-                    >
-                      <StyledEcogestureCard>
-                        <WithStyles(WithStyles(ForwardRef(CardActionArea)))>
-                          <WithStyles(ForwardRef(CardActionArea))
+                    <StyledEcogestureCard>
+                      <WithStyles(WithStyles(ForwardRef(CardActionArea)))>
+                        <WithStyles(ForwardRef(CardActionArea))
+                          classes={
+                            Object {
+                              "root": "WithStyles(ForwardRef(CardActionArea))-root-1",
+                            }
+                          }
+                        >
+                          <ForwardRef(CardActionArea)
                             classes={
                               Object {
-                                "root": "WithStyles(ForwardRef(CardActionArea))-root-1",
+                                "focusHighlight": "MuiCardActionArea-focusHighlight",
+                                "focusVisible": "Mui-focusVisible",
+                                "root": "MuiCardActionArea-root WithStyles(ForwardRef(CardActionArea))-root-1",
                               }
                             }
                           >
-                            <ForwardRef(CardActionArea)
-                              classes={
-                                Object {
-                                  "focusHighlight": "MuiCardActionArea-focusHighlight",
-                                  "focusVisible": "Mui-focusVisible",
-                                  "root": "MuiCardActionArea-root WithStyles(ForwardRef(CardActionArea))-root-1",
-                                }
-                              }
+                            <WithStyles(ForwardRef(ButtonBase))
+                              className="MuiCardActionArea-root WithStyles(ForwardRef(CardActionArea))-root-1"
+                              focusVisibleClassName="Mui-focusVisible"
                             >
-                              <WithStyles(ForwardRef(ButtonBase))
+                              <ForwardRef(ButtonBase)
                                 className="MuiCardActionArea-root WithStyles(ForwardRef(CardActionArea))-root-1"
+                                classes={
+                                  Object {
+                                    "disabled": "Mui-disabled",
+                                    "focusVisible": "Mui-focusVisible",
+                                    "root": "MuiButtonBase-root",
+                                  }
+                                }
                                 focusVisibleClassName="Mui-focusVisible"
                               >
-                                <ForwardRef(ButtonBase)
-                                  className="MuiCardActionArea-root WithStyles(ForwardRef(CardActionArea))-root-1"
-                                  classes={
-                                    Object {
-                                      "disabled": "Mui-disabled",
-                                      "focusVisible": "Mui-focusVisible",
-                                      "root": "MuiButtonBase-root",
-                                    }
-                                  }
-                                  focusVisibleClassName="Mui-focusVisible"
+                                <button
+                                  className="MuiButtonBase-root MuiCardActionArea-root WithStyles(ForwardRef(CardActionArea))-root-1"
+                                  disabled={false}
+                                  onBlur={[Function]}
+                                  onDragLeave={[Function]}
+                                  onFocus={[Function]}
+                                  onKeyDown={[Function]}
+                                  onKeyUp={[Function]}
+                                  onMouseDown={[Function]}
+                                  onMouseLeave={[Function]}
+                                  onMouseUp={[Function]}
+                                  onTouchEnd={[Function]}
+                                  onTouchMove={[Function]}
+                                  onTouchStart={[Function]}
+                                  tabIndex={0}
+                                  type="button"
                                 >
-                                  <button
-                                    className="MuiButtonBase-root MuiCardActionArea-root WithStyles(ForwardRef(CardActionArea))-root-1"
-                                    disabled={false}
-                                    onBlur={[Function]}
-                                    onDragLeave={[Function]}
-                                    onFocus={[Function]}
-                                    onKeyDown={[Function]}
-                                    onKeyUp={[Function]}
-                                    onMouseDown={[Function]}
-                                    onMouseLeave={[Function]}
-                                    onMouseUp={[Function]}
-                                    onTouchEnd={[Function]}
-                                    onTouchMove={[Function]}
-                                    onTouchStart={[Function]}
-                                    tabIndex={0}
-                                    type="button"
-                                  >
-                                    <WithStyles(WithStyles(ForwardRef(CardContent)))>
-                                      <WithStyles(ForwardRef(CardContent))
+                                  <WithStyles(WithStyles(ForwardRef(CardContent)))>
+                                    <WithStyles(ForwardRef(CardContent))
+                                      classes={
+                                        Object {
+                                          "root": "WithStyles(ForwardRef(CardContent))-root-2",
+                                        }
+                                      }
+                                    >
+                                      <ForwardRef(CardContent)
                                         classes={
                                           Object {
-                                            "root": "WithStyles(ForwardRef(CardContent))-root-2",
+                                            "root": "MuiCardContent-root WithStyles(ForwardRef(CardContent))-root-2",
                                           }
                                         }
                                       >
-                                        <ForwardRef(CardContent)
-                                          classes={
-                                            Object {
-                                              "root": "MuiCardContent-root WithStyles(ForwardRef(CardContent))-root-2",
-                                            }
-                                          }
+                                        <div
+                                          className="MuiCardContent-root WithStyles(ForwardRef(CardContent))-root-2"
                                         >
                                           <div
-                                            className="MuiCardContent-root WithStyles(ForwardRef(CardContent))-root-2"
+                                            className="ec"
                                           >
                                             <div
-                                              className="ec"
+                                              className="ec-content "
                                             >
                                               <div
-                                                className="ec-content "
+                                                className="ec-content-icon"
                                               >
-                                                <div
-                                                  className="ec-content-icon"
-                                                >
-                                                  <Component
-                                                    className="Icon"
-                                                    icon=""
-                                                    size={50}
-                                                  >
-                                                    <div
-                                                      id="StyledIcon"
-                                                    />
-                                                  </Component>
-                                                </div>
-                                                <div
-                                                  className="ec-content-short-name text-15-bold"
+                                                <Component
+                                                  className="Icon"
+                                                  icon=""
+                                                  size={50}
                                                 >
-                                                  Bonhomme de neige
-                                                </div>
-                                                <div
-                                                  className="ec-content-efficiency"
+                                                  <div
+                                                    id="StyledIcon"
+                                                  />
+                                                </Component>
+                                              </div>
+                                              <div
+                                                className="ec-content-short-name text-15-bold"
+                                              >
+                                                Bonhomme de neige
+                                              </div>
+                                              <div
+                                                className="ec-content-efficiency"
+                                              >
+                                                <EfficientyRating
+                                                  result={4}
                                                 >
-                                                  <EfficientyRating
-                                                    result={4}
+                                                  <div
+                                                    className="thunder"
                                                   >
-                                                    <div
-                                                      className="thunder"
+                                                    <Component
+                                                      className="star"
+                                                      icon="test-file-stub"
+                                                      key="0"
+                                                      size={15}
+                                                    >
+                                                      <div
+                                                        id="StyledIcon"
+                                                      />
+                                                    </Component>
+                                                    <Component
+                                                      className="star"
+                                                      icon="test-file-stub"
+                                                      key="1"
+                                                      size={15}
+                                                    >
+                                                      <div
+                                                        id="StyledIcon"
+                                                      />
+                                                    </Component>
+                                                    <Component
+                                                      className="star"
+                                                      icon="test-file-stub"
+                                                      key="2"
+                                                      size={15}
                                                     >
-                                                      <Component
-                                                        className="star"
-                                                        icon="test-file-stub"
-                                                        key="0"
-                                                        size={15}
-                                                      >
-                                                        <div
-                                                          id="StyledIcon"
-                                                        />
-                                                      </Component>
-                                                      <Component
-                                                        className="star"
-                                                        icon="test-file-stub"
-                                                        key="1"
-                                                        size={15}
-                                                      >
-                                                        <div
-                                                          id="StyledIcon"
-                                                        />
-                                                      </Component>
-                                                      <Component
-                                                        className="star"
-                                                        icon="test-file-stub"
-                                                        key="2"
-                                                        size={15}
-                                                      >
-                                                        <div
-                                                          id="StyledIcon"
-                                                        />
-                                                      </Component>
-                                                      <Component
-                                                        className="star"
-                                                        icon="test-file-stub"
-                                                        key="3"
-                                                        size={15}
-                                                      >
-                                                        <div
-                                                          id="StyledIcon"
-                                                        />
-                                                      </Component>
-                                                      <Component
-                                                        className="star"
-                                                        icon="test-file-stub"
-                                                        key="4"
-                                                        size={15}
-                                                      >
-                                                        <div
-                                                          id="StyledIcon"
-                                                        />
-                                                      </Component>
-                                                    </div>
-                                                  </EfficientyRating>
-                                                </div>
+                                                      <div
+                                                        id="StyledIcon"
+                                                      />
+                                                    </Component>
+                                                    <Component
+                                                      className="star"
+                                                      icon="test-file-stub"
+                                                      key="3"
+                                                      size={15}
+                                                    >
+                                                      <div
+                                                        id="StyledIcon"
+                                                      />
+                                                    </Component>
+                                                    <Component
+                                                      className="star"
+                                                      icon="test-file-stub"
+                                                      key="4"
+                                                      size={15}
+                                                    >
+                                                      <div
+                                                        id="StyledIcon"
+                                                      />
+                                                    </Component>
+                                                  </div>
+                                                </EfficientyRating>
                                               </div>
                                             </div>
                                           </div>
-                                        </ForwardRef(CardContent)>
-                                      </WithStyles(ForwardRef(CardContent))>
-                                    </WithStyles(WithStyles(ForwardRef(CardContent)))>
-                                    <span
-                                      className="MuiCardActionArea-focusHighlight"
-                                    />
-                                    <WithStyles(memo)
+                                        </div>
+                                      </ForwardRef(CardContent)>
+                                    </WithStyles(ForwardRef(CardContent))>
+                                  </WithStyles(WithStyles(ForwardRef(CardContent)))>
+                                  <span
+                                    className="MuiCardActionArea-focusHighlight"
+                                  />
+                                  <WithStyles(memo)
+                                    center={false}
+                                  >
+                                    <ForwardRef(TouchRipple)
                                       center={false}
-                                    >
-                                      <ForwardRef(TouchRipple)
-                                        center={false}
-                                        classes={
-                                          Object {
-                                            "child": "MuiTouchRipple-child",
-                                            "childLeaving": "MuiTouchRipple-childLeaving",
-                                            "childPulsate": "MuiTouchRipple-childPulsate",
-                                            "ripple": "MuiTouchRipple-ripple",
-                                            "ripplePulsate": "MuiTouchRipple-ripplePulsate",
-                                            "rippleVisible": "MuiTouchRipple-rippleVisible",
-                                            "root": "MuiTouchRipple-root",
-                                          }
+                                      classes={
+                                        Object {
+                                          "child": "MuiTouchRipple-child",
+                                          "childLeaving": "MuiTouchRipple-childLeaving",
+                                          "childPulsate": "MuiTouchRipple-childPulsate",
+                                          "ripple": "MuiTouchRipple-ripple",
+                                          "ripplePulsate": "MuiTouchRipple-ripplePulsate",
+                                          "rippleVisible": "MuiTouchRipple-rippleVisible",
+                                          "root": "MuiTouchRipple-root",
                                         }
+                                      }
+                                    >
+                                      <span
+                                        className="MuiTouchRipple-root"
                                       >
-                                        <span
-                                          className="MuiTouchRipple-root"
-                                        >
-                                          <TransitionGroup
-                                            childFactory={[Function]}
-                                            component={null}
-                                            exit={true}
-                                          />
-                                        </span>
-                                      </ForwardRef(TouchRipple)>
-                                    </WithStyles(memo)>
-                                  </button>
-                                </ForwardRef(ButtonBase)>
-                              </WithStyles(ForwardRef(ButtonBase))>
-                            </ForwardRef(CardActionArea)>
-                          </WithStyles(ForwardRef(CardActionArea))>
-                        </WithStyles(WithStyles(ForwardRef(CardActionArea)))>
-                      </StyledEcogestureCard>
-                    </a>
-                  </LinkAnchor>
+                                        <TransitionGroup
+                                          childFactory={[Function]}
+                                          component={null}
+                                          exit={true}
+                                        />
+                                      </span>
+                                    </ForwardRef(TouchRipple)>
+                                  </WithStyles(memo)>
+                                </button>
+                              </ForwardRef(ButtonBase)>
+                            </WithStyles(ForwardRef(ButtonBase))>
+                          </ForwardRef(CardActionArea)>
+                        </WithStyles(ForwardRef(CardActionArea))>
+                      </WithStyles(WithStyles(ForwardRef(CardActionArea)))>
+                    </StyledEcogestureCard>
+                  </a>
                 </Link>
               </ForwardRef(Typography)>
             </WithStyles(ForwardRef(Typography))>
diff --git a/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap b/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap
index d8031cfefc297d58b2611c7629fb2223d84568c1..2e84f2bcb60fc29353a64a0c4180b180468c2935 100644
--- a/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap
+++ b/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap
@@ -15,21 +15,29 @@ exports[`EcogesturesList component should be rendered correctly 1`] = `
 >
   <BrowserRouter>
     <Router
-      history={
+      location={
+        Object {
+          "hash": "",
+          "key": "default",
+          "pathname": "/",
+          "search": "",
+          "state": null,
+        }
+      }
+      navigationType="POP"
+      navigator={
         Object {
           "action": "POP",
-          "block": [Function],
           "createHref": [Function],
+          "encodeLocation": [Function],
           "go": [Function],
-          "goBack": [Function],
-          "goForward": [Function],
-          "length": 1,
           "listen": [Function],
           "location": Object {
             "hash": "",
+            "key": "default",
             "pathname": "/",
             "search": "",
-            "state": undefined,
+            "state": null,
           },
           "push": [Function],
           "replace": [Function],
diff --git a/src/components/Ecogesture/__snapshots__/SingleEcogesture.spec.tsx.snap b/src/components/Ecogesture/__snapshots__/SingleEcogesture.spec.tsx.snap
index aa643f350403b2285e38d710bf3bf9a2b1989a72..075ec115c2b7adc4044e2bf05343e7ddc876cbdd 100644
--- a/src/components/Ecogesture/__snapshots__/SingleEcogesture.spec.tsx.snap
+++ b/src/components/Ecogesture/__snapshots__/SingleEcogesture.spec.tsx.snap
@@ -13,15 +13,7 @@ exports[`SingleEcogesture component should be rendered correctly 1`] = `
     }
   }
 >
-  <SingleEcogesture
-    match={
-      Object {
-        "params": Object {
-          "id": "ECOGESTURE0001",
-        },
-      }
-    }
-  >
+  <SingleEcogesture>
     <Component
       backFunction={[Function]}
       displayBackArrow={true}
@@ -85,17 +77,18 @@ exports[`SingleEcogesture component should be rendered correctly 1`] = `
             >
               Je baisse le chauffage en mode hors gel lorsque je m'absente plus de 2 jours.
             </div>
-            <div
-              className="description text-16-normal-150"
-            >
-              On se demande parfois si cela vaut le coup de "couper le chauffage" quand on s’absente… dès qu’il s’agit d’un week-end la réponse est « oui sûrement » ! Attention cependant au retour à ne pas faire de la surchauffe ! L’idéal est bien évidemment de régler sa programmation pour que le chauffage se relance quelques heures avant votre retour…
-            </div>
             <div
               className="toggle-text text-15-normal"
               onClick={[Function]}
+              role="button"
             >
               ecogesture_modal.show_more
             </div>
+            <div
+              className="description text-16-normal-150"
+            >
+              On se demande parfois si cela vaut le coup de "couper le chauffage" quand on s’absente… dès qu’il s’agit d’un week-end la réponse est « oui sûrement » ! Attention cependant au retour à ne pas faire de la surchauffe ! L’idéal est bien évidemment de régler sa programmation pour que le chauffage se relance quelques heures avant votre retour…
+            </div>
           </div>
           <div
             className="buttons-selection"
diff --git a/src/components/Ecogesture/singleEcogesture.scss b/src/components/Ecogesture/singleEcogesture.scss
index f6707548e35b190ed48e90f6b6d26527f36b6b9a..b786284ef7596ec96dd706da128f14e44cc863dc 100644
--- a/src/components/Ecogesture/singleEcogesture.scss
+++ b/src/components/Ecogesture/singleEcogesture.scss
@@ -1,15 +1,6 @@
 @import 'src/styles/base/color';
 @import 'src/styles/base/breakpoint';
 
-.se-loader-container {
-  min-height: inherit;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  @media all and(min-width: $width-tablet) {
-    min-height: 80vh;
-  }
-}
 .single-ecogesture {
   color: $grey-bright;
   display: flex;
diff --git a/src/components/EcogestureForm/EcogestureFormEquipment.spec.tsx b/src/components/EcogestureForm/EcogestureFormEquipment.spec.tsx
index c98ae70938cafcd87d014c33995974e2612d4290..714c6ee62f1f2d6aaf04dea7fcaaf757dab9ace4 100644
--- a/src/components/EcogestureForm/EcogestureFormEquipment.spec.tsx
+++ b/src/components/EcogestureForm/EcogestureFormEquipment.spec.tsx
@@ -1,16 +1,16 @@
-import React from 'react'
+import { Button } from '@material-ui/core'
 import { mount } from 'enzyme'
-import * as reactRedux from 'react-redux'
 import toJson from 'enzyme-to-json'
+import React from 'react'
+import * as reactRedux from 'react-redux'
 import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
 import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
 import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
-import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
-import EcogestureFormEquipment from './EcogestureFormEquipment'
 import { mockProfileEcogesture } from '../../../tests/__mocks__/profileEcogesture.mock'
-import { Button } from '@material-ui/core'
 import { mockInitialEcolyoState } from '../../../tests/__mocks__/store'
+import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
+import EcogestureFormEquipment from './EcogestureFormEquipment'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -28,7 +28,7 @@ const useSelectorSpy = jest.spyOn(reactRedux, 'useSelector')
 const mockHistoryPush = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
+  useNavigate: () => ({
     push: mockHistoryPush,
   }),
 }))
diff --git a/src/components/EcogestureForm/EcogestureFormEquipment.tsx b/src/components/EcogestureForm/EcogestureFormEquipment.tsx
index 4a53fc968dc8c6648572fdeaaa0ab3430a9ac219..654b26d1526c919dd139949d35b552c2eaba34d6 100644
--- a/src/components/EcogestureForm/EcogestureFormEquipment.tsx
+++ b/src/components/EcogestureForm/EcogestureFormEquipment.tsx
@@ -1,21 +1,21 @@
-import React, { useCallback, useState } from 'react'
+import FormNavigation from 'components/FormGlobal/FormNavigation'
 import 'components/ProfileType/profileTypeForm.scss'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import FormNavigation from 'components/FormGlobal/FormNavigation'
+import { EquipmentType } from 'enum/ecogesture.enum'
 import { EcogestureStepForm } from 'enum/ecogestureForm.enum'
+import { ProfileTypeStepForm } from 'enum/profileType.enum'
 import { ProfileEcogesture } from 'models/profileEcogesture.model'
-import { EquipmentType } from 'enum/ecogesture.enum'
-import EquipmentIcon from './EquipmentIcon'
-import './ecogestureFormEquipment.scss'
+import React, { useCallback, useState } from 'react'
+import { useDispatch, useSelector } from 'react-redux'
+import { useNavigate } from 'react-router-dom'
+import { AppStore } from 'store'
+import { updateProfile } from 'store/profile/profile.actions'
 import {
   newProfileEcogestureEntry,
   updateProfileEcogesture,
 } from 'store/profileEcogesture/profileEcogesture.actions'
-import { useDispatch, useSelector } from 'react-redux'
-import { updateProfile } from 'store/profile/profile.actions'
-import { useHistory } from 'react-router-dom'
-import { ProfileTypeStepForm } from 'enum/profileType.enum'
-import { AppStore } from 'store'
+import './ecogestureFormEquipment.scss'
+import EquipmentIcon from './EquipmentIcon'
 
 interface EcogestureFormEquipmentProps {
   profileEcogesture: ProfileEcogesture
@@ -32,7 +32,7 @@ const EcogestureFormEquipment: React.FC<EcogestureFormEquipmentProps> = ({
 }: EcogestureFormEquipmentProps) => {
   const { t } = useI18n()
   const dispatch = useDispatch()
-  const history = useHistory()
+  const navigate = useNavigate()
   const { isProfileEcogestureCompleted } = useSelector(
     (state: AppStore) => state.ecolyo.profile
   )
@@ -53,9 +53,9 @@ const EcogestureFormEquipment: React.FC<EcogestureFormEquipmentProps> = ({
     } else {
       dispatch(newProfileEcogestureEntry(profileEcogesture))
       dispatch(updateProfile({ isProfileEcogestureCompleted: true }))
-      history.push('/ecogesture-selection')
+      navigate('/ecogesture-selection')
     }
-  }, [profileEcogesture, setNextStep, answer, dispatch, history])
+  }, [profileEcogesture, setNextStep, answer, dispatch, navigate])
 
   const isChecked = useCallback(
     (value: string): boolean => {
diff --git a/src/components/EcogestureForm/EcogestureFormSingleChoice.spec.tsx b/src/components/EcogestureForm/EcogestureFormSingleChoice.spec.tsx
index f86f26f4ded285cbc6c24755055ace4a1eadd8e2..daddf3c16433cf763b89ff273ca058b7feaab98b 100644
--- a/src/components/EcogestureForm/EcogestureFormSingleChoice.spec.tsx
+++ b/src/components/EcogestureForm/EcogestureFormSingleChoice.spec.tsx
@@ -1,20 +1,20 @@
 /* eslint-disable react/display-name */
-import React from 'react'
 import { mount } from 'enzyme'
+import toJson from 'enzyme-to-json'
+import React from 'react'
 import { Provider } from 'react-redux'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
-import toJson from 'enzyme-to-json'
 
-import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
-import EcogestureFormSingleChoice from './EcogestureFormSingleChoice'
+import { Button } from '@material-ui/core'
 import {
   mockEcogestureAnswer,
   mockProfileEcogesture,
 } from '../../../tests/__mocks__/profileEcogesture.mock'
-import { Button } from '@material-ui/core'
+import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
+import EcogestureFormSingleChoice from './EcogestureFormSingleChoice'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -25,6 +25,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 jest.mock(
   'components/EcogestureForm/EcogestureLaunchFormModal',
diff --git a/src/components/EcogestureForm/EcogestureFormView.spec.tsx b/src/components/EcogestureForm/EcogestureFormView.spec.tsx
index 0a86e6bb37e37c13ddb29c0a45c33bf6c259d453..9e98552b954a5a99919aef179238e9c3e6e99cc1 100644
--- a/src/components/EcogestureForm/EcogestureFormView.spec.tsx
+++ b/src/components/EcogestureForm/EcogestureFormView.spec.tsx
@@ -1,17 +1,16 @@
 /* eslint-disable react/display-name */
-import React from 'react'
+import { Button } from '@material-ui/core'
 import { mount } from 'enzyme'
+import toJson from 'enzyme-to-json'
+import { Profile } from 'models'
+import React from 'react'
 import { Provider } from 'react-redux'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
-import toJson from 'enzyme-to-json'
-
 import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
 import EcogestureFormView from './EcogestureFormView'
-import { Profile } from 'models'
-import { Button } from '@material-ui/core'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -30,15 +29,17 @@ jest.mock(
   () => 'mock-ecogesturelaunchmodal'
 )
 jest.mock('components/Content/Content', () => 'mock-content')
-
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
   useLocation: () => {
     return {
       search: '',
     }
   },
 }))
+
 describe('EcogestureFormView component', () => {
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
   let store: any
@@ -101,7 +102,6 @@ describe('EcogestureFormView component', () => {
     await waitForComponentToPaint(wrapper)
     wrapper.find('input').first().simulate('change')
     await waitForComponentToPaint(wrapper)
-    console.log(wrapper.debug())
     wrapper.find(Button).at(1).simulate('click')
     await waitForComponentToPaint(wrapper)
     //then go back
diff --git a/src/components/EcogestureForm/EcogestureFormView.tsx b/src/components/EcogestureForm/EcogestureFormView.tsx
index d160707331f9c22eb085550666be60d71926c0a4..c052ddf9a020ed73d597c606b5967454d1040716 100644
--- a/src/components/EcogestureForm/EcogestureFormView.tsx
+++ b/src/components/EcogestureForm/EcogestureFormView.tsx
@@ -20,7 +20,6 @@ import { useSelector } from 'react-redux'
 import { useLocation } from 'react-router-dom'
 import ProfileEcogestureFormService from 'services/profileEcogestureForm.service'
 import { AppStore } from 'store'
-import './ecogestureFormView.scss'
 
 const EcogestureFormView: React.FC = () => {
   const [headerHeight, setHeaderHeight] = useState<number>(0)
@@ -90,9 +89,7 @@ const EcogestureFormView: React.FC = () => {
   if (isLoading) {
     return (
       <Content height={headerHeight}>
-        <div className="se-loader-container">
-          <Loader />
-        </div>
+        <Loader />
       </Content>
     )
   }
diff --git a/src/components/EcogestureForm/EquipmentIcon.spec.tsx b/src/components/EcogestureForm/EquipmentIcon.spec.tsx
index 701193a4d9f3d7b9c13cf22844b955380c97abbe..ffb0703be6559ae3837db6815ebaf6e9afdb933b 100644
--- a/src/components/EcogestureForm/EquipmentIcon.spec.tsx
+++ b/src/components/EcogestureForm/EquipmentIcon.spec.tsx
@@ -1,10 +1,10 @@
 /* eslint-disable react/display-name */
-import React from 'react'
+import { EquipmentType } from 'enum/ecogesture.enum'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
+import React from 'react'
 import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
 import EquipmentIcon from './EquipmentIcon'
-import { EquipmentType } from 'enum/ecogesture.enum'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -15,17 +15,17 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
   }
 })
 describe('EcogestureFormSingleChoice component', () => {
   it('should be rendered correctly', async () => {
-    mockImportIconbyId.mockReturnValue('')
+    mockImportIconById.mockReturnValue('')
     const wrapper = mount(
       <EquipmentIcon equipment={EquipmentType.BOILER} isChecked={false} />
     )
@@ -33,7 +33,7 @@ describe('EcogestureFormSingleChoice component', () => {
     expect(toJson(wrapper)).toMatchSnapshot()
   })
   it('should render checked icon', async () => {
-    mockImportIconbyId.mockReturnValue('')
+    mockImportIconById.mockReturnValue('')
     const wrapper = mount(
       <EquipmentIcon equipment={EquipmentType.BOILER} isChecked={true} />
     )
diff --git a/src/components/EcogestureForm/EquipmentIcon.tsx b/src/components/EcogestureForm/EquipmentIcon.tsx
index 6792b4cc9e9d3f1fe184312d460b20301647f568..64d3407a8749263f6b09deec1101a8ec990d0bfb 100644
--- a/src/components/EcogestureForm/EquipmentIcon.tsx
+++ b/src/components/EcogestureForm/EquipmentIcon.tsx
@@ -1,8 +1,8 @@
-import React, { useEffect, useState } from 'react'
 import 'components/ProfileType/profileTypeForm.scss'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { importIconbyId } from 'utils/utils'
 import Icon from 'cozy-ui/transpiled/react/Icon'
+import React, { useEffect, useState } from 'react'
+import { importIconById } from 'utils/utils'
 
 interface EquipmentIconProps {
   equipment: string
@@ -18,7 +18,7 @@ const EquipmentIcon: React.FC<EquipmentIconProps> = ({
   useEffect(() => {
     let subscribed = true
     async function getIcon() {
-      const svg = await importIconbyId(equipment, 'equipments')
+      const svg = await importIconById(equipment, 'equipments')
       if (subscribed && svg) {
         setIcon(svg)
       }
diff --git a/src/components/EcogestureForm/ecogestureFormView.scss b/src/components/EcogestureForm/ecogestureFormView.scss
deleted file mode 100644
index c63af75bea5ec2eba6291b8325a931889d3ebdad..0000000000000000000000000000000000000000
--- a/src/components/EcogestureForm/ecogestureFormView.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-@import 'src/styles/base/color';
-@import 'src/styles/base/breakpoint';
-
-.se-loader-container {
-  min-height: inherit;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  @media all and(min-width: $width-tablet) {
-    min-height: 80vh;
-  }
-}
diff --git a/src/components/EcogestureSelection/EcogestureSelection.spec.tsx b/src/components/EcogestureSelection/EcogestureSelection.spec.tsx
index b35f91684674ab60d459358760efc27a96c4365c..e11981ae1848632a70c52bbff62a4918520803d7 100644
--- a/src/components/EcogestureSelection/EcogestureSelection.spec.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelection.spec.tsx
@@ -1,16 +1,16 @@
 /* eslint-disable react/display-name */
-import React from 'react'
 import { mount } from 'enzyme'
+import toJson from 'enzyme-to-json'
+import React from 'react'
 import { Provider } from 'react-redux'
+import mockClient from '../../../tests/__mocks__/client'
+import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
-import EcogestureSelection from './EcogestureSelection'
-import toJson from 'enzyme-to-json'
-import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
 import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
-import mockClient from '../../../tests/__mocks__/client'
+import EcogestureSelection from './EcogestureSelection'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -36,7 +36,7 @@ jest.mock('react-router-dom', () => ({
       search: '',
     }
   },
-  useHistory: () => ({
+  useNavigate: () => ({
     push: mockHistoryGoBack,
   }),
 }))
diff --git a/src/components/EcogestureSelection/EcogestureSelection.tsx b/src/components/EcogestureSelection/EcogestureSelection.tsx
index e65190a65efbd2c2a614be892fb7e82adcaf4407..c9e3e71143f87fbb915ff6f3f874c42c266a233c 100644
--- a/src/components/EcogestureSelection/EcogestureSelection.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelection.tsx
@@ -12,7 +12,7 @@ import { Ecogesture } from 'models'
 import { ProfileEcogesture } from 'models/profileEcogesture.model'
 import React, { useCallback, useEffect, useMemo, useState } from 'react'
 import { useSelector } from 'react-redux'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import EcogestureService from 'services/ecogesture.service'
 import { AppStore } from 'store'
 import './ecogestureSelection.scss'
@@ -20,7 +20,7 @@ import './ecogestureSelection.scss'
 const EcogestureSelection: React.FC = () => {
   const { t } = useI18n()
   const client = useClient()
-  const history = useHistory()
+  const navigate = useNavigate()
   const [isLoading, setIsLoading] = useState(true)
   const [headerHeight, setHeaderHeight] = useState<number>(0)
   const [indexEcogesture, setIndexEcogesture] = useState<number>(0)
@@ -127,7 +127,7 @@ const EcogestureSelection: React.FC = () => {
       <CozyBar
         titleKey={'common.title_ecogestures_choice'}
         displayBackArrow={true}
-        backFunction={() => history.push('/ecogestures')}
+        backFunction={() => navigate('/ecogestures')}
       />
       <Header
         setHeaderHeight={defineHeaderHeight}
diff --git a/src/components/EcogestureSelection/EcogestureSelectionDetail.spec.tsx b/src/components/EcogestureSelection/EcogestureSelectionDetail.spec.tsx
index 5b8e36a2047a075b2e62837bf748dbf4791d1683..927ce93f4073267e9f2a9e3a6decc35fcda41282 100644
--- a/src/components/EcogestureSelection/EcogestureSelectionDetail.spec.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelectionDetail.spec.tsx
@@ -1,10 +1,10 @@
-import React from 'react'
+import { Button } from '@material-ui/core'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
-import { Button } from '@material-ui/core'
-import EcogestureSelectionDetail from './EcogestureSelectionDetail'
-import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
+import React from 'react'
 import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock'
+import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
+import EcogestureSelectionDetail from './EcogestureSelectionDetail'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -15,11 +15,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockImportIconbyId = jest.fn()
+const mockImportIconById = jest.fn()
 jest.mock('utils/utils', () => {
   return {
-    importIconbyId: jest.fn(() => {
-      return mockImportIconbyId
+    importIconById: jest.fn(() => {
+      return mockImportIconById
     }),
   }
 })
@@ -27,12 +27,12 @@ const mockValidate = jest.fn()
 
 describe('EcogestureSelectionDetail component', () => {
   beforeEach(() => {
-    mockImportIconbyId.mockClear()
+    mockImportIconById.mockClear()
     mockValidate.mockClear()
   })
 
   it('should be rendered correctly', async () => {
-    mockImportIconbyId.mockReturnValueOnce('testIcon')
+    mockImportIconById.mockReturnValueOnce('testIcon')
     const wrapper = mount(
       <EcogestureSelectionDetail
         ecogesture={ecogesturesData[0]}
@@ -45,7 +45,7 @@ describe('EcogestureSelectionDetail component', () => {
   })
 
   it('should call validate with objective to true', async () => {
-    mockImportIconbyId.mockReturnValueOnce('testIcon')
+    mockImportIconById.mockReturnValueOnce('testIcon')
     const wrapper = mount(
       <EcogestureSelectionDetail
         ecogesture={ecogesturesData[0]}
@@ -59,7 +59,7 @@ describe('EcogestureSelectionDetail component', () => {
   })
 
   it('should call validate with doing to true', async () => {
-    mockImportIconbyId.mockReturnValueOnce('testIcon')
+    mockImportIconById.mockReturnValueOnce('testIcon')
     const wrapper = mount(
       <EcogestureSelectionDetail
         ecogesture={ecogesturesData[0]}
@@ -73,7 +73,7 @@ describe('EcogestureSelectionDetail component', () => {
   })
 
   it('should call validate with objective and doing to false', async () => {
-    mockImportIconbyId.mockReturnValueOnce('testIcon')
+    mockImportIconById.mockReturnValueOnce('testIcon')
     const wrapper = mount(
       <EcogestureSelectionDetail
         ecogesture={ecogesturesData[0]}
diff --git a/src/components/EcogestureSelection/EcogestureSelectionDetail.tsx b/src/components/EcogestureSelection/EcogestureSelectionDetail.tsx
index 4ea75639e9caeb8c2c3a23fc3a2829491d939d29..9e6133e4d13f05c56341623c818664888a9d6f4b 100644
--- a/src/components/EcogestureSelection/EcogestureSelectionDetail.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelectionDetail.tsx
@@ -1,14 +1,14 @@
-import React, { useEffect, useState } from 'react'
-import './ecogestureSelectionDetail.scss'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import { Button } from '@material-ui/core'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { Ecogesture } from 'models'
-import objectiveIcon from 'assets/icons/ico/objective-enabled.svg'
 import doingIcon from 'assets/icons/ico/doing-enabled.svg'
+import objectiveIcon from 'assets/icons/ico/objective-enabled.svg'
 import skipIcon from 'assets/icons/ico/skip-enabled.svg'
 import defaultIcon from 'assets/icons/visu/ecogesture/default.svg'
-import { importIconbyId } from 'utils/utils'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { Ecogesture } from 'models'
+import React, { useEffect, useState } from 'react'
+import { importIconById } from 'utils/utils'
+import './ecogestureSelectionDetail.scss'
 
 interface EcogestureSelectionDetailProps {
   ecogesture: Ecogesture
@@ -27,7 +27,7 @@ const EcogestureSelectionDetail: React.FC<EcogestureSelectionDetailProps> = ({
   useEffect(() => {
     let subscribed = true
     async function getIcon() {
-      const _icon = await importIconbyId(ecogesture.id, 'ecogesture')
+      const _icon = await importIconById(ecogesture.id, 'ecogesture')
       if (subscribed) {
         if (_icon) {
           setEcogestureIcon(_icon)
diff --git a/src/components/EcogestureSelection/EcogestureSelectionEnd.spec.tsx b/src/components/EcogestureSelection/EcogestureSelectionEnd.spec.tsx
index 75cd2b7b020a6a578e5ca544c567e6601a57340f..ee657cb0b79f616573ee3c668d69bc0e518c9f30 100644
--- a/src/components/EcogestureSelection/EcogestureSelectionEnd.spec.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelectionEnd.spec.tsx
@@ -1,8 +1,8 @@
-import React from 'react'
+import { Button } from '@material-ui/core'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
+import React from 'react'
 import EcogestureSelectionEnd from './EcogestureSelectionEnd'
-import { Button } from '@material-ui/core'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -13,17 +13,15 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 describe('EcogestureSelectionEnd component', () => {
   beforeEach(() => {
-    mockHistoryPush.mockClear()
+    mockedNavigate.mockClear()
   })
 
   it('should be rendered correctly', () => {
@@ -34,6 +32,6 @@ describe('EcogestureSelectionEnd component', () => {
   it('should close modal and update profile', () => {
     const wrapper = mount(<EcogestureSelectionEnd />)
     wrapper.find(Button).simulate('click')
-    expect(mockHistoryPush).toHaveBeenCalledWith('/ecogestures?tab=0')
+    expect(mockedNavigate).toHaveBeenCalledWith('/ecogestures?tab=0')
   })
 })
diff --git a/src/components/EcogestureSelection/EcogestureSelectionEnd.tsx b/src/components/EcogestureSelection/EcogestureSelectionEnd.tsx
index 5bfd2f9b896f94ab42ed0cbbb9fa75342c8c00a8..3e35b4ef1a3fc0fdc55f475c6ab3c7498493a04d 100644
--- a/src/components/EcogestureSelection/EcogestureSelectionEnd.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelectionEnd.tsx
@@ -1,18 +1,18 @@
-import React, { useCallback } from 'react'
-import './ecogestureSelectionEnd.scss'
-import { useHistory } from 'react-router-dom'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import icon from 'assets/icons/visu/profileType/finish.svg'
 import { Button } from '@material-ui/core'
+import icon from 'assets/icons/visu/profileType/finish.svg'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import React, { useCallback } from 'react'
+import { useNavigate } from 'react-router-dom'
+import './ecogestureSelectionEnd.scss'
 
 const EcogestureSelectionEnd: React.FC = () => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
 
   const goToObjectives = useCallback(() => {
-    history.push('/ecogestures?tab=0')
-  }, [history])
+    navigate('/ecogestures?tab=0')
+  }, [navigate])
   return (
     <div className="eg-selection-end-container">
       <div className="content">
diff --git a/src/components/EcogestureSelection/EcogestureSelectionRestart.spec.tsx b/src/components/EcogestureSelection/EcogestureSelectionRestart.spec.tsx
index 3f1835b689348d93c3cb1b3fbf6fbcafe910c761..d13a55a6d16e68606c69c4c04f212953572651f6 100644
--- a/src/components/EcogestureSelection/EcogestureSelectionRestart.spec.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelectionRestart.spec.tsx
@@ -1,8 +1,8 @@
-import React from 'react'
+import { Button } from '@material-ui/core'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
+import React from 'react'
 import EcogestureSelectionRestart from './EcogestureSelectionRestart'
-import { Button } from '@material-ui/core'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -13,18 +13,16 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 const mockRestart = jest.fn()
 
 describe('EcogestureSelectionRestart component', () => {
   beforeEach(() => {
-    mockHistoryPush.mockClear()
+    mockedNavigate.mockClear()
     mockRestart.mockClear()
   })
 
@@ -40,7 +38,7 @@ describe('EcogestureSelectionRestart component', () => {
       <EcogestureSelectionRestart listLength={10} restart={mockRestart} />
     )
     wrapper.find(Button).at(0).simulate('click')
-    expect(mockHistoryPush).toHaveBeenCalledWith('/ecogestures?tab=0')
+    expect(mockedNavigate).toHaveBeenCalledWith('/ecogestures?tab=0')
   })
 
   it('should call the restart when user click on the button', () => {
diff --git a/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx b/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx
index d5178c08d8fd1cef700043178c4be516345ae81c..d871c0927aa898232373271d18b4d57915c39f57 100644
--- a/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx
@@ -1,10 +1,10 @@
-import React, { useCallback } from 'react'
-import './ecogestureSelectionRestart.scss'
-import { useHistory } from 'react-router-dom'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import icon from 'assets/icons/visu/ecogesture/ECOGESTURE0001.svg'
 import { Button } from '@material-ui/core'
+import icon from 'assets/icons/visu/ecogesture/ECOGESTURE0001.svg'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import React, { useCallback } from 'react'
+import { useNavigate } from 'react-router-dom'
+import './ecogestureSelectionRestart.scss'
 
 interface EcogestureSelectionRestartProps {
   listLength: number
@@ -16,11 +16,11 @@ const EcogestureSelectionRestart: React.FC<EcogestureSelectionRestartProps> = ({
   restart,
 }: EcogestureSelectionRestartProps) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
 
   const goToObjectives = useCallback(() => {
-    history.push('/ecogestures?tab=0')
-  }, [history])
+    navigate('/ecogestures?tab=0')
+  }, [navigate])
 
   return (
     <div className="eg-selection-restart-container">
diff --git a/src/components/Exploration/ExplorationError.spec.tsx b/src/components/Exploration/ExplorationError.spec.tsx
index 139e356c404bb284dc6ee9646010033bf287aa70..b3f676a96e81885b53b7797f1263507fa5416441 100644
--- a/src/components/Exploration/ExplorationError.spec.tsx
+++ b/src/components/Exploration/ExplorationError.spec.tsx
@@ -1,6 +1,6 @@
-import React from 'react'
-import { shallow } from 'enzyme'
 import ExplorationError from 'components/Exploration/ExplorationError'
+import { shallow } from 'enzyme'
+import React from 'react'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -12,6 +12,12 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
   }
 })
 
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
+
 describe('ExplorationError component', () => {
   it('should be rendered correctly', () => {
     const component = shallow(<ExplorationError />).getElement
diff --git a/src/components/Exploration/ExplorationError.tsx b/src/components/Exploration/ExplorationError.tsx
index 06b1a036d3a6bc819a99d2c56600ca1ef114d7a7..f1300a16c095cd28bfa0a77fe3132d96a4d4a5e5 100644
--- a/src/components/Exploration/ExplorationError.tsx
+++ b/src/components/Exploration/ExplorationError.tsx
@@ -1,16 +1,16 @@
-import React, { useCallback } from 'react'
+import Button from '@material-ui/core/Button'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useHistory } from 'react-router-dom'
+import React, { useCallback } from 'react'
+import { useNavigate } from 'react-router-dom'
 import './explorationError.scss'
-import Button from '@material-ui/core/Button'
 
 const ExplorationError: React.FC = () => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
 
   const goBack = useCallback(() => {
-    history.goBack()
-  }, [history])
+    navigate(-1)
+  }, [navigate])
 
   return (
     <div className="exploration-error-container">
diff --git a/src/components/Exploration/ExplorationFinished.spec.tsx b/src/components/Exploration/ExplorationFinished.spec.tsx
index 76557e2c0346a38cfd1fb4147e14b9cd7d10b104..177d4adfe14c926a9883245eebae458c9bad73fb 100644
--- a/src/components/Exploration/ExplorationFinished.spec.tsx
+++ b/src/components/Exploration/ExplorationFinished.spec.tsx
@@ -1,12 +1,12 @@
-import React from 'react'
+import Button from '@material-ui/core/Button'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import { mount } from 'enzyme'
+import React from 'react'
 import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import ExplorationFinished from './ExplorationFinished'
 import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
-import Button from '@material-ui/core/Button'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import ExplorationFinished from './ExplorationFinished'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -17,13 +17,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-
-const mockHistoryGoBack = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    goBack: mockHistoryGoBack,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 const mockStore = configureStore([])
diff --git a/src/components/Exploration/ExplorationFinished.tsx b/src/components/Exploration/ExplorationFinished.tsx
index 748b7af8f3e39b5bd3b65a696aea83cf8f7a6753..78256d909f14f1696770746f729bf3fec00be10b 100644
--- a/src/components/Exploration/ExplorationFinished.tsx
+++ b/src/components/Exploration/ExplorationFinished.tsx
@@ -1,20 +1,20 @@
-import React, { useCallback } from 'react'
-import './explorationFinished.scss'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import starResult from 'assets/icons/visu/quiz/starResult.svg'
 import Button from '@material-ui/core/Button'
+import starResult from 'assets/icons/visu/quiz/starResult.svg'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import { UserChallenge } from 'models'
-import { useHistory } from 'react-router-dom'
-import { UserExplorationState } from 'enum/userExploration.enum'
-import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
-import { updateUserChallengeList } from 'store/challenge/challenge.actions'
-import ChallengeService from 'services/challenge.service'
 import { Client, useClient } from 'cozy-client'
-import { useDispatch } from 'react-redux'
-import { toggleChallengeExplorationNotification } from 'store/global/global.actions'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { UsageEventType } from 'enum/usageEvent.enum'
+import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
+import { UserExplorationState } from 'enum/userExploration.enum'
+import { UserChallenge } from 'models'
+import React, { useCallback } from 'react'
+import { useDispatch } from 'react-redux'
+import { useNavigate } from 'react-router-dom'
+import ChallengeService from 'services/challenge.service'
 import UsageEventService from 'services/usageEvent.service'
+import { updateUserChallengeList } from 'store/challenge/challenge.actions'
+import { toggleChallengeExplorationNotification } from 'store/global/global.actions'
+import './explorationFinished.scss'
 
 interface ExplorationFinishedProps {
   userChallenge: UserChallenge
@@ -26,7 +26,7 @@ const ExplorationFinished: React.FC<ExplorationFinishedProps> = ({
   const client: Client = useClient()
   const { t } = useI18n()
   const dispatch = useDispatch()
-  const history = useHistory()
+  const navigate = useNavigate()
 
   const checkNotificationToEnd = useCallback(async () => {
     const challengeService = new ChallengeService(client)
@@ -48,8 +48,8 @@ const ExplorationFinished: React.FC<ExplorationFinishedProps> = ({
 
   const goBack = useCallback(async () => {
     await checkNotificationToEnd()
-    history.goBack()
-  }, [history, checkNotificationToEnd])
+    navigate(-1)
+  }, [navigate, checkNotificationToEnd])
 
   return (
     <div className="exploration-card">
diff --git a/src/components/Exploration/ExplorationOngoing.spec.tsx b/src/components/Exploration/ExplorationOngoing.spec.tsx
index 5a54053636e6bbeb64667845e781126b71c0c759..55852f19d0fcec63bea51f5d29f69286a1f33089 100644
--- a/src/components/Exploration/ExplorationOngoing.spec.tsx
+++ b/src/components/Exploration/ExplorationOngoing.spec.tsx
@@ -1,11 +1,11 @@
-import React from 'react'
+import ExplorationOngoing from 'components/Exploration/ExplorationOngoing'
 import { mount } from 'enzyme'
+import React from 'react'
 import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import ExplorationOngoing from 'components/Exploration/ExplorationOngoing'
+import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
 import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
-import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -31,7 +31,7 @@ jest.mock('services/challenge.service', () => {
 const mockHistoryPush = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
+  useNavigate: () => ({
     push: mockHistoryPush,
   }),
 }))
diff --git a/src/components/Exploration/ExplorationOngoing.tsx b/src/components/Exploration/ExplorationOngoing.tsx
index 6c8ab6bcc80a95c26d66c266f1547c6a40eb56d6..9bb2aaf233436c894484424a6f618f0b259e1f25 100644
--- a/src/components/Exploration/ExplorationOngoing.tsx
+++ b/src/components/Exploration/ExplorationOngoing.tsx
@@ -1,24 +1,24 @@
-import React, { useCallback } from 'react'
-import { useHistory } from 'react-router-dom'
-import './explorationOngoing.scss'
 import { Client, useClient } from 'cozy-client'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import React, { useCallback } from 'react'
 import { useDispatch } from 'react-redux'
+import './explorationOngoing.scss'
 
-import { UserChallenge } from 'models'
-import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
 import Button from '@material-ui/core/Button'
+import explorationIcon from 'assets/icons/visu/exploration/shield.svg'
 import StarsContainer from 'components/Challenge/StarsContainer'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import { UsageEventType } from 'enum/usageEvent.enum'
+import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
 import {
   UserExplorationState,
   UserExplorationType,
 } from 'enum/userExploration.enum'
+import { UserChallenge } from 'models'
+import { useNavigate } from 'react-router-dom'
 import ChallengeService from 'services/challenge.service'
-import { updateUserChallengeList } from 'store/challenge/challenge.actions'
-import explorationIcon from 'assets/icons/visu/exploration/shield.svg'
 import UsageEventService from 'services/usageEvent.service'
-import { UsageEventType } from 'enum/usageEvent.enum'
+import { updateUserChallengeList } from 'store/challenge/challenge.actions'
 
 interface ExplorationOngoingProps {
   userChallenge: UserChallenge
@@ -30,10 +30,10 @@ const ExplorationOngoing: React.FC<ExplorationOngoingProps> = ({
   const client: Client = useClient()
   const { t } = useI18n()
   const dispatch = useDispatch()
-  const history = useHistory()
+  const navigate = useNavigate()
   const goBack = useCallback(() => {
-    history.goBack()
-  }, [history])
+    navigate(-1)
+  }, [navigate])
   const startExploration = async () => {
     if (userChallenge.exploration.state !== UserExplorationState.ONGOING) {
       const challengeService = new ChallengeService(client)
@@ -43,7 +43,7 @@ const ExplorationOngoing: React.FC<ExplorationOngoingProps> = ({
       )
       dispatch(updateUserChallengeList(updatedChallenge))
     }
-    history.push('/challenges')
+    navigate('/challenges')
   }
 
   const validExploration = async () => {
@@ -59,7 +59,7 @@ const ExplorationOngoing: React.FC<ExplorationOngoingProps> = ({
       startDate: userChallenge.exploration.date,
     })
     dispatch(updateUserChallengeList(updatedChallenge))
-    history.push('/challenges')
+    navigate('/challenges')
   }
   const renderButton = () => {
     switch (userChallenge.exploration.type) {
diff --git a/src/components/FormGlobal/FormNavigation.spec.tsx b/src/components/FormGlobal/FormNavigation.spec.tsx
index a3357ea6784be7623a981443eef48f06e4ece0f2..0da82c679f399ff48f30a27fad09d5e3f2782199 100644
--- a/src/components/FormGlobal/FormNavigation.spec.tsx
+++ b/src/components/FormGlobal/FormNavigation.spec.tsx
@@ -1,13 +1,13 @@
+import Button from '@material-ui/core/Button'
+import { ProfileTypeStepForm } from 'enum/profileType.enum'
+import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
-import { mount } from 'enzyme'
-import Button from '@material-ui/core/Button'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
 import FormNavigation from './FormNavigation'
-import { ProfileTypeStepForm } from 'enum/profileType.enum'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -19,6 +19,12 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
   }
 })
 
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
+
 describe('FormNavigation component', () => {
   let store: any
   beforeEach(() => {
diff --git a/src/components/FormGlobal/FormNavigation.tsx b/src/components/FormGlobal/FormNavigation.tsx
index 8a8bbf29b561d5500cad58918bf3f5bdbbb58902..c720d5bb6e359f917011f99cb5f6829895c6e4c6 100644
--- a/src/components/FormGlobal/FormNavigation.tsx
+++ b/src/components/FormGlobal/FormNavigation.tsx
@@ -6,7 +6,7 @@ import { EcogestureStepForm } from 'enum/ecogestureForm.enum'
 import { ProfileTypeStepForm } from 'enum/profileType.enum'
 import { SgeStep } from 'enum/sgeStep.enum'
 import React, { useCallback } from 'react'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 
 interface FormNavigationProps {
   step: ProfileTypeStepForm | EcogestureStepForm | SgeStep
@@ -30,7 +30,7 @@ const FormNavigation: React.FC<FormNavigationProps> = ({
   isLoading,
 }: FormNavigationProps) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const handlePreviousClick = () => {
     handlePrevious()
   }
@@ -38,7 +38,7 @@ const FormNavigation: React.FC<FormNavigationProps> = ({
     handleNext()
     //handle go back to connect for SGE
     if (isLastConnectStep) {
-      history.push('/consumption/electricity')
+      navigate('/consumption/electricity')
     }
   }
 
diff --git a/src/components/GCU/GCULink.tsx b/src/components/GCU/GCULink.tsx
index d3bdd037f4985be8786cc229f8117744d67e7288..f1ce6a8c5e7bd1c07b79978819cd434ced64dcc5 100644
--- a/src/components/GCU/GCULink.tsx
+++ b/src/components/GCU/GCULink.tsx
@@ -1,10 +1,10 @@
-import React from 'react'
-import './gcuLink.scss'
 import Link from '@material-ui/core/Link'
-import { Link as RouterLink } from 'react-router-dom'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import LegalNoticeIcon from 'assets/icons/ico/legal-notice.svg'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import React from 'react'
+import { Link as RouterLink } from 'react-router-dom'
+import './gcuLink.scss'
 
 const GCULink: React.FC = () => {
   const { t } = useI18n()
@@ -14,7 +14,7 @@ const GCULink: React.FC = () => {
         <Link
           className="gcu-link-card-link"
           component={RouterLink}
-          to="options/gcu"
+          to="/options/gcu"
         >
           <div className="card optionCard">
             <div className="gcu-link-card">
diff --git a/src/components/GCU/__snapshots__/GCULink.spec.tsx.snap b/src/components/GCU/__snapshots__/GCULink.spec.tsx.snap
index da5e1b8ff218650aaa87b7e74b76df94ceeaf5cc..47e9dce26264017656de3f431ab010f626cfa9e7 100644
--- a/src/components/GCU/__snapshots__/GCULink.spec.tsx.snap
+++ b/src/components/GCU/__snapshots__/GCULink.spec.tsx.snap
@@ -18,17 +18,10 @@ exports[`LegalNoticeLink component should be rendered correctly 1`] = `
         Object {
           "$$typeof": Symbol(react.forward_ref),
           "displayName": "Link",
-          "propTypes": Object {
-            "innerRef": [Function],
-            "onClick": [Function],
-            "replace": [Function],
-            "target": [Function],
-            "to": [Function],
-          },
           "render": [Function],
         }
       }
-      to="options/legalnotice"
+      to="/options/legalnotice"
     >
       <div
         className="card optionCard"
diff --git a/src/components/Header/CozyBar.spec.tsx b/src/components/Header/CozyBar.spec.tsx
index 16c35eb6696054095afc56adc62c93e317a4289f..23cddd5774882eed6e2d9e2e784771efa578bd61 100644
--- a/src/components/Header/CozyBar.spec.tsx
+++ b/src/components/Header/CozyBar.spec.tsx
@@ -1,12 +1,12 @@
-import React from 'react'
+import CozyBar from 'components/Header/CozyBar'
+import { ScreenType } from 'enum/screen.enum'
 import { mount } from 'enzyme'
+import React from 'react'
 import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import CozyBar from 'components/Header/CozyBar'
 import * as ModalAction from 'store/modal/modal.actions'
 import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { modalStateData } from '../../../tests/__mocks__/modalStateData.mock'
-import { ScreenType } from 'enum/screen.enum'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -18,11 +18,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
   }
 })
 
-const mockGoBack = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
-  useHistory: () => ({
-    goBack: mockGoBack,
-  }),
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
 }))
 
 const mockStore = configureStore([])
@@ -56,7 +55,7 @@ describe('CozyBar component', () => {
     )
     expect(wrapper.find('BarLeft')).toHaveLength(1)
     wrapper.find('BarLeft').find('.cv-button').first().simulate('click')
-    expect(mockGoBack).toHaveBeenCalled()
+    expect(mockedNavigate).toHaveBeenCalled()
   })
 
   it('should call handleClickFeedbacks when feedback button is clicked', () => {
diff --git a/src/components/Header/CozyBar.tsx b/src/components/Header/CozyBar.tsx
index e551519bf541cb61d4a8ab7215f0e9fcb808d40a..eae7de645c172de07e75c811f23863fec8164906 100644
--- a/src/components/Header/CozyBar.tsx
+++ b/src/components/Header/CozyBar.tsx
@@ -5,7 +5,7 @@ import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { ScreenType } from 'enum/screen.enum'
 import React, { useCallback } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import { AppStore } from 'store'
 import { updateModalIsFeedbacksOpen } from 'store/modal/modal.actions'
 
@@ -22,7 +22,7 @@ const CozyBar = ({
   backFunction,
 }: CozyBarProps) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const dispatch = useDispatch()
   const { BarLeft, BarCenter, BarRight } = cozy.bar
   const { screenType } = useSelector((state: AppStore) => state.ecolyo.global)
@@ -31,9 +31,9 @@ const CozyBar = ({
     if (backFunction) {
       backFunction()
     } else {
-      history.goBack()
+      navigate(-1)
     }
-  }, [backFunction, history])
+  }, [backFunction, navigate])
 
   const handleClickFeedbacks = () => {
     dispatch(updateModalIsFeedbacksOpen(true))
diff --git a/src/components/Header/Header.spec.tsx b/src/components/Header/Header.spec.tsx
index 272c79896a49af0861773baa0e0244beecdb1fc5..7405f33ceda4add6941fc1d299ce317e66ce3470 100644
--- a/src/components/Header/Header.spec.tsx
+++ b/src/components/Header/Header.spec.tsx
@@ -18,11 +18,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
   }
 })
 
-const mockGoBack = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
-  useHistory: () => ({
-    goBack: mockGoBack,
-  }),
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
 }))
 
 const mocksetHeaderHeight = jest.fn()
@@ -87,7 +86,7 @@ describe('Header component', () => {
       .find('.header-back-button')
       .first()
       .simulate('click')
-    expect(mockGoBack).toHaveBeenCalled()
+    expect(mockedNavigate).toHaveBeenCalled()
   })
 
   it('should call handleClickFeedbacks when feedback button is clicked', () => {
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx
index 8ff67e6ba539b1bf758a40248aa3a6afe2b0b943..b412c34a44895a829600d56bd286f9f0eb60fefb 100644
--- a/src/components/Header/Header.tsx
+++ b/src/components/Header/Header.tsx
@@ -1,16 +1,17 @@
-import IconButton from '@material-ui/core/IconButton'
-import BackArrowIcon from 'assets/icons/ico/back-arrow.svg'
-import FeedbackIcon from 'assets/icons/ico/feedback.svg'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import Icon from 'cozy-ui/transpiled/react/Icon'
-import { ScreenType } from 'enum/screen.enum'
 import React, { useCallback, useEffect, useRef } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
-import { useHistory } from 'react-router-dom'
 import { AppStore } from 'store'
 import { updateModalIsFeedbacksOpen } from 'store/modal/modal.actions'
 import './header.scss'
 
+import IconButton from '@material-ui/core/IconButton'
+import BackArrowIcon from 'assets/icons/ico/back-arrow.svg'
+import FeedbackIcon from 'assets/icons/ico/feedback.svg'
+import Icon from 'cozy-ui/transpiled/react/Icon'
+import { ScreenType } from 'enum/screen.enum'
+import { useNavigate } from 'react-router-dom'
+
 interface HeaderProps {
   /** translation key used as t('key.value') */
   desktopTitleKey: string
@@ -29,7 +30,7 @@ const Header: React.FC<HeaderProps> = ({
   backFunction,
 }) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const header = useRef(null)
   const dispatch = useDispatch()
   const { screenType } = useSelector((state: AppStore) => state.ecolyo.global)
@@ -40,9 +41,9 @@ const Header: React.FC<HeaderProps> = ({
     if (backFunction) {
       backFunction()
     } else {
-      history.goBack()
+      navigate(-1)
     }
-  }, [backFunction, history])
+  }, [backFunction, navigate])
 
   const handleClickFeedbacks = () => {
     dispatch(updateModalIsFeedbacksOpen(true))
diff --git a/src/components/Home/ConsumptionView.spec.tsx b/src/components/Home/ConsumptionView.spec.tsx
index 70fd20ef2754ecc0ba5ad327de48470c77503f11..704f02b8e0dbcf6d44a505ba5d87320ecdf46ae9 100644
--- a/src/components/Home/ConsumptionView.spec.tsx
+++ b/src/components/Home/ConsumptionView.spec.tsx
@@ -34,6 +34,11 @@ jest.mock('services/profile.service', () => {
     }
   })
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 jest.mock('components/Header/CozyBar', () => 'mock-cozybar')
 jest.mock('components/Header/Header', () => 'mock-header')
diff --git a/src/components/Home/ConsumptionView.tsx b/src/components/Home/ConsumptionView.tsx
index 71426c536e45a82f4671113548cade25964f5a3c..f73f22f87cacaaa208002bcba1d626f20a35f46d 100644
--- a/src/components/Home/ConsumptionView.tsx
+++ b/src/components/Home/ConsumptionView.tsx
@@ -17,7 +17,7 @@ import { FluidType } from 'enum/fluid.enum'
 import { TimeStep } from 'enum/timeStep.enum'
 import React, { useCallback, useEffect, useState } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import ProfileService from 'services/profile.service'
 import { AppStore } from 'store'
 import { setCurrentTimeStep, setLoading } from 'store/chart/chart.actions'
@@ -40,7 +40,7 @@ interface ConsumptionViewProps {
 const ConsumptionView: React.FC<ConsumptionViewProps> = ({
   fluidType,
 }: ConsumptionViewProps) => {
-  const history = useHistory()
+  const navigate = useNavigate()
   const client = useClient()
   const dispatch = useDispatch()
   const isMulti = fluidType !== FluidType.MULTIFLUID
@@ -88,9 +88,9 @@ const ConsumptionView: React.FC<ConsumptionViewProps> = ({
       showReleaseNotes(false, releaseNotes.notes, releaseNotes.redirectLink)
     )
     if (releaseNotes.redirectLink) {
-      history.push(releaseNotes.redirectLink)
+      navigate(releaseNotes.redirectLink)
     }
-  }, [dispatch, history, releaseNotes.notes, releaseNotes.redirectLink])
+  }, [dispatch, navigate, releaseNotes.notes, releaseNotes.redirectLink])
 
   const getPartnerKey = (fluidType: FluidType): 'enedis' | 'egl' | 'grdf' => {
     switch (fluidType) {
diff --git a/src/components/Home/FluidButton.spec.tsx b/src/components/Home/FluidButton.spec.tsx
index d177061f4473f53fe48d5f293c16fff30fd2d280..e7cdc22c72e345c7a9989966f39c3751f11fbea1 100644
--- a/src/components/Home/FluidButton.spec.tsx
+++ b/src/components/Home/FluidButton.spec.tsx
@@ -1,5 +1,5 @@
-import React from 'react'
 import { mount } from 'enzyme'
+import React from 'react'
 import { Provider } from 'react-redux'
 import {
   createMockStore,
@@ -8,10 +8,10 @@ import {
 } from '../../../tests/__mocks__/store'
 
 import { FluidState, FluidType } from 'enum/fluid.enum'
-import FluidButton from './FluidButton'
-import UsageEventService from 'services/usageEvent.service'
-import configureStore from 'redux-mock-store'
 import { GlobalState } from 'models'
+import configureStore from 'redux-mock-store'
+import UsageEventService from 'services/usageEvent.service'
+import FluidButton from './FluidButton'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -22,6 +22,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 describe('FluidButton component', () => {
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/src/components/Home/FluidButton.tsx b/src/components/Home/FluidButton.tsx
index 73aee6c00d8ee731f892d15d43770d7a24991ed8..f4dfb311c37cfda5578adaad528d77996a1cd085 100644
--- a/src/components/Home/FluidButton.tsx
+++ b/src/components/Home/FluidButton.tsx
@@ -1,13 +1,14 @@
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import React, { useCallback, useEffect, useState } from 'react'
+
 import ErrorNotif from 'assets/icons/ico/notif_error.svg'
 import PartnerIssueNotif from 'assets/icons/ico/notif_maintenance.svg'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import { useClient } from 'cozy-client'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { FluidState, FluidType } from 'enum/fluid.enum'
 import { UsageEventType } from 'enum/usageEvent.enum'
-import React, { useCallback, useEffect, useState } from 'react'
 import { useSelector } from 'react-redux'
-import { useHistory } from 'react-router'
+import { useNavigate } from 'react-router-dom'
 import DateChartService from 'services/dateChart.service'
 import UsageEventService from 'services/usageEvent.service'
 import { AppStore } from 'store'
@@ -24,7 +25,7 @@ const FluidButton: React.FC<FluidButtonProps> = ({
   isActive,
 }: FluidButtonProps) => {
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const { fluidStatus } = useSelector((state: AppStore) => state.ecolyo.global)
   const client = useClient()
   const [showError, setShowError] = useState<boolean>(false)
@@ -63,12 +64,12 @@ const FluidButton: React.FC<FluidButtonProps> = ({
       type: UsageEventType.NAVIGATION_EVENT,
       target: FluidType[fluidType].toLowerCase(),
     })
-    history.push(
+    navigate(
       fluidType === FluidType.MULTIFLUID
         ? '/consumption'
         : `/consumption/${FluidType[fluidType].toLowerCase()}`
     )
-  }, [history, fluidType, client])
+  }, [navigate, fluidType, client])
 
   const isFluidMaintenance = () => fluidStatus[fluidType]?.maintenance
 
diff --git a/src/components/Home/FluidButtons.spec.tsx b/src/components/Home/FluidButtons.spec.tsx
index 06e18813a88d99421af90c577cd8e90cd669073c..9a1c8df02b2537b8437226367d502066258269d1 100644
--- a/src/components/Home/FluidButtons.spec.tsx
+++ b/src/components/Home/FluidButtons.spec.tsx
@@ -1,13 +1,13 @@
-import React from 'react'
 import { mount } from 'enzyme'
+import React from 'react'
 import { Provider } from 'react-redux'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
 
-import FluidButtons from './FluidButtons'
 import { FluidType } from 'enum/fluid.enum'
+import FluidButtons from './FluidButtons'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -18,6 +18,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 describe('FluidButtons component', () => {
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/src/components/Konnector/KonnectorModal.spec.tsx b/src/components/Konnector/KonnectorModal.spec.tsx
index 8610edb9ad736b070f86885526ed18f0604d220f..d10e41da64fe2e422ea9b3a767ea30f198d404bc 100644
--- a/src/components/Konnector/KonnectorModal.spec.tsx
+++ b/src/components/Konnector/KonnectorModal.spec.tsx
@@ -1,17 +1,17 @@
-import React from 'react'
 import { mount } from 'enzyme'
+import React from 'react'
 import { Provider } from 'react-redux'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
 
-import KonnectorModal from './KonnectorModal'
-import { FluidType } from 'enum/fluid.enum'
 import { Button } from '@material-ui/core'
-import toJson from 'enzyme-to-json'
+import { FluidType } from 'enum/fluid.enum'
 import { KonnectorError } from 'enum/konnectorError.enum'
+import toJson from 'enzyme-to-json'
 import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils'
+import KonnectorModal from './KonnectorModal'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -22,6 +22,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 describe('KonnectorModal component', () => {
   let store: any
diff --git a/src/components/Konnector/KonnectorModalFooter.spec.tsx b/src/components/Konnector/KonnectorModalFooter.spec.tsx
index 9a07e71b6390229c9bcd11ea9c131d8484bc2f59..19c858bc66503590f71b9b92cf77030b432d12f4 100644
--- a/src/components/Konnector/KonnectorModalFooter.spec.tsx
+++ b/src/components/Konnector/KonnectorModalFooter.spec.tsx
@@ -4,10 +4,8 @@ import { FluidType } from 'enum/fluid.enum'
 import { KonnectorError } from 'enum/konnectorError.enum'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
-import { GlobalState } from 'models/global.model'
 import React from 'react'
 import { Provider } from 'react-redux'
-import { MockStoreEnhanced } from 'redux-mock-store'
 import { accountsData } from '../../../tests/__mocks__/accountsData.mock'
 import {
   createMockStore,
@@ -25,12 +23,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 const mockClose = jest.fn()
 const mockDelete = jest.fn()
@@ -47,7 +43,7 @@ describe('KonnectorModalFooter component', () => {
     store = createMockStore(mockInitialEcolyoState)
     mockDelete.mockClear()
     mockClose.mockClear()
-    mockHistoryPush.mockClear()
+    mockedNavigate.mockClear()
   })
 
   it('should be rendered correctly', () => {
@@ -157,6 +153,7 @@ describe('KonnectorModalFooter component', () => {
     wrapper.find(Button).at(1).simulate('click')
     await waitForComponentToPaint(wrapper)
     expect(mockDelete).toHaveBeenCalled()
+    expect(mockedNavigate).toHaveBeenCalledTimes(1)
   })
   it('should reset sge account and go back to login', async () => {
     const wrapper = mount(
@@ -175,6 +172,7 @@ describe('KonnectorModalFooter component', () => {
     wrapper.find(Button).at(1).simulate('click')
     await waitForComponentToPaint(wrapper)
     expect(mockDelete).toHaveBeenCalled()
+    expect(mockedNavigate).toHaveBeenCalledTimes(1)
   })
   it('should not reset account if no account', () => {
     const wrapper = mount(
@@ -191,6 +189,7 @@ describe('KonnectorModalFooter component', () => {
       </Provider>
     )
     wrapper.find(Button).at(1).simulate('click')
+    expect(mockedNavigate).toHaveBeenCalledTimes(1)
     expect(mockDelete).toHaveBeenCalledTimes(0)
   })
 })
diff --git a/src/components/Konnector/KonnectorModalFooter.tsx b/src/components/Konnector/KonnectorModalFooter.tsx
index e476536b4972a3c12b910fccd23ed7f62bfb0421..584dd67a680539af203bf5b9fb600d97a620cbb0 100644
--- a/src/components/Konnector/KonnectorModalFooter.tsx
+++ b/src/components/Konnector/KonnectorModalFooter.tsx
@@ -9,7 +9,7 @@ import { FluidType } from 'enum/fluid.enum'
 import { KonnectorError } from 'enum/konnectorError.enum'
 import { Account } from 'models'
 import React, { useCallback } from 'react'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import AccountService from 'services/account.service'
 import './konnectorModal.scss'
 
@@ -34,20 +34,20 @@ const KonnectorModalFooter: React.FC<KonnectorModalFooterProps> = ({
 }: KonnectorModalFooterProps) => {
   const { t } = useI18n()
   const client = useClient()
-  const history = useHistory()
+  const navigate = useNavigate()
   const handleSGELoginRetry = useCallback(() => {
     handleCloseClick(state === SUCCESS_EVENT)
-    history.push('/sge-connect')
-  }, [handleCloseClick, history, state])
+    navigate('/sge-connect')
+  }, [handleCloseClick, navigate, state])
 
   const handleResetSGEAccount = useCallback(async () => {
     if (account) {
       const accountService = new AccountService(client)
       await accountService.deleteAccount(account)
       await handleAccountDeletion()
-      history.push('/sge-connect')
+      navigate('/sge-connect')
     }
-  }, [account, client, handleAccountDeletion, history])
+  }, [account, client, handleAccountDeletion, navigate])
 
   const errorButtons = () => {
     switch (error) {
diff --git a/src/components/Konnector/KonnectorViewerList.spec.tsx b/src/components/Konnector/KonnectorViewerList.spec.tsx
index 5e71995a85e25d93277ff8b44bc31b3425f51494..e623dfe4d4867327c2a796f06d72b94bb3d029ad 100644
--- a/src/components/Konnector/KonnectorViewerList.spec.tsx
+++ b/src/components/Konnector/KonnectorViewerList.spec.tsx
@@ -1,12 +1,12 @@
-import React from 'react'
 import { mount } from 'enzyme'
+import React from 'react'
+import * as reactRedux from 'react-redux'
 import { Provider } from 'react-redux'
 import {
   createMockStore,
   mockInitialEcolyoState,
   mockInitialGlobalState,
 } from '../../../tests/__mocks__/store'
-import * as reactRedux from 'react-redux'
 import KonnectorViewerList from './KonnectorViewerList'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
@@ -18,12 +18,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 describe('KonnectorViewerList component', () => {
@@ -52,6 +50,6 @@ describe('KonnectorViewerList component', () => {
       </Provider>
     )
     wrapper.find('.connection-card').first().simulate('click')
-    expect(mockHistoryPush).toHaveBeenCalled()
+    expect(mockedNavigate).toHaveBeenCalled()
   })
 })
diff --git a/src/components/Konnector/KonnectorViewerList.tsx b/src/components/Konnector/KonnectorViewerList.tsx
index b8504aa706cdcb90ccfa870411daf19639d298c1..74d0cbba4d8d93dd5536373bb354225b2a0f0f27 100644
--- a/src/components/Konnector/KonnectorViewerList.tsx
+++ b/src/components/Konnector/KonnectorViewerList.tsx
@@ -1,25 +1,24 @@
-import React, { useCallback } from 'react'
+import StyledCard from 'components/CommonKit/Card/StyledCard'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import Icon from 'cozy-ui/transpiled/react/Icon'
-
+import { FluidType } from 'enum/fluid.enum'
+import { FluidStatus } from 'models'
+import React, { useCallback } from 'react'
 import { useSelector } from 'react-redux'
+import { useNavigate } from 'react-router-dom'
 import { AppStore } from 'store'
-import './konnectorViewerList.scss'
-import { FluidStatus } from 'models'
-import StyledCard from 'components/CommonKit/Card/StyledCard'
-import { FluidType } from 'enum/fluid.enum'
 import { getAddPicto } from 'utils/picto'
-import { useHistory } from 'react-router-dom'
+import './konnectorViewerList.scss'
 
 const KonnectorViewerList: React.FC = () => {
   const { t } = useI18n()
   const { fluidStatus } = useSelector((state: AppStore) => state.ecolyo.global)
-  const history = useHistory()
+  const navigate = useNavigate()
   const goToFluid = useCallback(
     fluidType => {
-      history.push(`/consumption/${FluidType[fluidType].toLowerCase()}`)
+      navigate(`/consumption/${FluidType[fluidType].toLowerCase()}`)
     },
-    [history]
+    [navigate]
   )
   return (
     <div className="kv-root">
diff --git a/src/components/LegalNotice/LegalNoticeLink.tsx b/src/components/LegalNotice/LegalNoticeLink.tsx
index d787f0f87ab10fab63b2e1b38e30c566121578c4..90c48a35dac9dd9a668869b9e9ed6b7d735e699b 100644
--- a/src/components/LegalNotice/LegalNoticeLink.tsx
+++ b/src/components/LegalNotice/LegalNoticeLink.tsx
@@ -1,13 +1,13 @@
-import React, { useCallback } from 'react'
-import './legalNoticeLink.scss'
 import Link from '@material-ui/core/Link'
-import { Link as RouterLink } from 'react-router-dom'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import LegalNoticeIcon from 'assets/icons/ico/legal-notice.svg'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import { useClient } from 'cozy-client'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { UsageEventType } from 'enum/usageEvent.enum'
+import React, { useCallback } from 'react'
+import { Link as RouterLink } from 'react-router-dom'
 import UsageEventService from 'services/usageEvent.service'
+import './legalNoticeLink.scss'
 
 const LegalNoticeLink: React.FC = () => {
   const { t } = useI18n()
@@ -27,7 +27,7 @@ const LegalNoticeLink: React.FC = () => {
         <Link
           className="legal-notice-card-link"
           component={RouterLink}
-          to="options/legalnotice"
+          to="/options/legalnotice"
         >
           <div className="card optionCard" onClick={emitNavEvent}>
             <div className="legal-notice-card">
diff --git a/src/components/LegalNotice/__snapshots__/LegalNoticeLink.spec.tsx.snap b/src/components/LegalNotice/__snapshots__/LegalNoticeLink.spec.tsx.snap
index 7a39bbb71ebbb419d51b357898ae570d3e1624a9..3192ae8c74d7a39002c78a66261ebc5a0577af7f 100644
--- a/src/components/LegalNotice/__snapshots__/LegalNoticeLink.spec.tsx.snap
+++ b/src/components/LegalNotice/__snapshots__/LegalNoticeLink.spec.tsx.snap
@@ -13,17 +13,10 @@ exports[`GCULink component should be rendered correctly 1`] = `
         Object {
           "$$typeof": Symbol(react.forward_ref),
           "displayName": "Link",
-          "propTypes": Object {
-            "innerRef": [Function],
-            "onClick": [Function],
-            "replace": [Function],
-            "target": [Function],
-            "to": [Function],
-          },
           "render": [Function],
         }
       }
-      to="options/gcu"
+      to="/options/gcu"
     >
       <div
         className="card optionCard"
diff --git a/src/components/Navbar/Navbar.tsx b/src/components/Navbar/Navbar.tsx
index 75ed3cf5dbede0a9618099432c8ba4b1ba698acb..338d13f6ed7c2c728535c90154b7091fb3d972ac 100644
--- a/src/components/Navbar/Navbar.tsx
+++ b/src/components/Navbar/Navbar.tsx
@@ -16,7 +16,7 @@ import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { UsageEventType } from 'enum/usageEvent.enum'
 import React, { useCallback } from 'react'
 import { useSelector } from 'react-redux'
-import { NavLink } from 'react-router-dom'
+import { NavLink, useLocation } from 'react-router-dom'
 import UsageEventService from 'services/usageEvent.service'
 import { AppStore } from 'store'
 import './navBar.scss'
@@ -29,6 +29,7 @@ export const Navbar: React.FC = () => {
     challengeDuelNotification,
     analysisNotification,
   } = useSelector((state: AppStore) => state.ecolyo.global)
+  const { pathname } = useLocation()
 
   const client = useClient()
   const emitNavEvent = useCallback(
@@ -51,8 +52,9 @@ export const Navbar: React.FC = () => {
             <Link
               component={NavLink}
               to="/consumption"
-              className="c-nav-link"
-              activeClassName="is-active"
+              className={`c-nav-link ${
+                pathname.includes('/consumption') ? 'is-active' : ''
+              }`}
             >
               <StyledIcon className="c-nav-icon off" icon={ConsoIconOff} />
               <StyledIcon className="c-nav-icon on" icon={ConsoIconOn} />
@@ -63,8 +65,9 @@ export const Navbar: React.FC = () => {
             <Link
               component={NavLink}
               to="/challenges"
-              className="c-nav-link"
-              activeClassName="is-active"
+              className={`c-nav-link ${
+                pathname.includes('/challenges') ? 'is-active' : ''
+              }`}
             >
               {(challengeExplorationNotification ||
                 challengeActionNotification ||
@@ -81,8 +84,9 @@ export const Navbar: React.FC = () => {
             <Link
               component={NavLink}
               to="/ecogestures"
-              className="c-nav-link"
-              activeClassName="is-active"
+              className={`c-nav-link ${
+                pathname.includes('/ecogestures') ? 'is-active' : ''
+              }`}
             >
               <StyledIcon className="c-nav-icon off" icon={BulbIconOff} />
               <StyledIcon className="c-nav-icon on" icon={BulbIconOn} />
@@ -93,8 +97,9 @@ export const Navbar: React.FC = () => {
             <Link
               component={NavLink}
               to="/analysis"
-              className="c-nav-link"
-              activeClassName="is-active"
+              className={`c-nav-link ${
+                pathname === '/analysis' ? 'is-active' : ''
+              }`}
             >
               {analysisNotification && <div className="nb-notif">1</div>}
               <StyledIcon className="c-nav-icon off" icon={AnalysisIconOff} />
@@ -106,8 +111,9 @@ export const Navbar: React.FC = () => {
             <Link
               component={NavLink}
               to="/options"
-              className="c-nav-link"
-              activeClassName="is-active"
+              className={`c-nav-link ${
+                pathname.includes('/options') ? 'is-active' : ''
+              }`}
             >
               <StyledIcon className="c-nav-icon off" icon={ParameterIconOff} />
               <StyledIcon className="c-nav-icon on" icon={ParameterIconOn} />
diff --git a/src/components/Options/HelpLink/HelpLink.scss b/src/components/Options/HelpLink/HelpLink.scss
index 6b6d881a475564c4c46cb1b3c40d3cc066ca9588..dc6ae18729ad0eff8cc08c02014a03073245811f 100644
--- a/src/components/Options/HelpLink/HelpLink.scss
+++ b/src/components/Options/HelpLink/HelpLink.scss
@@ -26,6 +26,7 @@
 
 .help-card-link {
   color: $white;
+  cursor: pointer;
 }
 .help-card {
   display: flex;
diff --git a/src/components/Options/ProfileTypeOptions/ProfileTypeOptions.spec.tsx b/src/components/Options/ProfileTypeOptions/ProfileTypeOptions.spec.tsx
index 700aecb5d266af9e084287eff8fbd66175bc5049..99104e6589dd5a5e3abaa5159bb35f70431e71f7 100644
--- a/src/components/Options/ProfileTypeOptions/ProfileTypeOptions.spec.tsx
+++ b/src/components/Options/ProfileTypeOptions/ProfileTypeOptions.spec.tsx
@@ -25,12 +25,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 const mockStore = configureStore([])
diff --git a/src/components/Options/ProfileTypeOptions/ProfileTypeOptions.tsx b/src/components/Options/ProfileTypeOptions/ProfileTypeOptions.tsx
index 230e6f90eff29ae1d736bbcbb6262ff781b9a8a5..f9584017073f82571905afd387ab6ae102ff97bd 100644
--- a/src/components/Options/ProfileTypeOptions/ProfileTypeOptions.tsx
+++ b/src/components/Options/ProfileTypeOptions/ProfileTypeOptions.tsx
@@ -1,36 +1,36 @@
-import React, { useState, useCallback } from 'react'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { AppStore } from 'store'
-import { useSelector } from 'react-redux'
 import Button from '@material-ui/core/Button'
-import './profileTypeOptions.scss'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { FluidType } from 'enum/fluid.enum'
 import {
-  IndividualOrCollective,
   HousingType,
-  ThreeChoicesAnswer,
+  IndividualOrCollective,
   OutsideFacingWalls,
+  ThreeChoicesAnswer,
 } from 'enum/profileType.enum'
-import { FluidType } from 'enum/fluid.enum'
-import { useHistory } from 'react-router-dom'
+import React, { useCallback, useState } from 'react'
+import { useSelector } from 'react-redux'
+import { AppStore } from 'store'
+import './profileTypeOptions.scss'
 
 import {
   Accordion,
-  AccordionSummary,
   AccordionDetails,
+  AccordionSummary,
 } from '@material-ui/core'
-import Icon from 'cozy-ui/transpiled/react/Icon'
 import chevronDown from 'assets/icons/ico/chevron-down.svg'
+import profileIcon from 'assets/icons/ico/profile.svg'
 import StyledCard from 'components/CommonKit/Card/StyledCard'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import profileIcon from 'assets/icons/ico/profile.svg'
 import useExploration from 'components/Hooks/useExploration'
+import Icon from 'cozy-ui/transpiled/react/Icon'
 import { UserExplorationID } from 'enum/userExploration.enum'
+import { useNavigate } from 'react-router-dom'
 
 const ProfileTypeOptions: React.FC = () => {
   const profile = useSelector((state: AppStore) => state.ecolyo.profile)
   const profileType = useSelector((state: AppStore) => state.ecolyo.profileType)
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const [, setValidExploration] = useExploration()
   const [active, setActive] = useState<boolean>(false)
 
@@ -42,8 +42,8 @@ const ProfileTypeOptions: React.FC = () => {
   }
 
   const goToForm = useCallback(() => {
-    history.push('/profileType')
-  }, [history])
+    navigate('/profileType')
+  }, [navigate])
 
   return (
     <div className="profile-type-root">
diff --git a/src/components/Options/Unsubscribe/UnSubscribe.spec.tsx b/src/components/Options/Unsubscribe/UnSubscribe.spec.tsx
index 2bc1f64607d47c166ab5c83d0da0862dd7053acf..444b03735cc6f716b5248cdb305d1e70356dc744 100644
--- a/src/components/Options/Unsubscribe/UnSubscribe.spec.tsx
+++ b/src/components/Options/Unsubscribe/UnSubscribe.spec.tsx
@@ -1,14 +1,14 @@
-import React from 'react'
+import { Button } from '@material-ui/core'
 import { mount } from 'enzyme'
 import toJson from 'enzyme-to-json'
+import React from 'react'
 import { Provider } from 'react-redux'
+import * as profileActions from 'store/profile/profile.actions'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../../tests/__mocks__/store'
-import * as profileActions from 'store/profile/profile.actions'
 import UnSubscribe from './UnSubscribe'
-import { Button } from '@material-ui/core'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -32,6 +32,11 @@ jest.mock('services/profile.service', () => {
   })
 })
 const updateProfileSpy = jest.spyOn(profileActions, 'updateProfile')
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 describe('UnSubscribe component', () => {
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/src/components/Options/Unsubscribe/UnSubscribe.tsx b/src/components/Options/Unsubscribe/UnSubscribe.tsx
index 6253a5ccd5d72ad2e6b8285074eea164d6ca0d3d..19ab95cb71588e0725544d2a18e1db023455987f 100644
--- a/src/components/Options/Unsubscribe/UnSubscribe.tsx
+++ b/src/components/Options/Unsubscribe/UnSubscribe.tsx
@@ -7,7 +7,7 @@ import Header from 'components/Header/Header'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import React, { useState } from 'react'
 import { useDispatch } from 'react-redux'
-import { useHistory } from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
 import { updateProfile } from 'store/profile/profile.actions'
 import './unSubscribe.scss'
 
@@ -18,10 +18,10 @@ const UnSubscribe: React.FC = () => {
   }
   const { t } = useI18n()
   const dispatch = useDispatch()
-  const history = useHistory()
+  const navigate = useNavigate()
   const unSubscribe = async () => {
     dispatch(updateProfile({ sendAnalysisNotification: false }))
-    history.push('/consumption')
+    navigate('/consumption')
   }
 
   return (
diff --git a/src/components/ProfileType/ProfileTypeFinished.spec.tsx b/src/components/ProfileType/ProfileTypeFinished.spec.tsx
index 3f49551416a5157ce23a376a804ce02e7c0ab34b..f151263886e5c0b2ae6cb2c206faafd190932124 100644
--- a/src/components/ProfileType/ProfileTypeFinished.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFinished.spec.tsx
@@ -1,26 +1,22 @@
+import { Button } from '@material-ui/core'
+import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
-import { mount } from 'enzyme'
+import { mockProfileType } from '../../../tests/__mocks__/profileType.mock'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
 import ProfileTypeFinished from './ProfileTypeFinished'
-import { mockProfileType } from '../../../tests/__mocks__/profileType.mock'
-import { Button } from '@material-ui/core'
 
-const mockHistoryGoBack = jest.fn()
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
   useLocation: () => ({
     pathname: '/ecogesture-form',
   }),
-  useHistory: () => ({
-    goBack: mockHistoryGoBack,
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -58,6 +54,6 @@ describe('ProfileTypeFinished component', () => {
       </Provider>
     )
     wrapper.find(Button).first().simulate('click')
-    expect(mockHistoryPush).toHaveBeenCalledWith('/ecogesture-selection')
+    expect(mockedNavigate).toHaveBeenCalledWith('/ecogesture-selection')
   })
 })
diff --git a/src/components/ProfileType/ProfileTypeFinished.tsx b/src/components/ProfileType/ProfileTypeFinished.tsx
index 9149ff48d098c844b9281d651015a8e5f0aceddd..0615a27c44c6690a7b0da3ec729e8bcaeb9c49c7 100644
--- a/src/components/ProfileType/ProfileTypeFinished.tsx
+++ b/src/components/ProfileType/ProfileTypeFinished.tsx
@@ -13,7 +13,7 @@ import { TimePeriod } from 'models'
 import { ProfileType } from 'models/profileType.model'
 import React, { useEffect, useState } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
-import { useHistory, useLocation } from 'react-router-dom'
+import { useLocation, useNavigate } from 'react-router-dom'
 import ProfileTypeService from 'services/profileType.service'
 import ProfileTypeEntityService from 'services/profileTypeEntity.service'
 import UsageEventService from 'services/usageEvent.service'
@@ -31,16 +31,16 @@ const ProfileTypeFinished: React.FC<ProfileTypeFinishedProps> = ({
   const { t } = useI18n()
   const location = useLocation()
   const dispatch = useDispatch()
-  const history = useHistory()
+  const navigate = useNavigate()
   const client = useClient()
   const { currentChallenge } = useSelector(
     (state: AppStore) => state.ecolyo.challenge
   )
   const handleClick = () => {
     if (location?.pathname === '/ecogesture-form') {
-      history.push('/ecogesture-selection')
+      navigate('/ecogesture-selection')
     } else {
-      history.goBack()
+      navigate(-1)
     }
   }
 
diff --git a/src/components/ProfileType/ProfileTypeFormMultiChoice.spec.tsx b/src/components/ProfileType/ProfileTypeFormMultiChoice.spec.tsx
index 135d68c8434d11f88c039670283abf371c56d40b..fee5fae4054652398245d4e02d550dd615c5207b 100644
--- a/src/components/ProfileType/ProfileTypeFormMultiChoice.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFormMultiChoice.spec.tsx
@@ -1,15 +1,15 @@
+import { ProfileTypeStepForm } from 'enum/profileType.enum'
+import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
-import { mount } from 'enzyme'
-import {
-  createMockStore,
-  mockInitialEcolyoState,
-} from '../../../tests/__mocks__/store'
-import { ProfileTypeStepForm } from 'enum/profileType.enum'
 import {
   mockProfileType,
   mockProfileTypeAnswers,
 } from '../../../tests/__mocks__/profileType.mock'
+import {
+  createMockStore,
+  mockInitialEcolyoState,
+} from '../../../tests/__mocks__/store'
 import ProfileTypeFormMultiChoice from './ProfileTypeFormMultiChoice'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
@@ -22,6 +22,12 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
   }
 })
 
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
+
 describe('ProfileTypeFormMultiChoice component', () => {
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
   let store: any
diff --git a/src/components/ProfileType/ProfileTypeFormNumber.spec.tsx b/src/components/ProfileType/ProfileTypeFormNumber.spec.tsx
index 75c3679b9c50ffdc272c901ab8201aa178d0923b..4dd96a015ffc470b5d7505eedca889a597408594 100644
--- a/src/components/ProfileType/ProfileTypeFormNumber.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFormNumber.spec.tsx
@@ -1,15 +1,15 @@
+import { ProfileTypeStepForm } from 'enum/profileType.enum'
+import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
-import { mount } from 'enzyme'
-import {
-  createMockStore,
-  mockInitialEcolyoState,
-} from '../../../tests/__mocks__/store'
-import { ProfileTypeStepForm } from 'enum/profileType.enum'
 import {
   mockProfileType,
   mockProfileTypeAnswers,
 } from '../../../tests/__mocks__/profileType.mock'
+import {
+  createMockStore,
+  mockInitialEcolyoState,
+} from '../../../tests/__mocks__/store'
 import ProfileTypeFormNumber from './ProfileTypeFormNumber'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
@@ -21,6 +21,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 describe('ProfileTypeFormNumber component', () => {
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/src/components/ProfileType/ProfileTypeFormNumberSelection.spec.tsx b/src/components/ProfileType/ProfileTypeFormNumberSelection.spec.tsx
index 01aed1c2f334b61f1bdccf7c06a1ca81514928b3..ec9c8ed8485569a643ec56ffcf0f1680d5e622d2 100644
--- a/src/components/ProfileType/ProfileTypeFormNumberSelection.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFormNumberSelection.spec.tsx
@@ -1,15 +1,15 @@
+import { ProfileTypeStepForm } from 'enum/profileType.enum'
+import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
-import { mount } from 'enzyme'
-import {
-  createMockStore,
-  mockInitialEcolyoState,
-} from '../../../tests/__mocks__/store'
-import { ProfileTypeStepForm } from 'enum/profileType.enum'
 import {
   mockProfileType,
   mockProfileTypeAnswers,
 } from '../../../tests/__mocks__/profileType.mock'
+import {
+  createMockStore,
+  mockInitialEcolyoState,
+} from '../../../tests/__mocks__/store'
 import ProfileTypeFormNumberSelection from './ProfileTypeFormNumberSelection'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
@@ -21,6 +21,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 describe('ProfileTypeFormNumberSelection component', () => {
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/src/components/ProfileType/ProfileTypeFormSingleChoice.spec.tsx b/src/components/ProfileType/ProfileTypeFormSingleChoice.spec.tsx
index 4732a2f69895376ec239a90957c36eb950643f7d..97decd124a48b76dc4f16f5aeec1d663351079f5 100644
--- a/src/components/ProfileType/ProfileTypeFormSingleChoice.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFormSingleChoice.spec.tsx
@@ -1,16 +1,16 @@
+import { ProfileTypeStepForm } from 'enum/profileType.enum'
+import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
-import { mount } from 'enzyme'
+import {
+  mockProfileType,
+  mockProfileTypeAnswers,
+} from '../../../tests/__mocks__/profileType.mock'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
 import ProfileTypeFormSingleChoice from './ProfileTypeFormSingleChoice'
-import { ProfileTypeStepForm } from 'enum/profileType.enum'
-import {
-  mockProfileType,
-  mockProfileTypeAnswers,
-} from '../../../tests/__mocks__/profileType.mock'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -21,6 +21,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 describe('ProfileTypeFormSingleChoice component', () => {
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/src/components/ProfileType/ProfileTypeView.spec.tsx b/src/components/ProfileType/ProfileTypeView.spec.tsx
index 8c3385e1fa77235043a1e3834d89ff02ee0c2d4e..2018cfe89d14160993f64c8ba929b0cfaf42a835 100644
--- a/src/components/ProfileType/ProfileTypeView.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeView.spec.tsx
@@ -1,7 +1,7 @@
+import ProfileTypeView from 'components/ProfileType/ProfileTypeView'
+import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
-import { mount } from 'enzyme'
-import ProfileTypeView from 'components/ProfileType/ProfileTypeView'
 import {
   createMockStore,
   mockInitialEcolyoState,
@@ -16,6 +16,11 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 jest.mock('components/Header/CozyBar', () => 'mock-cozybar')
 jest.mock('components/Header/Header', () => 'mock-header')
diff --git a/src/components/Quiz/QuizCustomQuestionContent.spec.tsx b/src/components/Quiz/QuizCustomQuestionContent.spec.tsx
index 0960911e61d9e891e68b6ec0cd13485e195df7b4..92053cea0548bc900cec68e17df1d58195d906c1 100644
--- a/src/components/Quiz/QuizCustomQuestionContent.spec.tsx
+++ b/src/components/Quiz/QuizCustomQuestionContent.spec.tsx
@@ -24,7 +24,7 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
 const mockHistoryPush = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
+  useNavigate: () => ({
     push: mockHistoryPush,
   }),
 }))
diff --git a/src/components/Quiz/QuizFinish.spec.tsx b/src/components/Quiz/QuizFinish.spec.tsx
index f8e8fed5012c5b054c337e5be46ad1ea2b873254..fbce4cee647161db39c4fb253aafe314950fd948 100644
--- a/src/components/Quiz/QuizFinish.spec.tsx
+++ b/src/components/Quiz/QuizFinish.spec.tsx
@@ -1,14 +1,14 @@
-import React from 'react'
+import Button from '@material-ui/core/Button'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
 import { mount } from 'enzyme'
+import React from 'react'
+import { act } from 'react-dom/test-utils'
 import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import QuizFinish from './QuizFinish'
 import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
-import Button from '@material-ui/core/Button'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
-import { act } from 'react-dom/test-utils'
+import QuizFinish from './QuizFinish'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -29,12 +29,10 @@ jest.mock('services/challenge.service', () => {
   })
 })
 
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 const mockStore = configureStore([])
@@ -64,6 +62,6 @@ describe('QuizFinish', () => {
       wrapper.update()
     })
 
-    expect(mockHistoryPush).toHaveBeenCalledWith('/challenges')
+    expect(mockedNavigate).toHaveBeenCalledWith('/challenges')
   })
 })
diff --git a/src/components/Quiz/QuizFinish.tsx b/src/components/Quiz/QuizFinish.tsx
index 7306c22ead912f313ed0e9981c1cf66208412fd8..b6d49e253f2eef31bf43a8997c3d17dad7961b28 100644
--- a/src/components/Quiz/QuizFinish.tsx
+++ b/src/components/Quiz/QuizFinish.tsx
@@ -1,16 +1,16 @@
-import React, { useCallback, useMemo } from 'react'
-import './quizFinish.scss'
-import { Client, useClient } from 'cozy-client'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import starResult from 'assets/icons/visu/quiz/starResult.svg'
 import Button from '@material-ui/core/Button'
+import starResult from 'assets/icons/visu/quiz/starResult.svg'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import { useDispatch } from 'react-redux'
+import { Client, useClient } from 'cozy-client'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
+import { UserChallenge } from 'models'
+import React, { useCallback, useMemo } from 'react'
+import { useDispatch } from 'react-redux'
+import { useNavigate } from 'react-router-dom'
 import ChallengeService from 'services/challenge.service'
 import { updateUserChallengeList } from 'store/challenge/challenge.actions'
-import { UserChallenge } from 'models'
-import { useHistory } from 'react-router-dom'
+import './quizFinish.scss'
 
 interface QuizFinishProps {
   userChallenge: UserChallenge
@@ -21,7 +21,7 @@ const QuizFinish: React.FC<QuizFinishProps> = ({
 }: QuizFinishProps) => {
   const client: Client = useClient()
   const { t } = useI18n()
-  const history = useHistory()
+  const navigate = useNavigate()
   const dispatch = useDispatch()
   const challengeService: ChallengeService = useMemo(
     () => new ChallengeService(client),
@@ -45,7 +45,7 @@ const QuizFinish: React.FC<QuizFinishProps> = ({
         userChallenge.quiz
       )
     dispatch(updateUserChallengeList(userChallengeUpdated))
-    history.push('/challenges')
+    navigate('/challenges')
   }
   return (
     <div className="quiz-container">
diff --git a/src/components/Quiz/QuizQuestion.spec.tsx b/src/components/Quiz/QuizQuestion.spec.tsx
index c18c3e175b34403e9863d9df17632dc0677942e5..a83ed32a42ca2516f2e6ede18ae322e574ace844 100644
--- a/src/components/Quiz/QuizQuestion.spec.tsx
+++ b/src/components/Quiz/QuizQuestion.spec.tsx
@@ -1,15 +1,15 @@
 /* eslint-disable react/display-name */
-import React from 'react'
+import { UserQuestionState } from 'enum/userQuiz.enum'
 import { mount } from 'enzyme'
-import { Provider } from 'react-redux'
+import React from 'react'
 import * as reactRedux from 'react-redux'
+import { Provider } from 'react-redux'
 import {
   createMockStore,
   mockInitialEcolyoState,
 } from '../../../tests/__mocks__/store'
-import QuizQuestion from './QuizQuestion'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
-import { UserQuestionState } from 'enum/userQuiz.enum'
+import QuizQuestion from './QuizQuestion'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -24,7 +24,7 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
 const mockHistoryPush = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
+  useNavigate: () => ({
     push: mockHistoryPush,
   }),
 }))
diff --git a/src/components/Quiz/QuizQuestion.tsx b/src/components/Quiz/QuizQuestion.tsx
index 689dfb025c5d0e83a1de18b3d0f549bf30b00c7e..24009e287ce6b0cd4cccea6c3a4745b980f8930b 100644
--- a/src/components/Quiz/QuizQuestion.tsx
+++ b/src/components/Quiz/QuizQuestion.tsx
@@ -1,13 +1,13 @@
-import React, { useState, useEffect } from 'react'
-import './quizQuestion.scss'
-import QuizQuestionContent from 'components/Quiz/QuizQuestionContent'
 import QuizCustomQuestionContent from 'components/Quiz/QuizCustomQuestionContent'
+import QuizQuestionContent from 'components/Quiz/QuizQuestionContent'
+import { Client, useClient } from 'cozy-client'
 import { QuestionEntity, UserChallenge } from 'models'
-import { useHistory } from 'react-router-dom'
+import React, { useEffect, useState } from 'react'
 import { useSelector } from 'react-redux'
-import { AppStore } from 'store'
+import { useNavigate } from 'react-router-dom'
 import QuizService from 'services/quiz.service'
-import { Client, useClient } from 'cozy-client'
+import { AppStore } from 'store'
+import './quizQuestion.scss'
 
 interface QuizQuestion {
   userChallenge: UserChallenge
@@ -27,10 +27,10 @@ const QuizQuestion: React.FC<QuizQuestion> = ({
     useState<boolean>(false)
   const client: Client = useClient()
   const { fluidTypes } = useSelector((state: AppStore) => state.ecolyo.global)
-  const history = useHistory()
+  const navigate = useNavigate()
 
   const goBack = () => {
-    history.push('/challenges')
+    navigate('/challenges')
   }
 
   useEffect(() => {
diff --git a/src/components/Quiz/QuizQuestionContent.spec.tsx b/src/components/Quiz/QuizQuestionContent.spec.tsx
index ef3ebff54b6f3b1e75c67ade7af37ad68bc7b91a..326945c96e293db970a4a16e1dc1cc1780986656 100644
--- a/src/components/Quiz/QuizQuestionContent.spec.tsx
+++ b/src/components/Quiz/QuizQuestionContent.spec.tsx
@@ -1,11 +1,11 @@
-import React from 'react'
+import QuizQuestionContent from 'components/Quiz/QuizQuestionContent'
 import { mount } from 'enzyme'
+import React from 'react'
 import { Provider } from 'react-redux'
 import configureStore from 'redux-mock-store'
-import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
-import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
 import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
-import QuizQuestionContent from 'components/Quiz/QuizQuestionContent'
+import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock'
+import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
   return {
@@ -17,12 +17,10 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
   }
 })
 
-const mockHistoryPush = jest.fn()
+const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
-  useHistory: () => ({
-    push: mockHistoryPush,
-  }),
+  useNavigate: () => mockedNavigate,
 }))
 
 const mockUpdateUserQuiz = jest.fn()
@@ -58,7 +56,7 @@ describe('QuizQuestionContent component', () => {
         <QuizQuestionContent
           userChallenge={userChallengeData[0]}
           setIsCustomQuest={() => false}
-          goBack={mockHistoryPush('/challenges')}
+          goBack={mockedNavigate('/challenges')}
         />
       </Provider>
     )
@@ -79,12 +77,12 @@ describe('QuizQuestionContent component', () => {
         <QuizQuestionContent
           userChallenge={userChallengeData[0]}
           setIsCustomQuest={() => false}
-          goBack={mockHistoryPush('/challenges')}
+          goBack={mockedNavigate('/challenges')}
         />
       </Provider>
     )
 
     wrapper.find('.btn-back').first().simulate('click')
-    expect(mockHistoryPush).toHaveBeenCalledWith('/challenges')
+    expect(mockedNavigate).toHaveBeenCalledWith('/challenges')
   })
 })
diff --git a/src/components/Routes/Routes.tsx b/src/components/Routes/Routes.tsx
index 28abfb02836537154edfc4cae16917a580311987..fe430787e957e7098283a5c97bddf929df8f1f85 100644
--- a/src/components/Routes/Routes.tsx
+++ b/src/components/Routes/Routes.tsx
@@ -5,16 +5,16 @@ import DuelView from 'components/Duel/DuelView'
 import EcogestureFormView from 'components/EcogestureForm/EcogestureFormView'
 import EcogestureSelection from 'components/EcogestureSelection/EcogestureSelection'
 import ExplorationView from 'components/Exploration/ExplorationView'
+import Loader from 'components/Loader/Loader'
 import UnSubscribe from 'components/Options/Unsubscribe/UnSubscribe'
 import QuizView from 'components/Quiz/QuizView'
 import TermsView from 'components/Terms/TermsView'
 import { FluidType } from 'enum/fluid.enum'
 import { TermsStatus } from 'models'
 import React, { lazy, Suspense } from 'react'
-import { Redirect, Route, Switch } from 'react-router-dom'
+import { Navigate, Route, Routes } from 'react-router-dom'
 
 const ConsumptionView = lazy(() => import('components/Home/ConsumptionView'))
-
 const EcogestureView = lazy(
   () => import('components/Ecogesture/EcogestureView')
 )
@@ -34,56 +34,74 @@ const ProfileTypeView = lazy(
 interface RouteProps {
   termsStatus: TermsStatus
 }
-const Routes: React.FC<RouteProps> = ({ termsStatus }: RouteProps) => {
+const AppRoutes: React.FC<RouteProps> = ({ termsStatus }: RouteProps) => {
   return (
-    <Suspense fallback={<div></div>}>
-      <Switch>
-        {termsStatus.accepted && <Redirect from="/terms" to="/consumption" />}
-        <Route path="/terms" component={TermsView} />
+    <Suspense
+      fallback={
+        <div className="loaderContainer">
+          <Loader />
+        </div>
+      }
+    >
+      <Routes>
+        {termsStatus.accepted && (
+          <Route
+            path="/terms"
+            element={<Navigate replace to="/consumption" />}
+          />
+        )}
+        <Route path="/terms" element={<TermsView />} />
         {!termsStatus.accepted && (
           <>
-            <Redirect from="*" to="/terms" />
-            <Redirect from="/" to="/terms" />
+            <Route path="*" element={<Navigate replace to="/terms" />} />
+            <Route path="/" element={<Navigate replace to="/terms" />} />
           </>
         )}
-        <Route path={`/consumption/electricity`} exact>
-          <ConsumptionView fluidType={FluidType.ELECTRICITY} />
-        </Route>
-        <Route path={`/consumption/water`} exact>
-          <ConsumptionView fluidType={FluidType.WATER} />
-        </Route>
-        <Route path={`/consumption/gas`} exact>
-          <ConsumptionView fluidType={FluidType.GAS} />
-        </Route>
-        <Route path={`/consumption`} exact>
-          <ConsumptionView fluidType={FluidType.MULTIFLUID} />
-        </Route>
-
-        <Route path={`/sge-connect`} component={SgeConnectView} />
-        <Route path={`/challenges/duel`} component={DuelView} />
-        <Route path={`/challenges/quiz`} component={QuizView} />
-        <Route path={`/challenges/exploration`} component={ExplorationView} />
-        <Route path={`/challenges/action`} exact component={ActionView} />
-        <Route path={`/challenges/`} component={ChallengeView} exact />
-        <Route path="/ecogesture-form" component={EcogestureFormView} />
-        <Route path="/ecogesture-selection" component={EcogestureSelection} />
-        <Route path="/ecogesture/:id/:tab" component={SingleEcogesture} />
-        <Route path="/ecogesture/:id" component={SingleEcogesture} />
-        <Route path={`/ecogestures`} component={EcogestureView} />
-        <Route path={`/ecogestures`} component={EcogestureView} />
-        <Route path={`/options/legalnotice`} component={LegalNoticeView} />
-        <Route path={`/options/gcu`} component={GCUView} />
-        <Route path={'/options/:connectParam'} exact component={OptionsView} />
-        <Route path={'/options'} exact component={OptionsView} />
-        <Route path="/analysis" component={AnalysisView} />
-        <Route path="/profiletype" component={ProfileTypeView} />
-        <Route path="/unsubscribe" component={UnSubscribe} />
-
-        <Redirect from="/" to="/consumption" />
-        <Redirect from="*" to="/consumption" />
-      </Switch>
+        <Route
+          path="/consumption/electricity"
+          element={<ConsumptionView fluidType={FluidType.ELECTRICITY} />}
+        />
+        <Route
+          path="/consumption/water"
+          element={<ConsumptionView fluidType={FluidType.WATER} />}
+        />
+        <Route
+          path="/consumption/gas"
+          element={<ConsumptionView fluidType={FluidType.GAS} />}
+        />
+        <Route
+          path="/consumption"
+          element={<ConsumptionView fluidType={FluidType.MULTIFLUID} />}
+        />
+        <Route path="/sge-connect" element={<SgeConnectView />} />
+        <Route path="/challenges/duel" element={<DuelView />} />
+        <Route path="/challenges/quiz" element={<QuizView />} />
+        <Route path="/challenges/exploration" element={<ExplorationView />} />
+        <Route path="/challenges/action" element={<ActionView />} />
+        <Route path="/challenges/" element={<ChallengeView />} />
+        <Route path="/ecogesture-form" element={<EcogestureFormView />} />
+        <Route path="/ecogesture-selection" element={<EcogestureSelection />} />
+        <Route
+          path="/ecogesture/:ecogestureID/:tab"
+          element={<SingleEcogesture />}
+        />
+        <Route
+          path="/ecogesture/:ecogestureID"
+          element={<SingleEcogesture />}
+        />
+        <Route path="/ecogestures" element={<EcogestureView />} />
+        <Route path="/options/legalnotice" element={<LegalNoticeView />} />
+        <Route path="/options/gcu" element={<GCUView />} />
+        <Route path="/options/:connectParam" element={<OptionsView />} />
+        <Route path="/options" element={<OptionsView />} />
+        <Route path="/analysis" element={<AnalysisView />} />
+        <Route path="/profiletype" element={<ProfileTypeView />} />
+        <Route path="/unsubscribe" element={<UnSubscribe />} />
+        <Route path="/" element={<Navigate replace to="/consumption" />} />
+        <Route path="*" element={<Navigate replace to="/consumption" />} />
+      </Routes>
     </Suspense>
   )
 }
 
-export default Routes
+export default AppRoutes
diff --git a/src/components/Terms/TermsView.spec.tsx b/src/components/Terms/TermsView.spec.tsx
index 6aa03439582dc20c6d34956da879ef89383c68b5..ffcd1aaeb333c1640b0f19fad4b2b8fbfae86497 100644
--- a/src/components/Terms/TermsView.spec.tsx
+++ b/src/components/Terms/TermsView.spec.tsx
@@ -28,6 +28,11 @@ jest.mock('services/terms.service', () => {
     }
   })
 })
+const mockedNavigate = jest.fn()
+jest.mock('react-router-dom', () => ({
+  ...jest.requireActual('react-router-dom'),
+  useNavigate: () => mockedNavigate,
+}))
 
 const mockStore = configureStore([])
 const mockUseDispatch = jest.spyOn(reactRedux, 'useDispatch')
diff --git a/src/components/Terms/TermsView.tsx b/src/components/Terms/TermsView.tsx
index ad193b4bd3d4514bb6ff610426da5d60c48012a9..00e482ef6e5cd16e3681a5f88f446b2d3e8281aa 100644
--- a/src/components/Terms/TermsView.tsx
+++ b/src/components/Terms/TermsView.tsx
@@ -1,25 +1,25 @@
-import React, { useCallback, useState } from 'react'
+import { Button } from '@material-ui/core'
 import classNames from 'classnames'
+import { useClient } from 'cozy-client'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import React, { useCallback, useState } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
-import { Button } from '@material-ui/core'
+import { useNavigate } from 'react-router-dom'
 import TermsService from 'services/terms.service'
-import { useClient } from 'cozy-client'
-import DataShareConsentContent from './DataShareConsentContent'
-import './termsView.scss'
-import { useHistory } from 'react-router-dom'
-import { decoreText } from 'utils/decoreText'
+import { AppStore } from 'store'
 import { updateTermValidation } from 'store/global/global.actions'
+import { decoreText } from 'utils/decoreText'
 import CGUModal from './CGUModal'
+import DataShareConsentContent from './DataShareConsentContent'
 import LegalNoticeModal from './LegalNoticeModal'
-import { AppStore } from 'store'
 import MinorUpdateContent from './MinorUpdateContent'
+import './termsView.scss'
 
 const TermsView: React.FC = () => {
   const { t } = useI18n()
   const client = useClient()
   const dispatch = useDispatch()
-  const history = useHistory()
+  const navigate = useNavigate()
   const [GCUValidation, setGCUValidation] = useState<boolean>(false)
   const [dataConsentValidation, setDataConsentValidation] =
     useState<boolean>(false)
@@ -54,8 +54,8 @@ const TermsView: React.FC = () => {
         })
       )
     }
-    history.push('/consumption')
-  }, [dispatch, client, history])
+    navigate('/consumption')
+  }, [dispatch, client, navigate])
 
   return (
     <div className="terms-wrapper">
diff --git a/src/services/ecogesture.service.ts b/src/services/ecogesture.service.ts
index d3bc02cfc06627a571650c8c3944418ac4989b43..795bc79dd87300be156776bcd099691f258da525 100644
--- a/src/services/ecogesture.service.ts
+++ b/src/services/ecogesture.service.ts
@@ -1,5 +1,6 @@
 import * as Sentry from '@sentry/react'
 import { Client, Q, QueryDefinition, QueryResult } from 'cozy-client'
+import logger from 'cozy-logger'
 import { ECOGESTURE_DOCTYPE } from 'doctypes'
 import { Season, Usage } from 'enum/ecogesture.enum'
 import { FluidType } from 'enum/fluid.enum'
@@ -8,7 +9,6 @@ import { orderBy } from 'lodash'
 import { Ecogesture } from 'models'
 import { ProfileEcogesture } from 'models/profileEcogesture.model'
 import logApp from 'utils/logger'
-import logger from 'cozy-logger'
 
 const logStack = logger.namespace('ecogestureService')
 
@@ -49,10 +49,8 @@ export default class EcogestureService {
     return ecogestures
   }
   /**
-   *
    * @param {string} ids - ecogestures ids
    * @returns {Promise<Ecogesture[]>}
-   *
    */
   public async getEcogesturesByIds(ids: string[]): Promise<Ecogesture[]> {
     const query: QueryDefinition = Q(ECOGESTURE_DOCTYPE).getByIds(ids)
diff --git a/src/styles/index.scss b/src/styles/index.scss
index 8a59dff68acd362e56d2e14aed640426395ff42c..628ccfc6414f433765d7e26b114207dbc002c97c 100644
--- a/src/styles/index.scss
+++ b/src/styles/index.scss
@@ -66,3 +66,9 @@
 .accordion-icon {
   color: $white;
 }
+
+.loaderContainer {
+  height: 80vh;
+  justify-content: center;
+  display: flex;
+}
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index f26e1776661809f1d0811bcd5ed9d199ae1a0aa9..5539950b870e11d89bdc6ebffbf25f1fedf14241 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -1,10 +1,10 @@
+import { Season } from 'enum/ecogesture.enum'
 import get from 'lodash/get'
+import { DateTime, Interval } from 'luxon'
 import { FluidStatus, GetRelationshipsReturn, Relation } from 'models'
+import challengeData from '../db/challengeEntity.json'
 import { FluidState, FluidType } from '../enum/fluid.enum'
 import { KonnectorUpdate } from '../enum/konnectorUpdate.enum'
-import { DateTime, Interval } from 'luxon'
-import { Season } from 'enum/ecogesture.enum'
-import challengeData from '../db/challengeEntity.json'
 
 export function getFluidType(type: string) {
   switch (type.toUpperCase()) {
@@ -114,7 +114,7 @@ export function getRelationships<D>(
  * @param id
  * @param pathType
  */
-export const importIconbyId = async (id: string, pathType: string) => {
+export const importIconById = async (id: string, pathType: string) => {
   // Les svg doivent être au format id.svg
   let importedChallengeIcon
   try {
diff --git a/yarn.lock b/yarn.lock
index e07a972c0fe49eb6f104502af7cfe10885a873ba..644998649cb3dc2ad1de790b9ac75fef38429235 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1466,7 +1466,7 @@
   dependencies:
     regenerator-runtime "^0.12.0"
 
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
   version "7.18.6"
   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580"
   integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==
@@ -1480,6 +1480,13 @@
   dependencies:
     regenerator-runtime "^0.13.4"
 
+"@babel/runtime@^7.7.6":
+  version "7.20.7"
+  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd"
+  integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==
+  dependencies:
+    regenerator-runtime "^0.13.11"
+
 "@babel/template@^7.16.7", "@babel/template@^7.18.10":
   version "7.18.10"
   resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
@@ -2319,6 +2326,11 @@
     "@react-spring/core" "9.0.0-rc.3"
     "@react-spring/shared" "9.0.0-rc.3"
 
+"@remix-run/router@1.2.1":
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.2.1.tgz#812edd4104a15a493dda1ccac0b352270d7a188c"
+  integrity sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==
+
 "@sentry/browser@7.21.1":
   version "7.21.1"
   resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.21.1.tgz#bffa3ea19050c06400107d2297b9802f9719f98b"
@@ -2774,7 +2786,7 @@
   dependencies:
     "@types/node" "*"
 
-"@types/history@^4.7.11", "@types/history@^4.7.5":
+"@types/history@^4.7.11":
   version "4.7.11"
   resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64"
   integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==
@@ -2922,7 +2934,7 @@
     hoist-non-react-statics "^3.3.0"
     redux "^4.0.0"
 
-"@types/react-router-dom@^5.1.3":
+"@types/react-router-dom@^5.3.3":
   version "5.3.3"
   resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83"
   integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==
@@ -8930,17 +8942,12 @@ highlight.js@^10.7.1:
   resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531"
   integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
 
-history@^4.9.0:
-  version "4.10.1"
-  resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
-  integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==
+history@^5.3.0:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b"
+  integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==
   dependencies:
-    "@babel/runtime" "^7.1.2"
-    loose-envify "^1.2.0"
-    resolve-pathname "^3.0.0"
-    tiny-invariant "^1.0.2"
-    tiny-warning "^1.0.0"
-    value-equal "^1.0.1"
+    "@babel/runtime" "^7.7.6"
 
 hmac-drbg@^1.0.1:
   version "1.0.1"
@@ -9864,11 +9871,6 @@ is-wsl@^2.1.1, is-wsl@^2.2.0:
   dependencies:
     is-docker "^2.0.0"
 
-isarray@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
-  integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
-
 isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -11049,7 +11051,7 @@ long@^4.0.0:
   resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
   integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
 
-loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
   integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -11414,14 +11416,6 @@ min-indent@^1.0.0:
   resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
   integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
 
-mini-create-react-context@^0.4.0:
-  version "0.4.1"
-  resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e"
-  integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==
-  dependencies:
-    "@babel/runtime" "^7.12.1"
-    tiny-warning "^1.0.3"
-
 mini-css-extract-plugin@0.5.0:
   version "0.5.0"
   resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0"
@@ -12870,13 +12864,6 @@ path-to-regexp@0.1.7:
   resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
   integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
 
-path-to-regexp@^1.7.0:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
-  integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
-  dependencies:
-    isarray "0.0.1"
-
 path-type@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
@@ -13896,34 +13883,20 @@ react-remove-scroll@^2.4.0:
     use-callback-ref "^1.3.0"
     use-sidecar "^1.1.2"
 
-react-router-dom@5.3.3:
-  version "5.3.3"
-  resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.3.tgz#8779fc28e6691d07afcaf98406d3812fe6f11199"
-  integrity sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng==
+react-router-dom@^6.6.1:
+  version "6.6.1"
+  resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.6.1.tgz#1b96ec0b2cefa7319f1251383ea5b41295ee260d"
+  integrity sha512-u+8BKUtelStKbZD5UcY0NY90WOzktrkJJhyhNg7L0APn9t1qJNLowzrM9CHdpB6+rcPt6qQrlkIXsTvhuXP68g==
   dependencies:
-    "@babel/runtime" "^7.12.13"
-    history "^4.9.0"
-    loose-envify "^1.3.1"
-    prop-types "^15.6.2"
-    react-router "5.3.3"
-    tiny-invariant "^1.0.2"
-    tiny-warning "^1.0.0"
+    "@remix-run/router" "1.2.1"
+    react-router "6.6.1"
 
-react-router@5.3.3:
-  version "5.3.3"
-  resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.3.tgz#8e3841f4089e728cf82a429d92cdcaa5e4a3a288"
-  integrity sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w==
+react-router@6.6.1:
+  version "6.6.1"
+  resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.6.1.tgz#17de6cf285f2d1c9721a3afca999c984e5558854"
+  integrity sha512-YkvlYRusnI/IN0kDtosUCgxqHeulN5je+ew8W+iA1VvFhf86kA+JEI/X/8NqYcr11hCDDp906S+SGMpBheNeYQ==
   dependencies:
-    "@babel/runtime" "^7.12.13"
-    history "^4.9.0"
-    hoist-non-react-statics "^3.1.0"
-    loose-envify "^1.3.1"
-    mini-create-react-context "^0.4.0"
-    path-to-regexp "^1.7.0"
-    prop-types "^15.6.2"
-    react-is "^16.6.0"
-    tiny-invariant "^1.0.2"
-    tiny-warning "^1.0.0"
+    "@remix-run/router" "1.2.1"
 
 react-select@^4.3.0:
   version "4.3.1"
@@ -14261,6 +14234,11 @@ regenerator-runtime@^0.12.0:
   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
   integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
 
+regenerator-runtime@^0.13.11:
+  version "0.13.11"
+  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+  integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
 regenerator-runtime@^0.13.4:
   version "0.13.9"
   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
@@ -14490,11 +14468,6 @@ resolve-from@^5.0.0:
   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
   integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
 
-resolve-pathname@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
-  integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
-
 resolve-url@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
@@ -15973,12 +15946,7 @@ timers-browserify@^2.0.4:
   dependencies:
     setimmediate "^1.0.4"
 
-tiny-invariant@^1.0.2:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9"
-  integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==
-
-tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3:
+tiny-warning@^1.0.2:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
   integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
@@ -16627,11 +16595,6 @@ validate-npm-package-name@3.0.0:
   dependencies:
     builtins "^1.0.3"
 
-value-equal@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
-  integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
-
 vary@^1, vary@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"