[[using-shell-components-ui]]
= Flow Components

ifndef::snippets[:snippets: ../../test/java/org/springframework/shell/docs]

Starting from version 2.1.x, a new component model provides an
easier way to create higher-level user interaction for the usual use cases,
such as asking for input in various forms. These usually are just plain text
input or choosing something from a list.

Templates for built-in components are in the
`org/springframework/shell/component` classpath.

Built-in components generally follow this logic:

. Enter a run loop for user input.
. Generate component-related context.
. Render the runtime status of a component state.
. Exit.
. Render the final status of a component state.

NOTE: xref:using-shell-components-flow.adoc[Flow] gives better interface for defining the flow of
components that are better suited for defining interactive command flows.







