diff --git a/packages/desktop-client/src/components/common/CustomSelect.tsx b/packages/desktop-client/src/components/common/CustomSelect.tsx
index d85ae87143cc93f5bb5cdb3a3f40194e5e2cf938..9f47c3deb8c6bed0a910d12a87d3153a56fee9de 100644
--- a/packages/desktop-client/src/components/common/CustomSelect.tsx
+++ b/packages/desktop-client/src/components/common/CustomSelect.tsx
@@ -14,6 +14,7 @@ type CustomSelectProps = {
   value: string;
   onChange?: (newValue: string) => void;
   style?: CSSProperties;
+  wrapperStyle?: CSSProperties;
   disabledKeys?: string[];
 };
 
@@ -22,18 +23,38 @@ export default function CustomSelect({
   value,
   onChange,
   style,
+  wrapperStyle,
   disabledKeys = [],
 }: CustomSelectProps) {
+  const arrowSize = 7;
+  const label = options.filter(option => option[0] === value)[0][1];
   return (
     <ListboxInput
       value={value}
       onChange={onChange}
-      style={{ lineHeight: '1em' }}
+      style={{ lineHeight: '1em', ...wrapperStyle }}
     >
       <ListboxButton
-        {...css([{ borderWidth: 0, padding: 5, borderRadius: 4 }, style])}
-        arrow={<ExpandArrow style={{ width: 7, height: 7, paddingTop: 3 }} />}
-      />
+        {...css([
+          { borderWidth: 0, padding: '2px 5px', borderRadius: 4 },
+          style,
+        ])}
+        arrow={<ExpandArrow style={{ width: arrowSize, height: arrowSize }} />}
+      >
+        <span
+          style={{
+            display: 'flex',
+            overflowX: 'hidden',
+            textOverflow: 'ellipsis',
+            whiteSpace: 'nowrap',
+            maxWidth: `calc(100% - ${arrowSize + 5}px)`,
+            minHeight: '18px',
+            alignItems: 'center',
+          }}
+        >
+          {label}
+        </span>
+      </ListboxButton>
       <ListboxPopover style={{ zIndex: 10000, outline: 0, borderRadius: 4 }}>
         <ListboxList style={{ maxHeight: 250, overflowY: 'auto' }}>
           {options.map(([value, label]) => (
diff --git a/packages/desktop-client/src/components/modals/ImportTransactions.js b/packages/desktop-client/src/components/modals/ImportTransactions.js
index b954e5bba042ea13b50e25cfbaa226572c7bfd99..0ac731ca03534845359139ae823dd6180d8474cd 100644
--- a/packages/desktop-client/src/components/modals/ImportTransactions.js
+++ b/packages/desktop-client/src/components/modals/ImportTransactions.js
@@ -17,7 +17,7 @@ import {
   Text,
   Stack,
   Modal,
-  Select,
+  CustomSelect,
   Input,
   Button,
   ButtonWithLoading,
@@ -339,18 +339,16 @@ function SubLabel({ title }) {
 
 function SelectField({ width, style, options, value, onChange }) {
   return (
-    <Select
-      value={value}
-      style={style}
-      onChange={e => onChange(e.target.value)}
-    >
-      <option value="">Choose field...</option>
-      {options.map(x => (
-        <option key={x} value={x}>
-          {x}
-        </option>
-      ))}
-    </Select>
+    <CustomSelect
+      options={[
+        ['choose-field', 'Choose field...'],
+        ...options.map(option => [option, option]),
+      ]}
+      value={value === null ? 'choose-field' : value}
+      style={{ borderWidth: 1, width: '100%' }}
+      wrapperStyle={style}
+      onChange={value => onChange(value)}
+    />
   );
 }
 
@@ -374,16 +372,15 @@ function DateFormatSelect({
   return (
     <View style={{ width: 120 }}>
       <SectionLabel title="Date format" />
-      <Select
+      <CustomSelect
+        options={dateFormats.map(f => [
+          f.format,
+          f.label.replace(/ /g, delimiter),
+        ])}
         value={parseDateFormat || ''}
-        onChange={e => onChange(e.target.value)}
-      >
-        {dateFormats.map(f => (
-          <option key={f.format} value={f.format}>
-            {f.label.replace(/ /g, delimiter)}
-          </option>
-        ))}
-      </Select>
+        onChange={value => onChange(value)}
+        style={{ borderWidth: 1, width: '100%' }}
+      />
     </View>
   );
 }
@@ -465,12 +462,11 @@ function FieldMappings({ transactions, mappings, onChange, splitMode }) {
         spacing={1}
         style={{ marginTop: 5 }}
       >
-        <View style={{ width: 200 }}>
+        <View style={{ flex: 1 }}>
           <SubLabel title="Date" />
           <SelectField
-            width={200}
             options={options}
-            value={mappings.date || ''}
+            value={mappings.date}
             style={{ marginRight: 5 }}
             onChange={name => onChange('date', name)}
           />
@@ -478,9 +474,8 @@ function FieldMappings({ transactions, mappings, onChange, splitMode }) {
         <View style={{ flex: 1 }}>
           <SubLabel title="Payee" />
           <SelectField
-            width="flex"
             options={options}
-            value={mappings.payee || ''}
+            value={mappings.payee}
             style={{ marginRight: 5 }}
             onChange={name => onChange('payee', name)}
           />
@@ -488,41 +483,37 @@ function FieldMappings({ transactions, mappings, onChange, splitMode }) {
         <View style={{ flex: 1 }}>
           <SubLabel title="Notes" />
           <SelectField
-            width="flex"
             options={options}
-            value={mappings.notes || ''}
+            value={mappings.notes}
             style={{ marginRight: 5 }}
             onChange={name => onChange('notes', name)}
           />
         </View>
         {splitMode ? (
           <>
-            <View style={{ width: 90 }}>
+            <View style={{ flex: 0.5 }}>
               <SubLabel title="Outflow" />
               <SelectField
-                width={90}
                 options={options}
-                value={mappings.outflow || ''}
+                value={mappings.outflow}
                 onChange={name => onChange('outflow', name)}
               />
             </View>
-            <View style={{ width: 90 }}>
+            <View style={{ flex: 0.5 }}>
               <SubLabel title="Inflow" />
               <SelectField
-                width={90}
                 options={options}
-                value={mappings.inflow || ''}
+                value={mappings.inflow}
                 onChange={name => onChange('inflow', name)}
               />
             </View>
           </>
         ) : (
-          <View style={{ width: 90 }}>
+          <View style={{ flex: 1 }}>
             <SubLabel title="Amount" />
             <SelectField
-              width={90}
               options={options}
-              value={mappings.amount || ''}
+              value={mappings.amount}
               onChange={name => onChange('amount', name)}
             />
           </View>
@@ -899,16 +890,18 @@ function ImportTransactions({
               {filetype === 'csv' && (
                 <View style={{ marginLeft: 25 }}>
                   <SectionLabel title="CSV DELIMITER" />
-                  <Select
+                  <CustomSelect
+                    options={[
+                      [',', ','],
+                      [';', ';'],
+                    ]}
                     value={csvDelimiter}
-                    onChange={e => {
-                      setCsvDelimiter(e.target.value);
-                      parse(filename, { delimiter: e.target.value });
+                    onChange={value => {
+                      setCsvDelimiter(value);
+                      parse(filename, { delimiter: value });
                     }}
-                  >
-                    <option value=",">,</option>
-                    <option value=";">;</option>
-                  </Select>
+                    style={{ borderWidth: 1, width: '100%' }}
+                  />
                 </View>
               )}
             </View>
diff --git a/packages/desktop-client/src/components/select/RecurringSchedulePicker.js b/packages/desktop-client/src/components/select/RecurringSchedulePicker.js
index 0e30714a8a126fb43e10c25bfe3741186f65c52f..b6626dcc476b38ac923661e4b1257024494f10e9 100644
--- a/packages/desktop-client/src/components/select/RecurringSchedulePicker.js
+++ b/packages/desktop-client/src/components/select/RecurringSchedulePicker.js
@@ -8,7 +8,15 @@ import { getRecurringDescription } from 'loot-core/src/shared/schedules';
 import AddIcon from '../../icons/v0/Add';
 import SubtractIcon from '../../icons/v0/Subtract';
 import { colors } from '../../style';
-import { Button, Select, Input, Tooltip, View, Text, Stack } from '../common';
+import {
+  Button,
+  CustomSelect,
+  Input,
+  Tooltip,
+  View,
+  Text,
+  Stack,
+} from '../common';
 import { useTooltip } from '../tooltips';
 
 import DateSelect from './DateSelect';
@@ -191,38 +199,35 @@ function MonthlyPatterns({ config, dispatch }) {
             flexDirection: 'row',
           }}
         >
-          <Select
-            style={{ marginRight: 10 }}
+          <CustomSelect
+            options={[
+              [-1, 'Last'],
+              ['-', '---'],
+              ...DAY_OF_MONTH_OPTIONS.map(opt => [opt, opt]),
+            ]}
             value={recurrence.value}
-            onChange={e =>
-              updateRecurrence(
-                recurrence,
-                'value',
-                parsePatternValue(e.target.value),
-              )
+            onChange={value =>
+              updateRecurrence(recurrence, 'value', parsePatternValue(value))
             }
-          >
-            <option value={-1}>Last</option>
-            <option disabled>---</option>
-            {DAY_OF_MONTH_OPTIONS.map(opt => (
-              <option key={opt} value={opt}>
-                {opt}
-              </option>
-            ))}
-          </Select>
-          <Select
-            style={{ marginRight: 10 }}
+            disabledKeys={['-']}
+            wrapperStyle={{ flex: 1, marginRight: 10 }}
+            style={{
+              borderWidth: 1,
+              width: '100%',
+            }}
+          />
+          <CustomSelect
+            options={[
+              ['day', 'Day'],
+              ['-', '---'],
+              ...DAY_OF_WEEK_OPTIONS.map(opt => [opt.id, opt.name]),
+            ]}
             value={recurrence.type}
-            onChange={e => updateRecurrence(recurrence, 'type', e.target.value)}
-          >
-            <option value="day">Day</option>
-            <option disabled>---</option>
-            {DAY_OF_WEEK_OPTIONS.map(opt => (
-              <option key={opt.id} value={opt.id}>
-                {opt.name}
-              </option>
-            ))}
-          </Select>
+            onChange={value => updateRecurrence(recurrence, 'type', value)}
+            disabledKeys={['-']}
+            wrapperStyle={{ flex: 1, marginRight: 10 }}
+            style={{ borderWidth: 1, width: '100%' }}
+          />
           <Button
             bare
             style={{ padding: 7 }}
@@ -322,17 +327,12 @@ function RecurringScheduleTooltip({ config: currentConfig, onClose, onSave }) {
           onEnter={e => updateField('interval', e.target.value)}
           defaultValue={config.interval || 1}
         ></Input>
-        <Select
-          onChange={e => updateField('frequency', e.target.value)}
+        <CustomSelect
+          options={FREQUENCY_OPTIONS.map(opt => [opt.id, opt.name])}
           value={config.frequency}
-          style={{ flex: 0 }}
-        >
-          {FREQUENCY_OPTIONS.map(opt => (
-            <option key={opt.id} value={opt.id}>
-              {opt.name}
-            </option>
-          ))}
-        </Select>
+          onChange={value => updateField('frequency', value)}
+          style={{ borderWidth: 1, height: 27.5 }}
+        />
         {config.frequency === 'monthly' &&
         (config.patterns == null || config.patterns.length === 0) ? (
           <Button onClick={() => dispatch({ type: 'add-recurrence' })}>
diff --git a/packages/desktop-client/src/components/settings/Format.js b/packages/desktop-client/src/components/settings/Format.js
index aae3a66c319381db3502955227d74c84f9afeae3..5c8e844b701243d6f14e85ad610d72fb0b2fe4b7 100644
--- a/packages/desktop-client/src/components/settings/Format.js
+++ b/packages/desktop-client/src/components/settings/Format.js
@@ -95,7 +95,7 @@ export default function FormatSettings({ prefs, savePrefs }) {
                   f.value,
                   prefs.hideFraction ? f.labelNoFraction : f.label,
                 ])}
-                style={{ padding: '5px 10px', fontSize: 15 }}
+                style={{ padding: '2px 10px', fontSize: 15 }}
               />
             </Button>
 
@@ -115,7 +115,7 @@ export default function FormatSettings({ prefs, savePrefs }) {
                 value={dateFormat}
                 onChange={onDateFormat}
                 options={dateFormats.map(f => [f.value, f.label])}
-                style={{ padding: '5px 10px', fontSize: 15 }}
+                style={{ padding: '2px 10px', fontSize: 15 }}
               />
             </Button>
           </Column>
@@ -126,7 +126,7 @@ export default function FormatSettings({ prefs, savePrefs }) {
                 value={firstDayOfWeekIdx}
                 onChange={onFirstDayOfWeek}
                 options={daysOfWeek.map(f => [f.value, f.label])}
-                style={{ padding: '5px 10px', fontSize: 15 }}
+                style={{ padding: '2px 10px', fontSize: 15 }}
               />
             </Button>
           </Column>
diff --git a/upcoming-release-notes/1277.md b/upcoming-release-notes/1277.md
new file mode 100644
index 0000000000000000000000000000000000000000..7f6c5008fc59fe1958d4d4ba90d3d822e685771f
--- /dev/null
+++ b/upcoming-release-notes/1277.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [aleetsaiya]
+---
+
+Refactor some usages of `Select` component to `CustomSelect`
\ No newline at end of file