# App Builder: Overview of how to create an app

{% hint style="info" %}
App Builder lets you build a wide variety of front-end web content to work on top of your Rewst automations. As an example, we'll show you how to create a simple Hello World in App Builder. If you need help with App Builder and your issue isn't resolved by our documentation, reach out to Rewst in your dedicated Discord support channel.
{% endhint %}

## How to create an App Builder app

1. In Rewst, navigate to **App Builder > Apps**.
2. Click **Create New App**.\ <br>

   <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2Fp5p1GXkRAiE66TBiOGZz%2Ftest%201-min.png?alt=media&#x26;token=0302cec1-498f-4162-bbbb-e651432d8ee1" alt=""><figcaption></figcaption></figure>
3. Enter the name of your app into the **Name** field. We'll use `hello-world` in our example. Note how it automatically creates a URL based on your org name and the rew\.st domain. \ <br>

   <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FAvBQywMhgYSODmnmMszC%2Ftest%202-min.png?alt=media&#x26;token=ea0e3575-be8e-464d-9ee3-9a7c63b82287" alt=""><figcaption></figcaption></figure>
4. Click **Create**.

## Create a page in an App Builder app

1. Navigate to the newly created app by clicking on it in your **Apps** list. Every app's info page will contain a **Pages** section where all the default pages made by Rewst for that app will be listed. Each app you create will have both a **home** and **login** page.  Both are customizable. Note that you can only have one home and one login page per app. For more on App Builder pages, see our pages documentation [here](https://docs.rewst.help/documentation/app-builder/app-builder-pages).<br>

   <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FrkBD0BPhebYNtW3k1knX%2FScreenshot%202026-03-05%20at%204.15.34%E2%80%AFPM.png?alt=media&#x26;token=6c064591-8523-4450-8d24-2e04f913e478" alt=""><figcaption></figcaption></figure>

2\. Click **Create New Page**.

The bottom section of the **Pages** menu will consist of all non-default pages created by you.\ <br>

<figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2F0ovCcu3klOZkJ4CLarro%2Ftest%204-min.png?alt=media&#x26;token=ccc41db4-cfa4-4656-84dc-2006e6023cbc" alt=""><figcaption></figcaption></figure>

3\. Give your page a name. Remember that Rewst will create the url slug for that page based off this name. Choose something that makes sense, but is appropriate to be seen by the eventual audience of the page.<br>

<figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2Fri7YWkNKvlpRT8unVMnt%2Ftest%205-min.png?alt=media&#x26;token=0ec088f7-5d30-40d0-877e-faf55369c712" alt=""><figcaption></figcaption></figure>

4\. Choose a page type from the **Page Preset** drop-down selector. For this example, choose **Blank**. Other default templates include **Basic**, **Blank**, **Grid**, **Home**, and **Pricing Template**.\ <br>

<figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2Fxbv9GRzjqjWE6UsEti7a%2Ftest%206-min.png?alt=media&#x26;token=beae8b39-dcab-477a-a1b1-b75b665c880b" alt=""><figcaption></figcaption></figure>

5\. Click **Create**.

<figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FR1Z1aIa3pMxW564gQqjG%2Ftest%207-min.png?alt=media&#x26;token=4b1aa7c8-4de9-43e2-a792-adb44122035e" alt=""><figcaption></figcaption></figure>

6\. Click **>** to the right of your page's record, under the **Actions** column. This will take you to the builder screen for that page.&#x20;

## Create a workflow to use in your App Builder app

### Add workflow actions

1. Navigate to **Automations > Workflows**.
2. Click **Create**.
3. Give the workflow a name that relates to your app. Here, we're using `hello-world`.

![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/6f6620ef-ba27-4c8d-b6da-8f51083e060b/2.5/50.000998652147/42.015659694788?0)

4. Add a noop action to the workflow builder canvas by clicking on the action in the left action menu and dragging and dropping it on the canvas.
5. Click on the action.
6. Click the <img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FbKLUtIh6QVlYLe74Iq63%2FScreenshot%202025-03-05%20at%202.39.11%E2%80%AFPM.png?alt=media&#x26;token=ae601253-5309-493c-b7f7-2ebf5c2ba326" alt="" data-size="line">in the action's menu.
7. Change the name of the action to `BEGIN`, which allows other users reviewing the workflow to clearly identify the top of a workflow.\ <br>

   <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FGHXZNtOLMzxWTsArjwqR%2Ftest%208-min.png?alt=media&#x26;token=cad29cb5-4748-4097-bcb6-a3503d661b9b" alt=""><figcaption></figcaption></figure>
