+
+ (
+
+
+
+ )}
+ >
+ {this.state.loading && this.state.hasMore && (
+
+
+
+ )}
+
+
+ {!this.state.loadMore && (this.state.data.length >= limit) && (
+
+
)}
+
+ );
+ }
+}
+
+export default Reviews;
\ No newline at end of file
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/SingleReview.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/SingleReview.js
new file mode 100644
index 00000000000..3834b3ff2e3
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/src/components/apps/release/review/SingleReview.js
@@ -0,0 +1,46 @@
+import React from "react";
+import {Avatar} from "antd";
+import {List,Typography} from "antd";
+import StarRatings from "react-star-ratings";
+
+const {Text, Paragraph} = Typography;
+const colorList = ['#f0932b','#badc58','#6ab04c','#eb4d4b','#0abde3', '#9b59b6','#3498db','#22a6b3'];
+
+class SingleReview extends React.Component {
+
+ render() {
+ const review = this.props.review;
+ const randomColor = colorList[Math.floor(Math.random() * (colorList.length))];
+ const avatarLetter = review.username.charAt(0).toUpperCase();
+ const content = (
+