diff --git a/packages/react/test/base/src/App.tsx b/packages/react/test/base/src/App.tsx
index 031af19614..2814535e3c 100644
--- a/packages/react/test/base/src/App.tsx
+++ b/packages/react/test/base/src/App.tsx
@@ -70,6 +70,7 @@ const App: React.FC = () => (
+
diff --git a/packages/react/test/base/src/pages/Main.tsx b/packages/react/test/base/src/pages/Main.tsx
index dd87350d9b..7420744ea0 100644
--- a/packages/react/test/base/src/pages/Main.tsx
+++ b/packages/react/test/base/src/pages/Main.tsx
@@ -52,6 +52,9 @@ const Main: React.FC = () => {
Reorder Group
+
+ Radio Group
+
diff --git a/packages/react/test/base/src/pages/RadioGroup.tsx b/packages/react/test/base/src/pages/RadioGroup.tsx
new file mode 100644
index 0000000000..6020991f6f
--- /dev/null
+++ b/packages/react/test/base/src/pages/RadioGroup.tsx
@@ -0,0 +1,89 @@
+import { IonBackButton, IonButtons, IonContent, IonHeader, IonItem, IonList, IonPage, IonRadio, IonRadioGroup, IonSearchbar, IonTitle, IonToolbar } from '@ionic/react';
+import React, { useState } from 'react';
+
+interface RadioGroupProps {
+
+}
+
+export interface Item {
+ text: string;
+ value: string;
+}
+
+const items: Item[] = [
+ { text: 'Apple', value: 'apple' },
+ { text: 'Apricot', value: 'apricot' },
+ { text: 'Banana', value: 'banana' },
+ { text: 'Blackberry', value: 'blackberry' },
+ { text: 'Blueberry', value: 'blueberry' },
+ { text: 'Cherry', value: 'cherry' },
+ { text: 'Cranberry', value: 'cranberry' },
+ { text: 'Grape', value: 'grape' },
+ { text: 'Grapefruit', value: 'grapefruit' },
+ { text: 'Guava', value: 'guava' },
+];
+
+const RadioGroup: React.FC = () => {
+ const [filteredItems, setFilteredItems] = useState- ([...items]);
+
+ const searchbarInput = (event: any) => {
+ filterList(event.target.value);
+ };
+
+ /**
+ * Update the rendered view with
+ * the provided search query. If no
+ * query is provided, all data
+ * will be rendered.
+ */
+ const filterList = (searchQuery: string | null | undefined) => {
+ /**
+ * If no search query is defined,
+ * return all options.
+ */
+ if (searchQuery === undefined || searchQuery === null) {
+ setFilteredItems([...items]);
+ } else {
+ /**
+ * Otherwise, normalize the search
+ * query and check to see which items
+ * contain the search query as a substring.
+ */
+ const normalizedQuery = searchQuery.toLowerCase();
+ setFilteredItems(
+ items.filter((item) => {
+ return item.text.toLowerCase().includes(normalizedQuery);
+ })
+ );
+ }
+ };
+
+ return (
+
+
+
+
+
+
+ Radio Group
+
+
+
+
+
+
+
+
+ {filteredItems.map((item) => (
+
+ {item.text}
+
+ ))}
+
+
+
+
+ );
+};
+
+export default RadioGroup;