# Dynamic Values

Dynamic Values allow you to create rules and control flow statements to conditionally apply variables. You can use it for things like:

* Changing the text of a component based on which product is selected.
* Hide and show a modal from a button click.

To open the dynamic values editor, **click** on either the gear icon in the **component editor**, or simply **click** on any property in the **component editor**. In the dropdown, choose **Dynamic**:

<img src="__img0" />

When the dynamic values editor shows, **click** on **Add Value** to get started.

> **Tip**

Check out our introductory video covering [dynamic values on YouTube](https://youtu.be/bw9ve8d2rek?feature=shared).



Assigning variables without conditions [#assigning-variables-without-conditions]

**First off, to simply assign a variable *without* a condition, you still use the dynamic values editor.** For example, if you want some text component's color to match something you have in your [theme](/docs/dashboard/dashboard-creating-paywalls/paywall-editor-theme) — just select it and don't insert any rule.

Here, we set the text to the theme's primary color:

<img src="__img1" />

Setting dynamic values [#setting-dynamic-values]

The dynamic values editor works like most control flow interfaces. You set a condition, and choose what should happen when it's met. You can chain multiple conditions together, too. Or, simply use an if/else format.

Check out this example:

<img src="__img2" />

> **Note**

Notice how you can use [variables](/docs/dashboard/dashboard-creating-paywalls/paywall-editor-variables) within the dynamic values editor,
too.



It's saying:

1. When the product has an introductory offer (i.e. the condition)
2. Then set the text of the component to "Start \{\{ products.selected.trialPeriodText }} free trial" (i.e. what to do when a condition is met)
3. Otherwise, set it to "Subscribe for \{\{ products.selected.price }} / \{\{ products.selected.period }}."

You can also add rules within a group.

Rules versus group [#rules-versus-group]

When you add a condition, you'll have the choice to either add a rule or a group:

<img src="__img3" />

Think about them like this:

* Use **rule** when you have one condition you're checking.
  * Ex: If the user has a free trial available, do this.
* Use **group** when you need to aggregate several conditions together to check.
  * Ex: If the user has a free trial available *and* they are in the United States, do this.
* Use **both** of them together to check complex conditions.
  * Ex: If the user has a free trial available *and* they are in the United States, *and* they are on a certain version, do this.

In programming terms, it's a bit like this:

```swift
if user.hasPro && (user.isLegacy && user.isEligibleForProPlus) {
    showUpsellToLegacyUsers()
}
```

The first part of that statement would be a **rule** and the second check that's grouped together would be a **group**.

> **Note**

You can add rules within groups, or more groups within an existing group.



Free trial detection [#free-trial-detection]

A common use-case of dynamic values is to conditionally show or hide components, or change copy, based on whether or not the user is eligible for a free trial. To do this, set up a dynamic value as follows:

<img src="__img4" />

In short, use `products.hasIntroductoryOffer` to detect whether or not a free trial is available.

> **Note**

If a user has already claimed a free trial for any of the products within the subscription group,
this value will be `false`.



Examples [#examples]

## Tab

This text component's color is to set to the theme's primary color without any condition (ie. it
should always be this color).<br /><img src="__img5" />

## Tab

If the product has an introductory offer, the text component will read "Try for free".<br /><img src="__img6" />

## Tab

Here, we set the text to be larger than it normally would be if the user an introductory offer
and they haven't seen a paywall in 3 days.<br /><img src="__img7" />

## Tab

Here, some text is set if the user's app version is greater than `1.1.0` and they are on an
iPhone. If those are true, and they have an introductory offer — the text "Power up your iPhone
like never before" is used.<br /><img src="__img8" />