diff --git a/__tests__/PlatformPickerBenchmark.test.js b/__tests__/PlatformPickerBenchmark.test.js
new file mode 100644
index 0000000..b384d35
--- /dev/null
+++ b/__tests__/PlatformPickerBenchmark.test.js
@@ -0,0 +1,61 @@
+import React from 'react';
+import renderer from 'react-test-renderer';
+import PlatformPicker from '../src/components/PlatformPicker';
+
+const mockPickerRender = jest.fn();
+
+jest.mock('react-native', () => {
+ const ReactLib = require('react');
+ const View = props => ReactLib.createElement('View', props, props.children);
+ const Text = props => ReactLib.createElement('Text', props, props.children);
+ const Picker = props => {
+ mockPickerRender();
+ return ReactLib.createElement('Picker', props, props.children);
+ };
+ Picker.Item = props => ReactLib.createElement('Picker.Item', props);
+
+ return {
+ View,
+ Text,
+ Picker,
+ StyleSheet: {
+ create: obj => obj,
+ flatten: obj => obj,
+ },
+ Platform: {
+ OS: 'ios',
+ select: obj => obj.ios,
+ },
+ };
+});
+
+describe('PlatformPicker Performance', () => {
+ test('renders repeatedly', () => {
+ mockPickerRender.mockClear();
+ const handler = () => {};
+ const selectedValue = 'mobile';
+
+ // Initial render
+ const component = renderer.create(
+ ,
+ );
+
+ expect(mockPickerRender).toHaveBeenCalledTimes(1);
+
+ const start = Date.now();
+
+ // Update 5000 times
+ for (let i = 0; i < 5000; i++) {
+ component.update(
+ ,
+ );
+ }
+
+ const end = Date.now();
+ console.log(`Benchmark Duration: ${end - start}ms`);
+ console.log(`Picker Render Count: ${mockPickerRender.mock.calls.length}`);
+ });
+});
diff --git a/src/components/PlatformPicker.js b/src/components/PlatformPicker.js
index ee7d28e..7ff2394 100644
--- a/src/components/PlatformPicker.js
+++ b/src/components/PlatformPicker.js
@@ -22,4 +22,4 @@ const PlatformPicker = ({selectedValue, onValueChange}) => {
);
};
-export default PlatformPicker;
+export default React.memo(PlatformPicker);