diff --git a/client/src/App.js b/client/src/App.js
index c05265e..2505137 100644
--- a/client/src/App.js
+++ b/client/src/App.js
@@ -4,7 +4,7 @@
   License: AGPL-3
 */
 import { ThemeProvider } from '@mui/material/styles';
-import React, { useState, useEffect } from 'react'
+import { useState, useEffect } from 'react'
 import { Route, Routes, Navigate } from 'react-router-dom'
 import authManager from './AuthManager'
 
diff --git a/client/src/App.test.js b/client/src/App.test.js
index 4db7ebc..9a9be2e 100644
--- a/client/src/App.test.js
+++ b/client/src/App.test.js
@@ -1,4 +1,3 @@
-import React from 'react';
 import { render } from '@testing-library/react';
 import App from './App';
 
diff --git a/client/src/components/AccountPreferences.js b/client/src/components/AccountPreferences.js
index 0c62204..68509f2 100644
--- a/client/src/components/AccountPreferences.js
+++ b/client/src/components/AccountPreferences.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react'
+import { useState } from 'react'
 
 import { List, ListItem, ListItemIcon, ListItemSecondaryAction, ListItemText, ListSubheader, Switch, Typography, Grid, Paper, CardContent, Card, TableContainer, Table, TableHead, TableRow, TableCell, TableBody, Toolbar, IconButton, ListItemAvatar, Input, TextField } from '@mui/material'
 import { PhoneCallbackRounded, GroupRounded, DeleteRounded, AddCircle } from '@mui/icons-material'
diff --git a/client/src/components/ContactList.js b/client/src/components/ContactList.js
index ec04cef..f3f4efa 100644
--- a/client/src/components/ContactList.js
+++ b/client/src/components/ContactList.js
@@ -2,7 +2,7 @@
 import authManager from "../AuthManager";
 import ConversationAvatar from "./ConversationAvatar";
 import Modal from 'react-modal';
-import React, { useState, useEffect } from "react";
+import { useState, useEffect } from "react";
 import { Person } from "@mui/icons-material";
 import { useAppDispatch, useAppSelector } from "../../redux/hooks";
 import { ListItem, ListItemAvatar, ListItemText } from "@mui/material";