8. Add a **List Forms with Granular Permissions** action to the workflow builder canvas. Find the action under the **Rewst** actions submenu. This is a prebuilt action that uses the platform's GraphQL backend to return the requested data.

9\. Connect the **Begin** action to the **List Forms with Granular Permissions** action.\ <br>

<figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FL9mC3wzO5dgWaoD9R3VL%2Ftest10-min.png?alt=media&#x26;token=3f977920-48c2-4e3d-9fdf-7969c1b790ba" alt=""><figcaption></figcaption></figure>

10\. In the **List Forms with Granular Permissions** action, add `all_available_forms` as the **Publish Results As** variable name. This ensures that the output of the action gets added to this variable.\ <br>

<figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FxMFEEcPgiEkwNsAZZScX%2Ftest%2011-min.png?alt=media&#x26;token=f0dea6e2-d3c6-4412-9801-398cc418b11a" alt=""><figcaption></figcaption></figure>

11. Under the **Parameters** tab for the action, click ![](https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2F3NTXxFUwYFhXgM4iE1bw%2FScreenshot%202025-03-13%20at%205.55.52%E2%80%AFPM.png?alt=media\&token=bedfd7e1-684f-4a8a-82b0-bce83480044c)to open the Jinja code editor.
12. Enter `{{ CTX.user.id }}` , which uses the ID of the running user, ensuring we always get the right forms based on the logged in user.\ <br>

    <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FIX4wwuxB3Iilhq7YdNUO%2Ftest%2012-min.png?alt=media&#x26;token=2d122c55-cf81-462d-a78d-9692e0d27b47" alt=""><figcaption></figcaption></figure>
13. Return to the action's menu. Click the **Advanced** tab. Scroll down to the **Run as Org** field. Enter `{{ ORG.ATTRIBUTES.id }}` into the Run as Org box under the Advanced tab.\
    This ensures that the workflow always runs as the organization that you are logged into. If you have a form that is only enabled for certain orgs, this is how you ensure that you return the correct ones.\ <br>

    <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FjeYa9DtU7v85rcGwIn4I%2Ftest%2013-min.png?alt=media&#x26;token=b30697b9-5fda-4cc5-9875-3a0a990db8f9" alt=""><figcaption></figcaption></figure>
14. Add another noop action to the workflow builder canvas. Rename the noop `set_form_output` .\ <br>

    <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2Fpo7VLBeYUaXcXlKopLpB%2Ftest%2014-min.png?alt=media&#x26;token=3edfb2df-47c7-49c7-9ead-897c80112a96" alt=""><figcaption></figcaption></figure>
15. Click a data alias in this new action. Name the data alias`form_output` .<br>

    <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FvR5y7kW1h6GwLBGt2Ym2%2Ftest%2015-min.png?alt=media&#x26;token=861c40a7-a47d-42b3-8f28-aecd802aff45" alt=""><figcaption></figcaption></figure>
16. Click ![](https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2F3NTXxFUwYFhXgM4iE1bw%2FScreenshot%202025-03-13%20at%205.55.52%E2%80%AFPM.png?alt=media\&token=bedfd7e1-684f-4a8a-82b0-bce83480044c) next to your new data alias.
17. Copy the Jinja code below. Here, we're looking at all returned forms, and creating a new key with name, tags, view, and triggerId key. Eventually we'll display the name and tags to the user and use the view key to allow an action for the user - in the case of this example, go directly to the form.&#x20;

```
{#- Assumes single trigger per form -#}
{{ [
    {
      "name": form.name,
      "tags": form.tags,
      "view": "https://app.rewst.io/form/"~form.id,
      "triggerId": form.triggers[0].id | d
    } for form in CTX.all_available_forms
] }}
```

<figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FUemmIhDqaXYI8HjUtGUw%2Ftest%2016.png?alt=media&#x26;token=1e6fc2d6-cb7c-4277-b2d1-b17f8642d9b7" alt=""><figcaption></figcaption></figure>

