> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encorekit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Release checklist

> Everything to set up before you ship a Gifts Button and a Claim Reminder, in order, with a list to check before release.

<Info>
  **Requires SDK 2.4.0+** on every platform. See [Minimum SDK versions](/publishers/triggers/overview#minimum-sdk-versions).
</Info>

Use this page to plan the release of both trigger components and to check it before you ship. You add a [Gifts Button](/publishers/triggers/gifts-button) at your reward moment and a [Claim Reminder](/publishers/triggers/claim-reminder) on a screen users come back to, then identify your user. Each step links to the page that holds its code for every platform.

It takes one app release. After that, Encore can change the looks and test them without another release from you.

## Update the Encore SDK

Update every SDK you ship to 2.4.0 or later: trigger components first shipped in 2.4.0 on every platform. [Minimum SDK versions](/publishers/triggers/overview#minimum-sdk-versions) lists each package.

No migration is needed. Your existing `show()` calls keep working as they do today.

## Identify your user and share what you know

Call `identify()` once you know who the user is, as for `show()`. Encore matches claims and completions to that ID.

Then send the attributes your app already has. Country has its own field, and anything of your own goes in `custom`. Gender is accepted only from an app rated 18+. This is strongly recommended: country and language already shape which offers a user is shown. Each platform's user management page has the call:

| Platform | Page |
| - | - |
| iOS | [User management](/publishers/ios/quickstart/user-management) |
| Android | [User management](/publishers/android/quickstart/user-management) |
| React Native | [User management](/publishers/react-native/quickstart/user-management) |
| Flutter | [User management](/publishers/flutter/quickstart/user-management) |
| Web | [User management](/publishers/web/quickstart/user-management) |

* Pass the user's age as `age` (whole years) or their date of birth as `dateOfBirth`, whichever your app has. Every SDK takes both, works the age out on the device, and never sends the date. If you hold only a range, send its lowest end as `age`. See [Sending an age](/publishers/offers-api/reference/user-attributes#sending-an-age).
* A user under 18 is still served offers, from age-appropriate inventory only and with no per-user personalization.
* Only send what you have a lawful basis to share, such as the user's consent.

## Place a Gifts Button at your reward moment

Use the screen that celebrates something the user did: a finished streak, for example. The entry shows only when the reward sheet has offers for this user; until then it takes up no space. See [Add a Gifts Button](/publishers/triggers/quickstart#add-a-gifts-button).

* Use it **in place of** your `show()` call at that moment, not as well as it.
* Keep it clear of controls people tap without looking, such as a send button, so every tap on it is meant.

## Place a Claim Reminder on a screen users return to

When a user claims an offer and leaves before finishing it, this card brings them back with a countdown. Add it as its own view on a screen people open on their own, such as your home tab, rather than one they rarely reach. See [Add a Claim Reminder](/publishers/triggers/quickstart#add-a-claim-reminder).

* With no open claim it draws nothing and leaves no gap, so place it inline.
* A tap opens the reward sheet with that offer in it. When the look is dismissible, × hides that reminder on this device.
* Don't also mount a Claim Reminder where a Gifts Button sits: the Gifts Button turns into the reminder after a claim by itself.

## Make it look like your app

Pass `appearance` on the trigger component to set its colors; yours always win over Encore's. It styles only the trigger component, never the sheet it opens: the sheet keeps the look you give your sheets. See [Colors](/publishers/triggers/overview#colors).

* `headline`, `subheadline` and `cta` put your own words on it; each line you leave out keeps the look's copy. See [Your text](/publishers/triggers/overview#your-text).
* `icon`, next to `placement`, picks the icon: `gift` (the default), `appIcon` or `none`. See [Icon](/publishers/triggers/overview#icon).
* `alignment`, next to `placement`, sets where it sits when the screen is wider than its look: `center` (the default), `leading` or `trailing`. See [Width and alignment](/publishers/triggers/overview#width-and-alignment).

## Who controls what

| Encore, from its side with no app update | Your app |
| - | - |
| Which look shows, and its default copy in the user's language | Which screens each trigger component goes on |
| What the spot shows after a claim and after a completion | The trigger component's text (`headline`, `subheadline`, `cta`), colors, and icon |
| Which offers the reward sheet lists | Where it sits on a wide screen |
| Experiments on each of these, with a [holdout group](/publishers/triggers/experiments#the-holdout-group) | Whether Encore may open the gifts by itself (`autoOpen` set to off to never) |
| Counting views and taps, so you send no events | Who the user is, and the attributes you choose to share |

## Before you ship

Check each of these on a test build:

* Every SDK you ship is 2.4.0 or later.
* `identify()` runs once you know who the user is.
* Attributes are sent, with `age` or `dateOfBirth`, and no gender unless your app is rated 18+.
* The Gifts Button replaces your `show()` call on the reward screen, not both.
* The Claim Reminder sits inline on a screen users return to, as its own view.
* Colors are set on the trigger components.
* You claimed a test offer and left without finishing it. When you came back, the reminder showed.

## Related

* [Quickstart](/publishers/triggers/quickstart): the code for both trigger components on every platform.
* [Troubleshooting](/publishers/triggers/troubleshooting): why a trigger component isn't showing.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.