diff --git a/client/src/components/ConversationAvatar.js b/client/src/components/ConversationAvatar.js
index 9d19f25..ea9fcb0 100644
--- a/client/src/components/ConversationAvatar.js
+++ b/client/src/components/ConversationAvatar.js
@@ -1,4 +1,3 @@
-import React from 'react'
 import { Avatar } from '@mui/material'
 
 export default function ConversationAvatar({displayName,...props}) {
diff --git a/client/src/components/ConversationList.js b/client/src/components/ConversationList.js
index 28ecbd5..d81ebb2 100644
--- a/client/src/components/ConversationList.js
+++ b/client/src/components/ConversationList.js
@@ -1,5 +1,5 @@
 import List from '@mui/material/List'
-import React, { useEffect } from "react";
+import { useEffect } from "react";
 import ConversationListItem from './ConversationListItem'
 import ListSubheader from '@mui/material/ListSubheader';
 import Conversation from '../../../model/Conversation';
diff --git a/client/src/components/ConversationListItem.js b/client/src/components/ConversationListItem.js
index 36932bf..e0b8e49 100644
--- a/client/src/components/ConversationListItem.js
+++ b/client/src/components/ConversationListItem.js
@@ -1,12 +1,10 @@
-import React, { useEffect } from 'react';
 import Modal from 'react-modal';
 import authManager from '../AuthManager'
 import ConversationAvatar from './ConversationAvatar'
 import Conversation from '../../../model/Conversation'
-import React, { useState } from "react";
+import { useState } from "react";
 import { useNavigate, useParams } from "react-router-dom"
-import { ListItem, ListItemAvatar, ListItemText, Box, Typography } from '@mui/material'
-import { Button, Stack, Typography, Modal as ModalUM } from "@mui/material"
+import { ListItem, Stack, ListItemAvatar, ListItemText, Box, Typography } from '@mui/material'
 import { RemoveContactIcon, VideoCallIcon } from './svgIcons';
 import { AudioCallIcon, BlockContactIcon, ContactDetailsIcon, CrossIcon, MessageIcon } from './svgIcons';
 import { QRCodeCanvas} from 'qrcode.react';
diff --git a/client/src/components/ConversationView.js b/client/src/components/ConversationView.js
index ba9b932..9d12665 100644
--- a/client/src/components/ConversationView.js
+++ b/client/src/components/ConversationView.js
@@ -1,4 +1,4 @@
-import React, { useCallback, useContext, useEffect, useState } from 'react';
+import { useCallback, useContext, useEffect, useState } from 'react'
 import MessageList from './MessageList';
 import SendMessageForm from './SendMessageForm';
 import Conversation from '../../../model/Conversation';
diff --git a/client/src/components/ConversationsOverviewCard.js b/client/src/components/ConversationsOverviewCard.js
index 89f8576..04f74f5 100644
--- a/client/src/components/ConversationsOverviewCard.js
+++ b/client/src/components/ConversationsOverviewCard.js
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react';
+import { useEffect, useState } from 'react'
 import { Card, CardActionArea, CardContent, CircularProgress, Typography } from '@mui/material';
 import { useNavigate, useParams } from 'react-router';
 import authManager from '../AuthManager'
diff --git a/client/src/components/Header.js b/client/src/components/Header.js
index c2dc29e..0c3eda4 100644
--- a/client/src/components/Header.js
+++ b/client/src/components/Header.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react'
+import { useState } from 'react'
 import { Box, Button, Menu, MenuItem } from '@mui/material'
 import { useNavigate, useParams } from "react-router-dom"
 import authManager from '../AuthManager'
diff --git a/client/src/components/JamiIdCard.js b/client/src/components/JamiIdCard.js
index 32949d6..b999780a 100644
--- a/client/src/components/JamiIdCard.js
+++ b/client/src/components/JamiIdCard.js
@@ -1,4 +1,3 @@
-import React from 'react';
 import { Box, Card, CardContent, Typography } from '@mui/material';
 
 export default function JamiIdCard(props) {
diff --git a/client/src/components/ListItemLink.js b/client/src/components/ListItemLink.js
index a0ebc3b..c72a268 100644
--- a/client/src/components/ListItemLink.js
+++ b/client/src/components/ListItemLink.js
@@ -1,4 +1,4 @@
-import React, { useMemo, forwardRef } from 'react';
+import { useMemo, forwardRef } from 'react'
 import PropTypes from 'prop-types';
 import ListItem from '@mui/material/ListItem';
 import ListItemIcon from '@mui/material/ListItemIcon';
diff --git a/client/src/components/Message.js b/client/src/components/Message.js
index 44d423a..e22d863 100644
--- a/client/src/components/Message.js
+++ b/client/src/components/Message.js
@@ -2,7 +2,7 @@
 import dayjs from "dayjs"
 import isToday from "dayjs/plugin/isToday"
 import isYesterday from "dayjs/plugin/isYesterday"
-import React from "react"
+import { useMemo } from "react";
 import { useTranslation } from "react-i18next"
 import ConversationAvatar from "./ConversationAvatar"
 
@@ -219,7 +219,7 @@
 const MessageBubble = (props) => {
   const largeRadius = "20px"
   const smallRadius = "5px"
-  const radius = React.useMemo(() => {
+  const radius = useMemo(() => {
     if (props.position == "start") {
       return {
         borderStartStartRadius: props.isFirstOfGroup ? largeRadius : smallRadius,
diff --git a/client/src/components/MessageList.js b/client/src/components/MessageList.js
index 5ea46b5..a6084a7 100644
--- a/client/src/components/MessageList.js
+++ b/client/src/components/MessageList.js
@@ -1,5 +1,5 @@
 import dayjs from "dayjs"
-import React, { useMemo } from 'react'
+import { useMemo } from 'react'
 import dayOfYear from 'dayjs/plugin/dayOfYear'
 import isBetween from 'dayjs/plugin/isBetween'
 import { Stack } from "@mui/system"
diff --git a/client/src/components/NewContactForm.js b/client/src/components/NewContactForm.js
index a4c6f84..9482948 100644
--- a/client/src/components/NewContactForm.js
+++ b/client/src/components/NewContactForm.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react'
+import { useState } from 'react'
 import { InputBase, InputAdornment } from '@mui/material';
 import { SearchRounded } from '@mui/icons-material';
 
diff --git a/client/src/components/SendMessageForm.js b/client/src/components/SendMessageForm.js
index f1cb2d6..df520ff 100644
--- a/client/src/components/SendMessageForm.js
+++ b/client/src/components/SendMessageForm.js
@@ -1,10 +1,10 @@
-import React from 'react'
+import { useState, useCallback } from 'react'
 import { Divider, InputBase } from '@mui/material'
 import { RecordVideoMessageButton, RecordVoiceMessageButton, SelectEmojiButton, SendMessageButton, UploadFileButton } from './buttons';
 import { Stack } from '@mui/system';
 
 export default function SendMessageForm(props) {
-  const [currentMessage, setCurrentMessage] = React.useState("")
+  const [currentMessage, setCurrentMessage] = useState("")
 
   const handleSubmit = e => {
     e.preventDefault()
@@ -15,7 +15,7 @@
   }
   const handleInputChange = (event) => setCurrentMessage(event.target.value)
 
-  const onEmojiSelected = React.useCallback(
+  const onEmojiSelected = useCallback(
     (emoji) => setCurrentMessage((currentMessage) => currentMessage + emoji),
     [setCurrentMessage],
   )
diff --git a/client/src/components/UsernameChooser.js b/client/src/components/UsernameChooser.js
index 2df96c6..7703639 100644
--- a/client/src/components/UsernameChooser.js
+++ b/client/src/components/UsernameChooser.js
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react'
+import { useEffect, useState } from 'react'
 import usePromise from "react-fetch-hook/usePromise"
 import { InputAdornment, TextField } from '@mui/material'
 import { SearchRounded } from '@mui/icons-material'
diff --git a/client/src/components/buttons.js b/client/src/components/buttons.js
index e1b82a4..7ea9802 100644
--- a/client/src/components/buttons.js
+++ b/client/src/components/buttons.js
@@ -2,7 +2,7 @@
 import { Box, ClickAwayListener, IconButton, Popper } from "@mui/material";
 import { styled } from "@mui/material/styles";
 import EmojiPicker from "emoji-picker-react";
-import React from "react";
+import { useState, useCallback } from "react";
 import { Arrow2Icon, ArrowIcon, CameraIcon, CameraInBubbleIcon, CancelIcon, CrossedEyeIcon, CrossIcon, EmojiIcon, EyeIcon, FolderIcon, InfoIcon, MicroInBubbleIcon, PaperClipIcon, PenIcon } from "./svgIcons";
 
 const RoundButton = styled(
@@ -215,19 +215,19 @@
 }
 
 export const SelectEmojiButton = (props) => {
-    const [anchorEl, setAnchorEl] = React.useState(null)
+    const [anchorEl, setAnchorEl] = useState(null)
   
-    const handleOpenEmojiPicker = React.useCallback(
+    const handleOpenEmojiPicker = useCallback(
       e => setAnchorEl(anchorEl ? null : e.currentTarget),
       [anchorEl],
     )
   
-    const handleClose = React.useCallback(
+    const handleClose = useCallback(
       () => setAnchorEl(null),
       [setAnchorEl],
     )
   
-    const onEmojiClick = React.useCallback(
+    const onEmojiClick = useCallback(
       (e, emojiObject) => {
         props.onEmojiSelected(emojiObject.emoji)
         handleClose()
diff --git a/client/src/components/inputs.js b/client/src/components/inputs.js
index 52047d3..a0315d3 100644
--- a/client/src/components/inputs.js
+++ b/client/src/components/inputs.js
@@ -1,6 +1,6 @@
 import { Stack, TextField } from "@mui/material"
 import { styled } from "@mui/material/styles"
-import React from "react"
+import { useState, useCallback, useEffect } from "react";
 import { InfoButton, ToggleVisibilityButton } from "./buttons"
 import { CheckedIcon, RoundCrossIcon, LockIcon, PenIcon, PersonIcon } from "./svgIcons"
 
@@ -13,16 +13,16 @@
 const StyledLockIcon = styled(LockIcon)({height: iconsHeight, color: "#03B9E9"})
 
 export const UsernameInput = ({infoButtonProps, ...props}) => {
-    const [isSelected, setIsSelected] = React.useState(false);
-    const [input, setInput] = React.useState(props.defaultValue);
-    const [startAdornment, setStartAdornment] = React.useState()
+    const [isSelected, setIsSelected] = useState(false);
+    const [input, setInput] = useState(props.defaultValue);
+    const [startAdornment, setStartAdornment] = useState()
 
-    const onChange = React.useCallback((event) => {
+    const onChange = useCallback((event) => {
         setInput(event.target.value)
         props.onChange?.(event)
     }, [props.onChange])
 
-    React.useEffect(() => {
+    useEffect(() => {
         /* Handle startAdornment */
         let Icon = StyledPersonIconLight
         let visibility = "visible"
@@ -56,21 +56,21 @@
 }
 
 export const PasswordInput = ({infoButtonProps, ...props}) => {
-    const [showPassword, setShowPassword] = React.useState(false);
-    const [isSelected, setIsSelected] = React.useState(false);
-    const [input, setInput] = React.useState(props.defaultValue);
-    const [startAdornment, setStartAdornment] = React.useState()
+    const [showPassword, setShowPassword] = useState(false);
+    const [isSelected, setIsSelected] = useState(false);
+    const [input, setInput] = useState(props.defaultValue);
+    const [startAdornment, setStartAdornment] = useState()
 
     const toggleShowPassword = () => {
         setShowPassword((showPassword) => !showPassword);
     }
 
-    const onChange = React.useCallback((event) => {
+    const onChange = useCallback((event) => {
         setInput(event.target.value)
         props.onChange?.(event)
     }, [props.onChange])
 
-    React.useEffect(() => {
+    useEffect(() => {
         /* Handle startAdornment */
         let Icon = StyledLockIcon
         let visibility = "visible"
@@ -112,16 +112,16 @@
 }
 
 export const NickNameInput = (props) => {
-    const [isSelected, setIsSelected] = React.useState(false);
-    const [input, setInput] = React.useState(props.defaultValue);
-    const [startAdornmentVisibility, setStartAdornmentVisibility] = React.useState()
+    const [isSelected, setIsSelected] = useState(false);
+    const [input, setInput] = useState(props.defaultValue);
+    const [startAdornmentVisibility, setStartAdornmentVisibility] = useState()
 
-    const onChange = React.useCallback((event) => {
+    const onChange = useCallback((event) => {
         setInput(event.target.value)
         props.onChange?.(event)
     }, [props.onChange])
 
-    React.useEffect(() => {
+    useEffect(() => {
         setStartAdornmentVisibility((isSelected || input) ? "visible" : "hidden")
     }, [isSelected, input])
 
@@ -142,17 +142,17 @@
 }
 
 export const RegularInput = (props) => {
-    const [isSelected, setIsSelected] = React.useState(false);
-    const [input, setInput] = React.useState(props.defaultValue);
-    const [startAdornmentVisibility, setStartAdornmentVisibility] = React.useState()
-    const [endAdornmentVisibility, setEndAdornmentVisibility] = React.useState()
+    const [isSelected, setIsSelected] = useState(false);
+    const [input, setInput] = useState(props.defaultValue);
+    const [startAdornmentVisibility, setStartAdornmentVisibility] = useState()
+    const [endAdornmentVisibility, setEndAdornmentVisibility] = useState()
 
-    const onChange = React.useCallback((event) => {
+    const onChange = useCallback((event) => {
         setInput(event.target.value)
         props.onChange?.(event)
     }, [props.onChange])
 
-    React.useEffect(() => {
+    useEffect(() => {
         setStartAdornmentVisibility((isSelected || input) ? "visible" : "hidden")
         setEndAdornmentVisibility((isSelected || input) ? "hidden" : "visible")
     }, [isSelected, input])
diff --git a/client/src/components/loading.js b/client/src/components/loading.js
index dee6e88..a928a22 100644
--- a/client/src/components/loading.js
+++ b/client/src/components/loading.js
@@ -1,5 +1,4 @@
 import { CircularProgress, Container } from '@mui/material';
-import React from 'react';
 
 export default function LoadingPage() {
     return <Container style={{ textAlign: "center" }}>
diff --git a/client/src/components/welcome.js b/client/src/components/welcome.js
index 46c054c..24a217a 100644
--- a/client/src/components/welcome.js
+++ b/client/src/components/welcome.js
@@ -1,6 +1,6 @@
 import { Button, Container } from '@mui/material';
 import { AnimatePresence, motion } from 'framer-motion';
-import React, { useState } from 'react';
+import { useState } from 'react'
 import JamiLogo from '../../public/jami-logo-icon.svg'
 
 const list = {
diff --git a/client/src/contexts/socket.js b/client/src/contexts/socket.js
index bb59030..ad3b507 100644
--- a/client/src/contexts/socket.js
+++ b/client/src/contexts/socket.js
@@ -1,7 +1,7 @@
 
-import React from "react";
+import { createContext } from "react";
 
-export const SocketContext = React.createContext();
+export const SocketContext = createContext();
 export const SocketProvider = ({socket, children}) => (
     <SocketContext.Provider value={socket}>
         {children}
diff --git a/client/src/i18n.js b/client/src/i18n.js
index 85e043f..80d13a8 100644
--- a/client/src/i18n.js
+++ b/client/src/i18n.js
@@ -1,5 +1,5 @@
-import i18n from "i18next";
-import { initReactI18next } from "react-i18next";
+import i18n from "i18next"
+import { initReactI18next } from "react-i18next"
 import translationEn from "../public/locale/en/translation.json"
 import translationFr from "../public/locale/fr/translation.json"
 
@@ -19,6 +19,6 @@
       translation: translationFr,
     },
   },
-});
+})
 
-export default i18n;
+export default i18n
diff --git a/client/src/index.js b/client/src/index.js
index a8a1407..fb7917e 100644
--- a/client/src/index.js
+++ b/client/src/index.js
@@ -1,6 +1,6 @@
 'use strict'
 import './index.scss'
-import React from 'react'
+import { StrictMode } from 'react'
 import { createRoot } from 'react-dom/client';
 import App from './App.js'
 import { store } from "../redux/store";
@@ -29,7 +29,7 @@
 const root = createRoot(container);
 root.render(
   <Provider store={store}>
-    <React.StrictMode>
+    <StrictMode>
       <QueryClientProvider client={queryClient}>
         <SocketProvider socket={socket}>
           <Router>
@@ -37,7 +37,7 @@
           </Router>
         </SocketProvider>
       </QueryClientProvider>
-    </React.StrictMode>
+    </StrictMode>
   </Provider>
 );
 
diff --git a/client/src/pages/accountCreation.jsx b/client/src/pages/accountCreation.jsx
index 382ab1a..ae59d1b 100644
--- a/client/src/pages/accountCreation.jsx
+++ b/client/src/pages/accountCreation.jsx
@@ -1,4 +1,3 @@
-import React from 'react';
 import { Container, Card, CardContent, Typography, List, Avatar, Divider } from '@mui/material';
 import { DialerSipRounded, GroupOutlined, RoomRounded } from '@mui/icons-material';
 import ListItemLink from '../components/ListItemLink';
diff --git a/client/src/pages/accountSelection.jsx b/client/src/pages/accountSelection.jsx
index 81eed77..65728d8 100644
--- a/client/src/pages/accountSelection.jsx
+++ b/client/src/pages/accountSelection.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react';
+import { Fragment, useEffect, useState } from 'react'
 import { Avatar, Card, CardHeader, Container, List } from '@mui/material';
 import Header from '../components/Header'
 import authManager from '../AuthManager'
@@ -44,7 +44,7 @@
   if (!loaded)
     return <LoadingPage />
   return (
-    <React.Fragment>
+    <Fragment>
       <Header />
       <Container maxWidth="sm" style={{paddingBottom:32}}>
         <motion.div drag="x" initial="exit" animate="enter" exit="exit" variants={variants}>
@@ -64,8 +64,8 @@
         </Card>
         </motion.div>
       </Container>
-    </React.Fragment>
-  )
+    </Fragment>
+  );
 }
 
 export default AccountSelection
\ No newline at end of file
diff --git a/client/src/pages/accountSettings.jsx b/client/src/pages/accountSettings.jsx
index fa29a7d..9808efd 100644
--- a/client/src/pages/accountSettings.jsx
+++ b/client/src/pages/accountSettings.jsx
@@ -1,4 +1,4 @@
-import React, {useEffect, useState} from 'react';
+import { useEffect, useState } from 'react'
 import { useParams } from 'react-router';
 import { Container, CircularProgress } from '@mui/material';
 import Header from '../components/Header'
diff --git a/client/src/pages/addContactPage.jsx b/client/src/pages/addContactPage.jsx
index 96d7bdc..702b01d 100644
--- a/client/src/pages/addContactPage.jsx
+++ b/client/src/pages/addContactPage.jsx
@@ -1,4 +1,3 @@
-import React from 'react';
 import { useNavigate } from "react-router-dom";
 
 import { Box, Container, Fab, Card, CardContent, Typography } from '@mui/material';
diff --git a/client/src/pages/jamiAccountCreation.jsx b/client/src/pages/jamiAccountCreation.jsx
index acecd27..a551569 100644
--- a/client/src/pages/jamiAccountCreation.jsx
+++ b/client/src/pages/jamiAccountCreation.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import { useState } from 'react'
 import { Container, Card, CardContent, Typography, Fab, CardActions, Box } from '@mui/material';
 import { AddRounded } from '@mui/icons-material';
 import UsernameChooser from '../components/UsernameChooser';
diff --git a/client/src/pages/loginDialog.jsx b/client/src/pages/loginDialog.jsx
index eaa1362..ef647e8 100644
--- a/client/src/pages/loginDialog.jsx
+++ b/client/src/pages/loginDialog.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import { Component } from 'react'
 
 import Button from '@mui/material/Button';
 import TextField from '@mui/material/TextField';
@@ -25,7 +25,7 @@
     );
 }
 
-class SignInPage extends React.Component {
+class SignInPage extends Component {
 
     constructor(props) {
         console.log("SignInPage " + props.open)
diff --git a/client/src/pages/messenger.jsx b/client/src/pages/messenger.jsx
index ea64d9b..a256290 100644
--- a/client/src/pages/messenger.jsx
+++ b/client/src/pages/messenger.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react';
+import { useEffect, useState } from 'react'
 import Header from '../components/Header'
 import NewContactForm from '../components/NewContactForm'
 
diff --git a/client/src/pages/serverConfiguration.jsx b/client/src/pages/serverConfiguration.jsx
index df0ee49..5c80131 100644
--- a/client/src/pages/serverConfiguration.jsx
+++ b/client/src/pages/serverConfiguration.jsx
@@ -1,4 +1,3 @@
-import React from 'react'
 import Header from '../components/Header'
 import AccountPreferences from '../components/AccountPreferences'
 import Container from '@mui/material/Container'
diff --git a/client/src/pages/serverSetup.jsx b/client/src/pages/serverSetup.jsx
index e2722fd..eaefc51 100644
--- a/client/src/pages/serverSetup.jsx
+++ b/client/src/pages/serverSetup.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react'
+import { useState } from 'react'
 
 import { Box, Container, Fab, Card, CardContent, Typography, Input } from '@mui/material'
 import GroupAddRounded from '@mui/icons-material/GroupAddRounded'
