diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4d6afd1d03ad7665eb9800f0c97c8d431048aae2..bac138054d7127b2429ca91e028dbda6fadee8d3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,3 +1,4 @@
+image: node:12.16.3-buster-slim
 stages:
   - lint
   - test
@@ -5,14 +6,12 @@ stages:
   - deploy
 
 lint:
-  image: node:latest
   stage: lint
   script:
     - npm install
     - npm run lint
 
 test:
-  image: node:latest
   stage: test
   artifacts:
     expire_in: 1 hour
@@ -34,7 +33,6 @@ sonar_scanner_test:
     - sonar-scanner -Dsonar.projectKey=$SONARQUBE_PROJECT_KEY -Dsonar.host.url=$SONARQUBE_HOST_URL -Dsonar.login=$SONARQUBE_TOKEN -Dsonar.branch.name=$CI_COMMIT_REF_NAME
 
 staging:
-  image: node:latest
   stage: deploy
   variables:
     NETLIFY_AUTH_TOKEN: $STAGING_NETLIFY_AUTH_TOKEN
@@ -49,7 +47,6 @@ staging:
     - staging
 
 production:
-  image: node:latest
   stage: deploy
   variables:
     AWS_ACCESS_KEY_ID: $PRODUCTION_AWS_ACCESS_KEY_ID
diff --git a/src/component/TableComponent.jsx b/src/component/TableComponent.jsx
index 86f97461ba8675126e31b222bc0e02d52262fc1b..622255724069b30cff1197dac37570b4c9e655a7 100644
--- a/src/component/TableComponent.jsx
+++ b/src/component/TableComponent.jsx
@@ -23,7 +23,7 @@ import {
   LabelInput,
   RowInput,
 } from "./html/html";
-import { Search } from "@material-ui/icons";
+import SearchIcon from "@material-ui/icons/Search";
 import { Link } from "@reach/router";
 import ArrowDropDownCircleIcon from "@material-ui/icons/ArrowDropDownCircle";
 import TableHead from "@material-ui/core/TableHead";
