Home / Blog / How to create a Service review screen

How to create a Service review screen

Ionic Design Kit, built on a design base of Ionic Framework components, simplifies app development by providing designers with a range of pre-made elements. Designers can effortlessly pick and place elements, eliminating the need to create components from scratch. For developers, this means no complex coding – all components are sourced from the Ionic Framework. The result is a speedy, efficient, and collaborative process, making the Ionic Design Kit essential for both designers and developers.

The Service Review Screen is a crucial feature in e-commerce, service, and marketplace apps, allowing users to view product or service reviews submitted by other customers. A well-designed review interface includes star ratings, user comments, timestamps, reviewer profiles, and optionally images or videos, helping users make informed decisions. Sorting and filtering options for reviews can further improve the experience by highlighting the most relevant or recent feedback.

This guide will walk you through the steps to design and implement a Service Review Screen using the Ionic Design Kit. By leveraging its ready-to-use UI components and the Ionic Framework, you can create a clean, engaging, and user-friendly interface that makes browsing reviews simple and informative.

1. Install Ionic CLI with the command

Creating a project with the Ionic CLI

npm i -g @ionic/cli

2. Create a new project

To create a new project, run the following command.

ionic start service-review blank --type=react

3. Get inside the project directory

cd service-review

4. Create a Service review page

Create page ServiceReview.tsx inside src/pages and add code.

import { IonPage } from '@ionic/react';

const ServiceReview: React.FC = () => {
  return (
    <IonPage></IonPage>
  );
};

export default ServiceReview;

Please make sure that you've added routing in src/App.tsx for the created page. All Ionic framework components that will be used below should be imported similarly to the IonPage component.

5. Select the layout structure

For convenience, we will be using the layout structure recommended by Ionic for all screens. This allows us to add header code and content inside the IonPage.

<IonPage>
  <IonHeader>
    <IonToolbar>
    ...
    </IonToolbar>
  </IonHeader>
  <IonContent>
  ...
  </IonContent>
</IonPage>

6. Define page and header structure

Wrap the entire component in IonPage to define a full screen page in Ionic. Inside, use IonHeader for the top section and IonToolbar for grouping header elements. IonButtons with slot="start" places buttons on the left, while className="ion-padding-start" adds left padding. IonBackButton navigates to the default route via defaultHref="/", hides text with text="", and uses a custom icon through icon={arrowBack}. IonTitle displays the page title '10 reviews' centered in the toolbar.

<IonPage>
    <IonHeader>
        <IonToolbar>
            <IonButtons slot="start" className="ion-padding-start">
                <IonBackButton defaultHref="/" text="" icon={arrowBack} />
            </IonButtons>
            <IonTitle>10 reviews</IonTitle>
        </IonToolbar>
    </IonHeader>
</IonPage>

This concludes our work with IonHeader, and the following sections will cover working with IonContent.

7. Add content and rating list

Use IonContent as the scrollable main area, adding className="ion-padding" for inner spacing. A plain <h2> creates the 'Overall rating' heading. IonList with lines="none" disables dividing lines between items. Each IonItem contains IonLabel for the category name and IonNote with color="medium" to show the numeric rating in a subtle style.

<IonContent className="ion-padding">
    <h2>Overall rating</h2>
    <IonList lines="none">
        <IonItem>
            <IonLabel>Seller communication</IonLabel>
            <IonNote color="medium">4.8</IonNote>
        </IonItem>
        <IonItem>
            <IonLabel>Service as described</IonLabel>
            <IonNote color="medium">5.0</IonNote>
        </IonItem>
        <IonItem>
            <IonLabel>Would recommend</IonLabel>
            <IonNote color="medium">5.0</IonNote>
        </IonItem>
    </IonList>
</IonContent>

8. Build reviews section

Add another <h2> with inline style to set vertical spacing. Use IonList with lines="none" to group multiple reviews. Each IonItem includes IonAvatar with slot="start" for the reviewer’s image, using <img src="..." alt="..."/> for accessibility. IonLabel holds the reviewer’s name, country, and date using <h3> and <p> tags. IonNote with slot="end" shows the review score on the right. Following each IonItem, a <p> tag contains the review text. This pattern repeats for each reviewer.

<IonContent>
    ...
    <h2 style={{ marginTop: "22px", marginBottom: "14px" }}>Reviews</h2>
    <IonList lines="none">
        <IonItem>
            <IonAvatar slot="start">
                <img src="rev-1.jpg" alt="avatar" />
            </IonAvatar>
            <IonLabel>
                <h3>Anna Müller</h3>
                <p>Germany</p>
                <p>12 Feb 2025</p>
            </IonLabel>
            <IonNote color="medium" slot="end">
                5.0
            </IonNote>
        </IonItem>
        <p>
            Fast, reliable, and so easy to use. I booked my trip in under 5
            minutes and everything went perfectly!
        </p>
        <IonItem>
            <IonAvatar slot="start">
                <img src="rev-2.jpg" alt="avatar" />
            </IonAvatar>
            <IonLabel>
                <h3>Sofia Petrov</h3>
                <p>Bulgaria</p>
                <p>4 Jan 2025</p>
            </IonLabel>
            <IonNote color="medium" slot="end">
                5.0
            </IonNote>
        </IonItem>
        <p>
            I had a small question about my booking, so I reached out to
            customer support — and they replied in less than 10 minutes with a
            friendly, detailed answer. The person on the other end genuinely
            cared about solving my issue, which made me feel valued as a
            customer.
        </p>
        <IonItem>
            <IonAvatar slot="start">
                <img src="rev-3.jpg" alt="avatar" />
            </IonAvatar>
            <IonLabel>
                <h3>James Carter</h3>
                <p>Canada</p>
                <p>19 Dec 2024</p>
            </IonLabel>
            <IonNote color="medium" slot="end">
                4.9
            </IonNote>
        </IonItem>
        <p>
            The interface is intuitive and clean. Even my parents had no trouble
            booking through it.
        </p>
        <IonItem>
            <IonAvatar slot="start">
                <img src="rev-4.jpg" alt="avatar" />
            </IonAvatar>
            <IonLabel>
                <h3>Aiko Tanaka</h3>
                <p>Japan</p>
                <p>7 Dec 2024</p>
            </IonLabel>
            <IonNote color="medium" slot="end">
                5.0
            </IonNote>
        </IonItem>
        <p>
            The interface is intuitive and clean. Even my parents had no trouble
            booking through it.
        </p>
    </IonList>
</IonContent>

Thank you for joining us on this exciting journey thus far. Stay tuned for more guides in our comprehensive series, where we'll not only delve into various aspects of mobile app development but also showcase how the Ionic Kit can be your game-changer.

Are you prepared to elevate your Ionic experience? Explore the advantages of incorporating the Ionic Design Kit for intuitive designs and seamless development. May your coding journey be marked by continual innovation and triumphant achievements!

Looking for Ionic kit for you platform?
Ionic Sketch
Ionic Figma
Ionic XD