19. Add a final noop action to your workflow builder canvas. Rename the noop action `END`.
20. Connect **END** to the **Set Form Outputs** action.\ <br>

    <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FffCdNm8rERFzEB6qmNCa%2Ftest%2017-min.png?alt=media&#x26;token=48808b02-7ec6-4c8f-8f5f-da00fac7e01a" alt=""><figcaption></figcaption></figure>
21. Click <img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FbKLUtIh6QVlYLe74Iq63%2FScreenshot%202025-03-05%20at%202.39.11%E2%80%AFPM.png?alt=media&#x26;token=ae601253-5309-493c-b7f7-2ebf5c2ba326" alt="" data-size="line"> in the top right of the workflow builder.
22. Click ![](https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FNC6JDcn4KsWqohOpS4s5%2FScreenshot%202025-03-13%20at%206.14.27%E2%80%AFPM.png?alt=media\&token=df51ec86-925d-4c5f-8f1a-3ea1b28fafec) next to **Output Configuration**.
23. Name the output configuration`form_output`.&#x20;
24. Click ![](https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2F3NTXxFUwYFhXgM4iE1bw%2FScreenshot%202025-03-13%20at%205.55.52%E2%80%AFPM.png?alt=media\&token=bedfd7e1-684f-4a8a-82b0-bce83480044c) next to the output configuration to open the Jinja editor. Enter `{{ CTX.form_output }}` .&#x20;
25. Add notes to your workflow, or use RoboRewsty to do documentation for you.
26. Click **Submit.**
27. Click **Publish**.\ <br>

    <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FBQRo2TD7q9VCZSNBCOoI%2Ftest%2018-min.png?alt=media&#x26;token=3939b998-f993-424a-a75f-09e7d2699f5f" alt=""><figcaption></figcaption></figure>
28. Click **Test**. Click **Test** again.
29. Click **View Results**.

![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/6620cc93-6a1f-417c-9ead-9cdfead3d832/2.5/59.405584283214/7.7570362307242?0)

29. Click **End**, then **output**.

![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/8fa2cc87-fbcc-4887-8fff-86c45a98c69a/2.0619180396/36.369196092847/60.363212791649?0)

![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/543b30ed-75ad-422c-9a29-0e3336a7e775/2.5/72.376844992203/74.921114920738?0)

30. Click **form\_output**. You'll should see a record similar to the below, with a list of the forms that have been output.&#x20;

![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/c111fba0-f0ec-4344-a1fa-642459980d37/2.5/74.887025631892/77.01249226551?0)

![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/171467b7-07ba-4008-8be6-d732ccd6bcc6/2.5/72.452533099771/78.730221759161?0)

## Add components to your app

{% hint style="info" %}
App Builder's component library contains many pre-built components that you can drag and drop onto the App Builder canvas. Detailed information for what each component does and how to use it in your apps can be found in individual pages, in the [components](https://docs.rewst.help/documentation/app-builder/components "mention") section of App Builder's documentation.

