diff --git a/packages/examples/pages/flatlist/index.js b/packages/examples/pages/flatlist/index.js
new file mode 100644
index 00000000..0580925a
--- /dev/null
+++ b/packages/examples/pages/flatlist/index.js
@@ -0,0 +1,114 @@
+import React from 'react';
+import { StyleSheet } from 'react-native';
+import Example from '../../shared/example';
+import { FlatList, Text, TouchableOpacity, View } from 'react-native-web';
+
+const multiSelectData = ['First', 'Second', 'Third'].map((title, id) => ({ id, title }));
+const minimalData = ['a', 'b', 'c', 'd', 'e'].map((key) => ({ key }));
+const pageExamplesData = ['minimal', 'multiSelect'].map((type) => ({ type }));
+
+class MyListItem extends React.PureComponent {
+ _onPress = () => {
+ this.props.onPressItem(this.props.id);
+ };
+
+ render() {
+ const textColor = this.props.selected ? 'red' : 'black';
+ return (
+
+
+ {this.props.title}
+
+
+ );
+ }
+}
+
+class MultiSelectList extends React.PureComponent {
+ state = { selected: new Map() };
+
+ _keyExtractor = (item, index) => item.id;
+
+ _onPressItem = (id) => {
+ // updater functions are preferred for transactional updates
+ this.setState((state) => {
+ // copy the map rather than modifying state.
+ const selected = new Map(state.selected);
+ selected.set(id, !selected.get(id)); // toggle
+ return { selected };
+ });
+ };
+
+ _renderItem = ({ item }) => (
+
+ );
+
+ render() {
+ return (
+
+ );
+ }
+}
+
+function renderExampleItem({ item }) {
+ switch (item.type) {
+ case 'minimal':
+ // Example Minimal FlatList, directly from FlatList's own JSDoc details.
+ // Appending our own view as a header to keep this example itself tightly matching the JSDoc.
+ return (
+
+ Minimal FlatList:
+ {item.key}}
+ />
+
+ );
+ case 'multiSelect':
+ // Example Multi-Select FlatList, directly from FlatList's own JSDoc details.
+ // Appending our own view as a header to keep this example itself tightly matching the JSDoc.
+ return (
+
+ Multi-Select FlatList:
+
+
+ );
+ default:
+ throw new Error('Unexpected Item Type');
+ }
+}
+
+export default function FlatListPage() {
+ return (
+
+ (Example ListFooterComponent Here)
+ }
+ ListHeaderComponent={
+ (Example ListHeaderComponent Here)
+ }
+ data={pageExamplesData}
+ renderItem={renderExampleItem}
+ />
+
+ );
+}
+
+const styles = StyleSheet.create({
+ allExamplesFooter: { fontSize: 22 },
+ allExamplesHeader: { fontSize: 22, marginBottom: 20 },
+ exampleContainer: { marginBottom: 20 },
+ exampleHeaderText: { fontSize: 18, fontWeight: 'bold' },
+ listItemText: { fontSize: 16 }
+});