Overview
Advanced elements provide complex functionality like dynamic lists, third-party integrations, and conditional forms. These elements unlock powerful features for sophisticated LinkApps.| Element | Use Case |
|---|---|
array | Dynamic lists of structured items (FAQs, links, products) |
integration | Connect third-party services (email marketing, etc.) |
conditionalDisplay | Show/hide elements based on other values |
file | Upload images or documents |
embedOption | Configure embedded content display |
button | Trigger actions or workflows |
Array
Dynamic array of structured inputs for collecting lists of items. Perfect for FAQs, social links, product lists, or any repeating data.Properties
| Property | Type | Description |
|---|---|---|
id | string | Unique identifier (becomes prop name) |
inputType | 'array' | Must be 'array' |
title | string | Field title |
description | string | Help text |
label | string | Label for the array |
defaultValue | array | Initial array values |
array_options | object | Array UI configuration |
array_elements | array | Element definitions for each item |
validation | object | Validation rules |
Array Options
Configure the array UI in the admin:| Property | Type | Description |
|---|---|---|
min | number | Minimum items required |
max | number | Maximum items allowed |
add_item_button_text | string | ”Add” button text (empty array) |
add_second_item_button_text | string | ”Add” button text (after first item) |
add_item_title | string | Add dialog title |
edit_item_title | string | Edit dialog title |
item_format | string | Display template (e.g., {{question}}) |
Validation
| Rule | Type | Description |
|---|---|---|
required | boolean | Array must have at least one item |
maxSize | number | Maximum items (alternative to array_options.max) |
Example: Social Links
linkapp.config.ts
app/expanded.tsx
Example: FAQ List
linkapp.config.ts
app/expanded.tsx
Conditional Display
Show or hide elements based on the value of other elements. Creates dynamic forms that adapt to user choices.Properties
| Property | Type | Description |
|---|---|---|
dependsOn | string | ID of the element this depends on |
value | string | boolean | Value that triggers display |
operator | 'equals' | 'notEquals' | 'contains' | Comparison operator (default: 'equals') |
conditionalDisplay to any element to control its visibility.
Example: Conditional Email Input
linkapp.config.ts
Example: Conditional Based on Select
linkapp.config.ts
Operators
| Operator | Description | Example |
|---|---|---|
equals | Exact match (default) | value: true shows when field is true |
notEquals | Does not match | value: "none" shows when field is not “none” |
contains | Array contains value | value: "advanced" shows if array includes “advanced” |
Integration
Connect to third-party services like email marketing platforms. Requires users to have the integration already set up in their Linktree account.Properties
| Property | Type | Description |
|---|---|---|
id | string | Unique identifier |
inputType | 'integration' | Must be 'integration' |
capability | string | Required integration capability |
vendor | string | Specific vendor identifier (optional) |
title | string | Field title |
description | string | Help text |
Example
linkapp.config.ts
Users must have the integration already connected in their Linktree account. This element lets them select which integration to use with your LinkApp.
File Upload
Upload images, documents, or other file types.Properties
| Property | Type | Description |
|---|---|---|
id | string | Unique identifier |
inputType | 'file' | Must be 'file' |
title | string | Field title |
description | string | Help text |
label | string | Input label |
accept | string[] | Accepted file types |
multiple | boolean | Allow multiple files |
validation | object | Validation rules |
Example
linkapp.config.ts
Embed Option
Configure how embedded content should display. Specialized for LinkApps that embed third-party content.Properties
| Property | Type | Description |
|---|---|---|
id | string | Unique identifier |
inputType | 'embedOption' | Must be 'embedOption' |
title | string | Field title |
description | string | Help text |
defaultValue | string | Default embed option |
Example
linkapp.config.ts
Button
Interactive button element that triggers actions.Properties
| Property | Type | Description |
|---|---|---|
id | string | Unique identifier |
inputType | 'button' | Must be 'button' |
label | string | Button text |
action | object | Action configuration |
Action Properties
| Property | Type | Description |
|---|---|---|
on | 'click' | Interaction event |
type | 'update-link' | Action type |
data.link_type | string | Link type to update to |
Example
linkapp.config.ts
Complete Example: Advanced FAQ App
Here’s a complete example using arrays and conditional display:linkapp.config.ts
Validation Strategies
Required Arrays
Array Size Limits
validation.maxSize: