Home / Blog / How to create a FAQ accordion screen

How to create a FAQ accordion 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 FAQ Accordion Screen is an important feature in support, knowledge base, and informational apps, allowing users to expand or collapse answers for commonly asked questions. A well-designed FAQ interface uses accordion components, clear headings, smooth transitions, and intuitive icons to enhance readability and navigation. This ensures that users can quickly find answers without being overwhelmed by long blocks of text.

This guide will walk you through the steps to design and implement an FAQ Accordion Screen using the Ionic Design Kit. By leveraging its pre-built UI components and the Ionic Framework, you can create a clean, interactive, and user-friendly FAQ interface that improves user support and engagement.

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 faq-accordion blank --type=react

3. Get inside the project directory

cd faq-accordion

4. Create a Tab bar component

Use this instructions to create a Tab bar component.

5. Create a FAQ accordion page

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

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

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

export default FAQAccordion;

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.

6. 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>

7. Configure page and header

Wrap the component with IonPage to define a full-screen page. Inside, use IonHeader for the top section and IonToolbar to hold navigation and title. IonButtons with slot="start" positions buttons on the left, and className="ion-padding-start" adds spacing. IonBackButton has defaultHref="/" for navigation, text="" to hide text, and icon={arrowBack} for a custom icon. IonTitle places the heading 'FAQ' in the toolbar.

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

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

8. Implement content and accordion

Use IonContent for the scrollable main area. Inside, IonAccordionGroup holds multiple accordions, where expand="inset" gives inset styling, multiple={true} allows several sections open at once, and className="ion-padding-top" adds padding. Each IonAccordion represents a FAQ entry, with value as its identifier.IonItem slot="header" defines the clickable question, and IonLabel wraps the text. The <div slot="content"> provides the answer, shown when the accordion expands. This pattern repeats for each FAQ question.

<IonContent>
    <IonAccordionGroup
        expand="inset"
        multiple={true}
        className="ion-padding-top"
    >
        <IonAccordion value="invite">
            <IonItem slot="header">
                <IonLabel>How do I invite a friend using the app?</IonLabel>
            </IonItem>
            <div slot="content">
                Go to the “Invite & Earn” section in your account, copy your
                referral link, and share it via chat, email, or social media. When
                your friend signs up and places their first eligible order, your
                reward will be added automatically.
            </div>
        </IonAccordion>
        <IonAccordion value="limit">
            <IonItem slot="header">
                <IonLabel>
                    Is there a limit to how many friends I can invite and earn
                    cashback for?
                </IonLabel>
            </IonItem>
            <div slot="content">
                No, you can invite as many friends as you like. Rewards will be
                given for each successful invitation that meets the program's
                criteria.
            </div>
        </IonAccordion>
        <IonAccordion value="success">
            <IonItem slot="header">
                <IonLabel>What qualifies as a successful invitation?</IonLabel>
            </IonItem>
            <div slot="content">
                An invitation is successful when the invited friend registers
                using your link and completes their first eligible order within
                the promotional period.
            </div>
        </IonAccordion>
        <IonAccordion value="eligibility">
            <IonItem slot="header">
                <IonLabel>Can I invite anyone and still get the reward?</IonLabel>
            </IonItem>
            <div slot="content">
                Yes, as long as the person is a new customer who hasn’t registered
                before and meets the eligibility requirements.
            </div>
        </IonAccordion>
        <IonAccordion value="cashback">
            <IonItem slot="header">
                <IonLabel>
                    How much cashback will I receive and when will it be credited?
                </IonLabel>
            </IonItem>
            <div slot="content">
                The cashback amount varies based on the current offer. It is
                usually credited within a few days after your friend’s first
                eligible order.
            </div>
        </IonAccordion>
        <IonAccordion value="expiry">
            <IonItem slot="header">
                <IonLabel>Does my cashback have an expiry date?</IonLabel>
            </IonItem>
            <div slot="content">
                Please check the specific offer’s terms and conditions for expiry
                details.
            </div>
        </IonAccordion>
    </IonAccordionGroup>
</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