@@ -109,7 +109,7 @@ const TableComponent = ({
                   placeholder="Search..."
                 />
                 <ButtonSearch className="border-0">
-                  <Search />
+                  <SearchIcon />
                 </ButtonSearch>
               </form>
               {filter !== null && filter !== undefined && (
diff --git a/src/page/donasi/DetailDonasi.jsx b/src/page/donasi/DetailDonasi.jsx
index 314f5864085416c16039f6883614f4ffe4a8c06b..479127da1aa825dbb41b64697c1a5ed8110bda6c 100644
--- a/src/page/donasi/DetailDonasi.jsx
+++ b/src/page/donasi/DetailDonasi.jsx
@@ -1,7 +1,9 @@
 import React, { useState } from "react";
 import useFetchSingleData from "../../utils/useFetchSingleData";
 import { css } from "@emotion/core";
-import { ArrowBack, Phone, Photo } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import PhoneIcon from "@material-ui/icons/Phone";
+import PhotoIcon from "@material-ui/icons/Photo";
 import { Link, navigate } from "@reach/router";
 import PersonIcon from "@material-ui/icons/Person";
 import Status from "../../component/Status";
@@ -65,7 +67,7 @@ const DetailDonasi = ({ idDonasi }) => {
         `}
         onClick={() => navigate(-1)}
       >
-        <ArrowBack fontSize="large" />
+        <ArrowBackIcon fontSize="large" />
       </button>
       <div
         css={css`
@@ -172,7 +174,7 @@ const DetailDonasi = ({ idDonasi }) => {
           align-items: baseline;
         `}
       >
-        <Phone />
+        <PhoneIcon />
         <div>{donation.user_phone_number}</div>
       </div>
       <div
@@ -234,7 +236,7 @@ const DetailDonasi = ({ idDonasi }) => {
                   variant="contained"
                   color="primary"
                   size="medium"
-                  startIcon={<Photo />}
+                  startIcon={<PhotoIcon />}
                   data-testid="button-see-proof"
                 >
                   Bukti
diff --git a/src/page/donasi/FormDonasi.jsx b/src/page/donasi/FormDonasi.jsx
index db84379b19adf3377d586cde59b85b24db56aeaf..7afaca3db996184a3cf6c4a3e4e572567998e34c 100644
--- a/src/page/donasi/FormDonasi.jsx
+++ b/src/page/donasi/FormDonasi.jsx
@@ -9,7 +9,7 @@ import {
 } from "../../component/html/html";
 import { css } from "@emotion/core";
 import Button from "@material-ui/core/Button";
-import { Save } from "@material-ui/icons";
+import SaveIcon from "@material-ui/icons/Save";
 
 const FormDonasi = ({ idDonasi, defaultStatus }) => {
   const url = `${process.env.REACT_APP_BASE_URL}/program-donations/${idDonasi}/`;
@@ -61,7 +61,7 @@ const FormDonasi = ({ idDonasi, defaultStatus }) => {
           type="submit"
           variant="contained"
           color="primary"
-          startIcon={<Save />}
+          startIcon={<SaveIcon />}
         >
           Simpan
         </Button>
diff --git a/src/page/kategori/DetailKategori.jsx b/src/page/kategori/DetailKategori.jsx
index 19edb2411b7ee663fdb24281f46ccfc4e1a7fef7..8c0d25345d61512b726034df7d91d77938e30403 100644
--- a/src/page/kategori/DetailKategori.jsx
+++ b/src/page/kategori/DetailKategori.jsx
@@ -5,7 +5,7 @@ import { ButtonDeleteStyled, ErrorDiv } from "../../component/html/html";
 import TableComponent from "../../component/TableComponent";
 import LinkYellow from "../../component/LinkYellow";
 import { navigate } from "@reach/router";
-import { ArrowBack } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
 import useDelete from "../../utils/useDelete";
 import {
   Dialog,
@@ -93,7 +93,7 @@ const DetailKategori = ({ idKategori }) => {
           `}
           onClick={() => navigate("/kategori")}
         >
-          <ArrowBack fontSize="large" />
+          <ArrowBackIcon fontSize="large" />
         </button>
         <div
           css={css`
diff --git a/src/page/kategori/EditKategori.jsx b/src/page/kategori/EditKategori.jsx
index bd5a22627bbfed9853adeafff1edd749df63dbc3..af3bbfcdd6452cd303e3113c81db404426ed0127 100644
--- a/src/page/kategori/EditKategori.jsx
+++ b/src/page/kategori/EditKategori.jsx
@@ -3,7 +3,8 @@ import useFetchSingleData from "../../utils/useFetchSingleData";
 import { css } from "@emotion/core";
 import { ErrorDiv } from "../../component/html/html";
 import FormKategori from "./FormKategori";
-import { ArrowBack, ErrorOutline } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import ErrorOutlineIcon from "@material-ui/icons/ErrorOutline";
 import { navigate } from "@reach/router";
 import useSendData from "../../utils/useSendData";
 
@@ -58,7 +59,7 @@ const EditKategori = ({ idKategori }) => {
           `}
           onClick={() => navigate(-1)}
         >
-          <ArrowBack fontSize="large" />
+          <ArrowBackIcon fontSize="large" />
         </button>
         <div
           css={css`
@@ -74,7 +75,7 @@ const EditKategori = ({ idKategori }) => {
           display: flex;
         `}
       >
-        <ErrorOutline style={{ fontSize: 28, color: "FFC80A" }} />
+        <ErrorOutlineIcon style={{ fontSize: 28, color: "FFC80A" }} />
         <div
           css={css`
             font-weight: 600;
diff --git a/src/page/pengguna/DetailPengguna.jsx b/src/page/pengguna/DetailPengguna.jsx
index 69445b4d17fcfe59daaa7977714f30fc6cc4cb7e..5b9678bdf1c93f48af48c2df19dba3a77ace7e32 100644
--- a/src/page/pengguna/DetailPengguna.jsx
+++ b/src/page/pengguna/DetailPengguna.jsx
@@ -1,6 +1,6 @@
 import React from "react";
 import { css } from "@emotion/core";
-import { ArrowBack } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
 import { navigate } from "@reach/router";
 import PersonIcon from "@material-ui/icons/Person";
 import PhoneIcon from "@material-ui/icons/Phone";
@@ -81,7 +81,7 @@ const DetailPengguna = ({ userId }) => {
             `}
             onClick={() => navigate(-1)}
           >
-            <ArrowBack fontSize="large" />
+            <ArrowBackIcon fontSize="large" />
           </button>
           <div
             css={css`
diff --git a/src/page/produk/DetailProduk.jsx b/src/page/produk/DetailProduk.jsx
index e732aed56195bfb2da9bd971f4c80cb0610ef8d0..d5df0f094b71c55bddf0b451dc12dc2ea82e4890 100644
--- a/src/page/produk/DetailProduk.jsx
+++ b/src/page/produk/DetailProduk.jsx
@@ -3,17 +3,15 @@ import { css } from "@emotion/core";
 import { ButtonDeleteStyled } from "../../component/html/html";
 import LinkYellow from "../../component/LinkYellow";
 import { ErrorDiv } from "../../component/html/html";
-import {
-  Search,
-  ArrowBack,
-  Grade,
-  Category,
-  AttachMoney,
-  LocalShipping,
-} from "@material-ui/icons";
 import { Link, navigate } from "@reach/router";
 import useFetchSingleData from "../../utils/useFetchSingleData";
 import useDelete from "../../utils/useDelete";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import SearchIcon from "@material-ui/icons/Search";
+import GradeIcon from "@material-ui/icons/Grade";
+import CategoryIcon from "@material-ui/icons/Category";
+import AttachMoneyIcon from "@material-ui/icons/AttachMoney";
+import LocalShippingIcon from "@material-ui/icons/LocalShipping";
 import {
   Dialog,
   DialogActions,
@@ -93,7 +91,7 @@ const DetailProduk = ({ productId }) => {
             `}
             onClick={() => navigate(-1)}
           >
-            <ArrowBack fontSize="large" />
+            <ArrowBackIcon fontSize="large" />
           </button>
           <div
             css={css`
@@ -131,7 +129,7 @@ const DetailProduk = ({ productId }) => {
                 display: inline-block;
               `}
             >
-              <Search style={{ color: "#FFC80A" }} />
+              <SearchIcon style={{ color: "#FFC80A" }} />
             </span>
             <span
               className="text"
@@ -173,7 +171,7 @@ const DetailProduk = ({ productId }) => {
                       display: inline-block;
                     `}
                   >
-                    <Grade style={{ color: "#FFC80A" }} />
+                    <GradeIcon style={{ color: "#FFC80A" }} />
                   </span>
                   <span
                     className="text"
@@ -196,7 +194,7 @@ const DetailProduk = ({ productId }) => {
                         display: inline-block;
                       `}
                     >
-                      <Category style={{ color: "#FFC80A" }} />
+                      <CategoryIcon style={{ color: "#FFC80A" }} />
                     </span>
                     <span
                       className="text"
@@ -220,7 +218,7 @@ const DetailProduk = ({ productId }) => {
                         display: inline-block;
                       `}
                     >
-                      <AttachMoney style={{ color: "#FFC80A" }} />
+                      <AttachMoneyIcon style={{ color: "#FFC80A" }} />
                     </span>
                     <span
                       className="text"
@@ -242,7 +240,7 @@ const DetailProduk = ({ productId }) => {
                         display: inline-block;
                       `}
                     >
-                      <LocalShipping style={{ color: "#FFC80A" }} />
+                      <LocalShippingIcon style={{ color: "#FFC80A" }} />
                     </span>
                     <span
                       className="text"
diff --git a/src/page/produk/EditProduk.jsx b/src/page/produk/EditProduk.jsx
index 365c310a30735ff51ac626d3663168eb5de3f646..fe82f2db760449719c5e64f286a0f89886e2876b 100644
--- a/src/page/produk/EditProduk.jsx
+++ b/src/page/produk/EditProduk.jsx
@@ -2,10 +2,11 @@ import React from "react";
 import { css } from "@emotion/core";
 import { ErrorDiv } from "../../component/html/html";
 import FormProduk from "./FormProduk";
-import { navigate } from "@reach/router";
-import { ArrowBack, ErrorOutline } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import ErrorOutlineIcon from "@material-ui/icons/ErrorOutline";
 import useFetchSingleData from "../../utils/useFetchSingleData";
 import useSendData from "../../utils/useSendData";
+import { navigate } from "@reach/router";
 
 const EditProduk = ({ productId }) => {
   const url = `${process.env.REACT_APP_BASE_URL}/products/${productId}/`;
@@ -56,7 +57,7 @@ const EditProduk = ({ productId }) => {
           `}
           onClick={() => navigate(-1)}
         >
-          <ArrowBack fontSize="large" />
+          <ArrowBackIcon fontSize="large" />
         </button>
         <div
           css={css`
@@ -72,7 +73,7 @@ const EditProduk = ({ productId }) => {
           display: flex;
         `}
       >
-        <ErrorOutline style={{ fontSize: 28, color: "FFC80A" }} />
+        <ErrorOutlineIcon style={{ fontSize: 28, color: "FFC80A" }} />
         <div
           css={css`
             font-weight: 600;
diff --git a/src/page/program/DetailProgram.jsx b/src/page/program/DetailProgram.jsx
index 6793d671082261e56a48c74e60ff3f3ba304a0d2..7d66d2eed373d25a267ffe733dc45c6ee9be559e 100644
--- a/src/page/program/DetailProgram.jsx
+++ b/src/page/program/DetailProgram.jsx
@@ -1,7 +1,7 @@
 import React, { useState } from "react";
 import { css } from "@emotion/core";
 import { ButtonDeleteStyled, ErrorDiv } from "../../component/html/html";
-import { ArrowBack } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
 import { Link } from "@reach/router";
 import PersonIcon from "@material-ui/icons/Person";
 import LocationOnIcon from "@material-ui/icons/LocationOn";
@@ -80,7 +80,7 @@ const DetailProgram = ({ idProgram }) => {
           `}
         >
           <Link to="/program" style={{ color: "#000000" }}>
-            <ArrowBack fontSize="large" />
+            <ArrowBackIcon fontSize="large" />
           </Link>
           <div
             css={css`
diff --git a/src/page/program/EditProgram.jsx b/src/page/program/EditProgram.jsx
index 186a6daccfd9f7c1e3f54ef52556c9a06fa266dd..4b7148186900acdfa01fafba779d16dcb03935f6 100644
--- a/src/page/program/EditProgram.jsx
+++ b/src/page/program/EditProgram.jsx
@@ -3,7 +3,8 @@ import useFetchSingleData from "../../utils/useFetchSingleData";
 import { css } from "@emotion/core";
 import { ErrorDiv } from "../../component/html/html";
 import FormProgram from "./FormProgram";
-import { ArrowBack, ErrorOutline } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import ErrorOutlineIcon from "@material-ui/icons/ErrorOutline";
 import { navigate } from "@reach/router";
 import useSendData from "../../utils/useSendData";
 
@@ -64,7 +65,7 @@ const EditProgram = ({ idProgram }) => {
           `}
           onClick={() => navigate(-1)}
         >
-          <ArrowBack fontSize="large" />
+          <ArrowBackIcon fontSize="large" />
         </button>
         <div
           css={css`
@@ -80,7 +81,7 @@ const EditProgram = ({ idProgram }) => {
           display: flex;
         `}
       >
-        <ErrorOutline style={{ fontSize: 28, color: "FFC80A" }} />
+        <ErrorOutlineIcon style={{ fontSize: 28, color: "FFC80A" }} />
         <div
           css={css`
             font-weight: 600;
diff --git a/src/page/subkategori/DetailSubkategori.jsx b/src/page/subkategori/DetailSubkategori.jsx
index e9e59683b743254b1c2b9591a673c6240d4375b9..bfd2b6c32b1bd4690e42dc4d5f92a2d987726932 100644
--- a/src/page/subkategori/DetailSubkategori.jsx
+++ b/src/page/subkategori/DetailSubkategori.jsx
@@ -5,7 +5,7 @@ import { ButtonDeleteStyled, ErrorDiv } from "../../component/html/html";
 import TableComponent from "../../component/TableComponent";
 import LinkYellow from "../../component/LinkYellow";
 import { Link, navigate } from "@reach/router";
-import { ArrowBack } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
 import useDelete from "../../utils/useDelete";
 import {
   Dialog,
@@ -92,7 +92,7 @@ const DetailSubkategori = ({ idSubKategori }) => {
           `}
           onClick={() => navigate("/subkategori")}
         >
-          <ArrowBack fontSize="large" />
+          <ArrowBackIcon fontSize="large" />
         </button>
         <div
           css={css`
diff --git a/src/page/subkategori/EditSubkategori.jsx b/src/page/subkategori/EditSubkategori.jsx
index 72c3419153ec8dd2c3fd09079e17a6b7a4b86ff2..8060172eee770458efad58855326feba8e135bde 100644
--- a/src/page/subkategori/EditSubkategori.jsx
+++ b/src/page/subkategori/EditSubkategori.jsx
@@ -3,7 +3,8 @@ import useFetchSingleData from "../../utils/useFetchSingleData";
 import { css } from "@emotion/core";
 import { ErrorDiv } from "../../component/html/html";
 import FormSubkategori from "./FormSubkategori";
-import { ArrowBack, ErrorOutline } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import ErrorOutlineIcon from "@material-ui/icons/ErrorOutline";
 import { navigate } from "@reach/router";
 import useSendData from "../../utils/useSendData";
 
@@ -59,7 +60,7 @@ const EditSubkategori = ({ idSubKategori }) => {
           `}
           onClick={() => navigate(-1)}
         >
-          <ArrowBack fontSize="large" />
+          <ArrowBackIcon fontSize="large" />
         </button>
         <div
           css={css`
@@ -75,7 +76,7 @@ const EditSubkategori = ({ idSubKategori }) => {
           display: flex;
         `}
       >
-        <ErrorOutline style={{ fontSize: 28, color: "FFC80A" }} />
+        <ErrorOutlineIcon style={{ fontSize: 28, color: "FFC80A" }} />
         <div
           css={css`
             font-weight: 600;
diff --git a/src/page/transaksi/DetailTransaksi.jsx b/src/page/transaksi/DetailTransaksi.jsx
index ab8243105f3c7c48eb0e4fa25163ec6b0ed3f77f..6951315888ea81cc154dc235356e74ba77deffca 100644
--- a/src/page/transaksi/DetailTransaksi.jsx
+++ b/src/page/transaksi/DetailTransaksi.jsx
@@ -1,7 +1,10 @@
 import React, { useState } from "react";
 import useFetchSingleData from "../../utils/useFetchSingleData";
 import { css } from "@emotion/core";
-import { ArrowBack, Contacts, Phone, Photo } from "@material-ui/icons";
+import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import PhoneIcon from "@material-ui/icons/Phone";
+import PhotoIcon from "@material-ui/icons/Photo";
+import ContactsIcon from "@material-ui/icons/Contacts";
 import { Link, navigate } from "@reach/router";
 import PersonIcon from "@material-ui/icons/Person";
 import Table from "@material-ui/core/Table";
@@ -72,7 +75,7 @@ const DetailTransaksi = ({ idTransaksi }) => {
         `}
         onClick={() => navigate(-1)}
       >
-        <ArrowBack fontSize="large" />
+        <ArrowBackIcon fontSize="large" />
       </button>
       <div
         css={css`
@@ -182,7 +185,7 @@ const DetailTransaksi = ({ idTransaksi }) => {
           align-items: baseline;
         `}
       >
-        <Phone />
+        <PhoneIcon />
         <div>{transaction.user_phone_number}</div>
       </div>
       <div
@@ -196,7 +199,7 @@ const DetailTransaksi = ({ idTransaksi }) => {
             font-size: 1.2rem;
           `}
         >
-          <Contacts />
+          <ContactsIcon />
           Alamat Pengiriman
           <div>{`${transaction.shipping_address}, 
           RT ${transaction.shipping_neighborhood}, 
@@ -337,7 +340,7 @@ const DetailTransaksi = ({ idTransaksi }) => {
                     variant="contained"
                     color="primary"
                     size="medium"
-                    startIcon={<Photo />}
+                    startIcon={<PhotoIcon />}
                     data-testid="button-see-proof"
                   >
                     Bukti
diff --git a/src/page/transaksi/FormStatus.jsx b/src/page/transaksi/FormStatus.jsx
index e3803b7690dfd4663eed1423967a9d2fc9a7c241..93eeec9e9820aa0aa9dd7247b56c53b9ca268c0e 100644
--- a/src/page/transaksi/FormStatus.jsx
+++ b/src/page/transaksi/FormStatus.jsx
@@ -9,7 +9,7 @@ import {
 } from "../../component/html/html";
 import { css } from "@emotion/core";
 import Button from "@material-ui/core/Button";
-import { Save } from "@material-ui/icons";
+import SaveIcon from "@material-ui/icons/Save";
 
 const FormStatus = ({ idTransaksi, defaultStatus, paymentMethod }) => {
   const url = `${process.env.REACT_APP_BASE_URL}/transactions/${idTransaksi}/`;
@@ -65,7 +65,7 @@ const FormStatus = ({ idTransaksi, defaultStatus, paymentMethod }) => {
           type="submit"
           variant="contained"
           color="primary"
-          startIcon={<Save />}
+          startIcon={<SaveIcon />}
         >
           Simpan
         </Button>