diff --git a/packages/rn-tester/js/assets/hotdog.jpg b/packages/rn-tester/js/assets/hotdog.jpg
new file mode 100644
index 00000000000..ecde10df8a0
Binary files /dev/null and b/packages/rn-tester/js/assets/hotdog.jpg differ
diff --git a/packages/rn-tester/js/examples/Filter/FilterExample.js b/packages/rn-tester/js/examples/Filter/FilterExample.js
new file mode 100644
index 00000000000..def59353501
--- /dev/null
+++ b/packages/rn-tester/js/examples/Filter/FilterExample.js
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ * @format
+ * @flow
+ */
+
+'use strict';
+
+import type {ViewStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet';
+
+import React from 'react';
+import {Image, StyleSheet, Text, View} from 'react-native';
+
+const hotdog = require('../../assets/hotdog.jpg');
+
+type Props = $ReadOnly<{
+ style: ViewStyleProp,
+}>;
+
+function StaticViewAndImage(props: Props): React.Node {
+ return (
+ <>
+
+
+
+
+ Hello world!
+
+
+
+
+
+ Hello world!
+
+
+
+
+
+
+
+ >
+ );
+}
+
+function StaticViewAndImageWithState(props: Props): React.Node {
+ const [s, setS] = React.useState(true);
+ setTimeout(() => setS(!s), 5000);
+
+ return ;
+}
+
+const styles = StyleSheet.create({
+ commonView: {
+ width: 150,
+ height: 150,
+ backgroundColor: '#275752',
+ },
+ commonImage: {
+ width: 150,
+ height: 90,
+ },
+ subview: {
+ width: 75,
+ height: 75,
+ backgroundColor: '#8d2b8f',
+ },
+ subsubview: {
+ width: 38.5,
+ height: 38.5,
+ backgroundColor: '#32a840',
+ },
+ container: {
+ flexDirection: 'row',
+ justifyContent: 'space-around',
+ },
+});
+
+exports.title = 'Filter';
+exports.category = 'UI';
+exports.description =
+ 'A set of graphical effects that can be applied to a view.';
+exports.examples = [
+ {
+ title: 'Brightness',
+ description: 'brightness(1.5)',
+ render(): React.Node {
+ return (
+
+ );
+ },
+ },
+ {
+ title: 'Opacity',
+ description: 'opacity(0.5)',
+ render(): React.Node {
+ return (
+
+ );
+ },
+ },
+ {
+ title: 'Contrast',
+ description: 'contrast(0.5)',
+ platform: 'android',
+ render(): React.Node {
+ return (
+
+ );
+ },
+ },
+ {
+ title: 'Sepia',
+ description: 'sepia(0.5)',
+ platform: 'android',
+ render(): React.Node {
+ return (
+
+ );
+ },
+ },
+ {
+ title: 'Grayscale',
+ description: 'grayscale(0.5)',
+ platform: 'android',
+ render(): React.Node {
+ return (
+
+ );
+ },
+ },
+ {
+ title: 'Saturate',
+ description: 'saturate(4)',
+ platform: 'android',
+ render(): React.Node {
+ return (
+
+ );
+ },
+ },
+ {
+ title: 'Hue Rotate',
+ description: 'hueRotate(-90deg)',
+ platform: 'android',
+ render(): React.Node {
+ return (
+
+ );
+ },
+ },
+ {
+ title: 'Invert',
+ description: 'invert(0.7)',
+ platform: 'android',
+ render(): React.Node {
+ return (
+
+ );
+ },
+ },
+ {
+ title: 'Blur',
+ description: 'blur(10)',
+ platform: 'android',
+ render(): React.Node {
+ return ;
+ },
+ },
+ {
+ title: 'Filters with state updates',
+ description: 'Turn brightness(1.5) on and off every 5 seconds',
+ render(): React.Node {
+ return (
+
+ );
+ },
+ },
+];
diff --git a/packages/rn-tester/js/utils/RNTesterList.android.js b/packages/rn-tester/js/utils/RNTesterList.android.js
index c2a4d0751fe..f2ed4d9a090 100644
--- a/packages/rn-tester/js/utils/RNTesterList.android.js
+++ b/packages/rn-tester/js/utils/RNTesterList.android.js
@@ -306,6 +306,11 @@ const APIs: Array = ([
category: 'UI',
module: require('../examples/Transform/TransformExample'),
},
+ {
+ key: 'FilterExample',
+ category: 'UI',
+ module: require('../examples/Filter/FilterExample'),
+ },
{
key: 'VibrationExample',
category: 'Basic',
diff --git a/packages/rn-tester/js/utils/RNTesterList.ios.js b/packages/rn-tester/js/utils/RNTesterList.ios.js
index df1b6021a5a..7c2ab0ce383 100644
--- a/packages/rn-tester/js/utils/RNTesterList.ios.js
+++ b/packages/rn-tester/js/utils/RNTesterList.ios.js
@@ -294,6 +294,10 @@ const APIs: Array = ([
key: 'TransformExample',
module: require('../examples/Transform/TransformExample'),
},
+ {
+ key: 'FilterExample',
+ module: require('../examples/Filter/FilterExample'),
+ },
{
key: 'TurboModuleExample',
module: require('../examples/TurboModule/TurboModuleExample'),