A detailed example of one such component can best be found for our [Broken link](https://docs.rewst.help/documentation/app-builder/broken-reference "mention").
{% endhint %}

1. Navigate to **App Builder > Apps**. Click on your **relevant** app.&#x20;
2. Click ![](https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FCZo6ldGnH6mI54IKvYHU%2FScreenshot%202025-03-14%20at%2010.07.35%E2%80%AFAM.png?alt=media\&token=604f834d-4e7b-4ae9-8e89-7f68afc1c8f9) in the left side menu of the App Builder canvas. This will open the full component library.
3. Click on any component to drag and drop it into your App Builder canvas.&#x20;

## Delete an App Builder app

1. Click **App Builder > Apps i**n the left side menu of your Rewst platform.
2. Click ⋮ next to the app you wish to delete, in the table listing all your apps.
3. Click **Delete**.\
   ![](https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2F5hATGLYJT655ZOiEhSFf%2FScreenshot%202025-08-21%20at%203.16.26%E2%80%AFPM.png?alt=media\&token=4bcf1318-c5e0-44b2-b95b-917786d3842b)
4. Click **I want to delete this app**.
5. Read through the warning message on the dialog that appears.
6. Click **I have read and understand these effects.**&#x20;
7. Enter the text shown on the dialog into the confirmation field.
8. Click **Delete**. If successful, a green confirmation dialog will appear at the top center of your screen.

{% hint style="danger" %}
&#x20;Once an app is deleted, it cannot be recovered. Exercise caution before deleting an app.
{% endhint %}

## Sync and clone App Builder apps

Cloning and syncing functionality is limited to apps, not pages, and can only be implemented from parent to child. Use cloning and syncing to export entire apps into compact, bundled JSON files that you can share with other Rewst users.

With cloning and syncing, you can:

* Easily duplicate an app in just a few clicks
* Keep cloned apps updated with the latest improvements
* Unync apps if you don’t want to inherit updates from the parent app

Portals or our Prebuilt Apps must still be initially cloned into customer environments by Rewst Support, and synced with updates by Rewst engineers. This functionality is available for US customers only.

### Clone an app

1. Navigate to **App Builder > Apps** in the left side menu of your Rewst platform.
2. Click **⋮** to the right of the app you wish to clone.&#x20;
3. Click **Clone**.<br>

   <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2Fik0cyWHuGv3OvV1Oa0Xl%2FScreenshot%202025-09-12%20at%208.47.42%E2%80%AFAM.png?alt=media&#x26;token=084b4469-e946-4ee2-a676-a42070f5b6e8" alt=""><figcaption></figcaption></figure>
4. &#x20;Enter whatever you would like to call your cloned app in he **New Name** field. This will need to be different from the name of the original app.
5. Choose the organization that you would like the app to be cloned to from the **Organization** drop-down selector.
6. If you would like the cloned form to stay synced and inerit updates from the parent app, toggle **Synchronize Changes** on.\ <br>

   <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FKs7bo7pgR3OZeAlcneSh%2FScreenshot%202025-09-12%20at%208.49.08%E2%80%AFAM.png?alt=media&#x26;token=07e1122f-99a9-4f5b-a7b9-ceb19fe60694" alt=""><figcaption></figcaption></figure>
7. Click **Clone**. Watch the progress of your cloning in the dialog that appears.
8. If your clone is successful, you'll see a green confirmation message. If the cloning fails, you'll see a <img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FjhTG435hZXaDSQo6QlfY%2FScreenshot%202025-09-12%20at%208.54.11%E2%80%AFAM.png?alt=media&#x26;token=42461cfd-53fa-41cd-89a5-fff109ae3cef" alt="" data-size="line"> in the cloning dialog with a short description of the failure's cause.

### Export an app to a bundled file

1. Navigate to **App Builder > Apps** in the left side menu of your Rewst platform.
2. Click **⋮** to the right of the app you wish to export. \ <br>

   <figure><img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FsazTWnlgrspHzXQoIcol%2FScreenshot%202025-09-12%20at%208.56.55%E2%80%AFAM.png?alt=media&#x26;token=7e829ba9-997c-4191-9620-50b22049fe4c" alt=""><figcaption></figcaption></figure>
3. Click **Export**.
4. The file will be automatically downloaded to you computer.\
   ![](https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2FGUkIOaRzTqiZWINaqMHg%2FScreenshot%202025-09-12%20at%208.57.20%E2%80%AFAM.png?alt=media\&token=6a4797c1-9cc3-40be-950d-0d0d3c67e0a5)

### Import a bundle to add an app to your Apps library

1. Navigate to **App Builder > Apps** in the left side menu of your Rewst platform.
2. Click <img src="https://1835401289-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAQQ1EHVcEsGKBPVHmiav%2Fuploads%2Fgkz2xLffaDmtCdkbhP0l%2FScreenshot%202025-09-12%20at%208.54.56%E2%80%AFAM.png?alt=media&#x26;token=a47a3f22-6d54-4263-b833-3a8b45409142" alt="" data-size="line">.
3. Drag your app file to the **Import Bundle** dialog that appears.
4. Click **Submit**.

{% hint style="info" %}
If you have suggestions for new App Builder features, or general feedback about your experience using this part of Rewst, submit your thoughts to our [Canny](https://rewst.canny.io/app-builder).&#x20;
{% endhint %}
