# TaskList component for Stripe Apps Use TaskList to help users track their progress through a list of tasks they must complete. # v8 > This is a v8 for when app-sdk-version is 8. View the full page at https://docs.stripe.com/stripe-apps/components/tasklist?app-sdk-version=8. The `TaskList` component isn’t available in the selected SDK version. # v9 > This is a v9 for when app-sdk-version is 9. View the full page at https://docs.stripe.com/stripe-apps/components/tasklist?app-sdk-version=9. To add the `TaskList` component to your app: ```js import {TaskList, TaskListItem} from '@stripe/ui-extension-sdk/ui'; ``` Use `TaskList`: - To break larger tasks or processes into multiple, sequential steps for a user to complete - To remind users of their progress on unfinished tasks Task lists consist of individual items. You can nest task lists within task list items to represent sub-tasks. When a user completes a task, stop showing its sub-tasks. You can either hide them completely if they’re no longer useful or allow the user to click to reveal them. The following example demonstrates how to render a task list with a connector line to reinforce a requirement to complete tasks sequentially. ### TaskList props | Property | Type | | ---------- | ------------------------------------------------------------------------ | | `children` | (Required) `React.ReactNode` One or more `TaskListItem` components. | ## TaskListItem `TaskList` components contain one or more `TaskListItem` components that define each task the user must complete. If a task list item defines its own sub-tasks, a user must complete those sub-tasks to complete the parent task. ### TaskListItem props | Property | Type | | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `title` | (Required) `string` The display title of the task. | | `onPress` | (Optional) `((event: PressEvent) => void) | undefined` An event handler for when the user clicks anywhere on the task. | | `status` | (Optional) `("not-started" | "in-progress" | "blocked" | "complete") | undefined` The current status of the task. | | `subTasks` | (Optional) `Array | undefined` A list of sub-tasks that belong to this task. Related types: [SubTasks](https://docs.stripe.com/stripe-apps/components/tasklist.md#subtasks). | ### SubTasks | Property | Type | | --------- | --------------------------------------------------------------------------------------------------------------------------- | | `title` | (Required) `string` The display title of the task. | | `onPress` | (Optional) `((event: PressEvent) => void) | undefined` An event handler for when the user clicks anywhere on the task. | | `status` | (Optional) `("not-started" | "in-progress" | "blocked" | "complete") | undefined` The current status of the task. | ## Stateful The following example demonstrates how to render a stateful task list, where the status of each task item is updated in response to a click event. ## See also - [Design patterns to follow](https://docs.stripe.com/stripe-apps/patterns.md) - [Style your app](https://docs.stripe.com/stripe-apps/style.md) - [UI testing](https://docs.stripe.com/stripe-apps/ui-testing.md)