All pages
Powered by GitBook
1 of 35

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Label Component

The label component allows you to display text in your app.

Overview

The label component is used to display read-only text and can be made clickable using blocks.

Labels work alongside other user interface components like buttons, images, and text inputs to create a cohesive and intuitive user experience.

Properties

You can customize your label using the following properties:

Label

Property
Value
Description
Property
Value
Description
Property
Value
Description
Property
Value
Description

To access the blocks specific to the label component:

  1. On the Design tab, add a Label component to a screen.

  2. Navigate to the Blocks tab.

  3. In the component tree on the left, click the name of the label component.

Block Image
Description

Color

Color

Color of the text that appears on the label

Font Weight

True/False

Make the label's text bold

Font Style

True/False

Make the label's text italicized

Underline

True/False

Underline the label's text

Strikethrough

True/False

Apply strikethrough formatting to the label's text. You can further select the strikethrough's color and style.

Text Align

Select from menu

Set alignment of the text relative to the label's outline

Font Size

Number

Size of the text that appears on the label

Number Of Lines

Number

Maximum amount of lines of text that your label will display

Height

number in pixels

The label's height is defined by a custom number of pixels.

Width

number in pixels

The label's width is defined by a custom number of pixels.

Resize Mode

Stretch

Stretches the label's to fit the dimensions of the device's screen.

Resize Mode

Float in Place

Renders the label in the same aspect ratio as the design, regardless of the device size.

Background Color

color

The background color of the label.

Border: Style

solid

The label's border is a solid line.

Border: Style

dotted

The label's border is a dotted line.

Border: Style

dashed

The label's border is a dashed line.

Border: Color

color

The label's border is the color selected.

Border: Width

number in pixels

The width of the label's border is defined by a custom number of pixels.

Border: Radius

number in pixels

The radius of the label border’s corners is defined by a custom number of pixels.

Shadow: Color

color

The label's shadow is the color selected.

Shadow: Opacity

number between 0 and 100

The opacity of the label's shadow.

Shadow: Radius

number in pixels

The radius of the label shadow’s corners is defined by a custom number of pixels.

Shadow: Offset

number in pixels

How far the label's shadow should be offset, in height and width, is defined by a custom number of pixels.

A drawer of label-specific blocks opens.

Set the label's font size.

Get the label's font size.

Set the label's font.

Get the label's font.

Set the label's custom font.

Get the label's custom font.

Set the label's number of lines.The number of lines property is used to work with the maximum number of lines of text that should be displayed in a label before that label starts to scroll.

Get the label's number of lines.

Set the label's line height.

Get the label's line height.

Set the label's color. Best practice is to use one of the to set this value, but HEX or RGB values may be used too.

Get the label's color.

Set the label's background color with the color of the label itself i.e. the region behind the label text. Best practice is to use one of the to set this value but HEX or RGB values may be used too.

Get the label's background color.

Set the label's font style. The font style property can be either "Normal" or "Italic".

Get the label's font style.

Set the label's font weight. The font weight value can be either "Normal", "Bold" or a value from 100 to 900

Get the label's font weight.

Set the label's Text Align. Text Align can be any of the following values: Auto, Left, Right, Center, or Justify.

Get the label's Text Align.

Set the label's border color. Best practice is to use one of the to set this value but HEX or RGB values may be used too.

Get the label's border color.

Set the label's border width.

Get the label's border width.

Set the label's height. Acceptable input values are: Number of Pixels, Percentage Height, "Fit Contents", or "Fill Container."

Get the label's height.

The Computed Height block gets the on-screen dimensions of the label, after it has been rendered on-screen. The value returned is an integer, representing the size of the label in pixels.

Set the label's width. The width blocks work with the Width property of the label component. Acceptable values are.‌

Get the label's width.

The Computed Width block gets the on-screen dimensions of the label, after it has been rendered on-screen. The value returned is an integer, representing the size of the label in pixels.

Set the label's Visibility. The visible blocks are used to show or hide the entire image component. Acceptable values are: true or false.

Get the label's Visibility.

Set the label's X coordinate.

Get the label's X coordinate.

Set the label's Y coordinate.

Get the label's Y coordinate.

Text

Text

Text that appears on the label

Font

Select from menu

Font used to display label's text

Custom Font (mobile only)*

OTF or TTF file

Font used to display label's text

Writing Direction

(iOS and web only)

Select from list [left-to-right, right-to-left]

Writing direction of your label's text

Letter Spacing

(iOS and web only)

number

X

coordinate value

Position of the upper left corner of the label on the X-axis, where the left side of the screen is X=0.

Y

coordinate value

Visible

visible

Users can see the label.

Visible

invisible

This event will fire when the user clicks on the label.

Set the label's text. This property corresponds to the text that is displayed in the label component.

Custom Fonts may only be available for Creators on certain Thunkable plans. Read more about our pricing plans here.

Advanced Properties

Layout

Style

Label Blocks

Spacing between letters of your label

Position of the upper left corner of the label on the Y-axis, where the top of the screen is Y=0.

Users cannot see the label.

Get the label's text.

color blocks
color blocks
color blocks

Data Components

Simple List Component
Data Viewer List Component
Data Viewer Grid Component
Custom Data Viewer

Image Component

The image component allows you to display pictures in your app and can be made clickable using blocks.

Overview

The image component is used to display visual content, such as pictures, icons, logos, and other types of images and can be made clickable using blocks. The image component is foundational in creating visually appealing and engaging mobile app interfaces.

Properties

You can customize your image using the following properties:

Image

Property
Value
Description
  • Center: The image is displayed at its original size within the container, and it is centered both vertically and horizontally. This means that if the image is larger than the container, parts of it may extend beyond the container's edges.

  • Cover: The image is resized to completely cover the container while maintaining its aspect ratio. This mode ensures that the entire container is filled with the image, and any excess image parts are cropped if necessary. This can result in parts of the image being clipped.

  • Contain:

When working with these resize modes, it's important to consider the context of your app's design and the type of content you're displaying. Different situations might call for different resize modes to achieve the desired visual outcome. For instance, cover might be suitable for background images, while contain could work well for displaying profile pictures. Always strive to maintain a visually pleasing and user-friendly experience while keeping the specific characteristics of each resize mode in mind.

Property
Value
Desciption
Property
Value
Description

To access the blocks specific to the image component:

  1. On the Design tab, add an Image component to a screen.

  2. Navigate to the Blocks tab.

  3. In the component tree on the left, click the name of the image component.

Block Image
Description

The image is resized to fit entirely within the container while maintaining its aspect ratio. This mode ensures that the entire image is visible within the container, and it may result in empty space around the image if the container's aspect ratio differs from the image's aspect ratio.
  • Repeat: The image is tiled or repeated to fill the entire container, both horizontally and vertically. This mode is often used for creating patterns or backgrounds that seamlessly repeat across the container.

  • Stretch: The image is resized to fully cover the container without maintaining its original aspect ratio. This can distort the image and may result in an unnatural appearance, so it's generally not recommended for most scenarios.

  • Height

    number in pixels

    The image's height is defined by a custom number of pixels.

    Width

    number in pixels

    The image's width is defined by a custom number of pixels.

    Resize Mode

    Stretch

    Stretches the image to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the image in the same aspect ratio as the design, regardless of the device size.

    Border: Color

    color

    The image's border is the color selected.

    Border: Width

    number in pixels

    The width of the image's border is defined by a custom number of pixels.

    Border: Radius

    number in pixels

    The radius of the image border’s corners is defined by a custom number of pixels.

    Shadow: Color

    color

    The image's shadow is the color selected.

    Shadow: Opacity

    number between 0 and 100

    The opacity of the image's shadow.

    Shadow: Radius

    number in pixels

    The radius of the image shadow’s corners is defined by a custom number of pixels.

    Shadow: Offset

    number in pixels

    How far the image's shadow should be offset, in height and width, is defined by a custom number of pixels.

    A drawer of image-specific blocks opens.

    Set the image component's .

    Get the image component's .

    Set the image component's filter.

    Get the image component's filter.

    Set the image component's height.

    Get the image component's height.

    Returns the height of the image component in pixels after it has been rendered on-screen.

    Set the image component's width.

    Get the image component's width.

    Returns the width of the image component in pixels after it has been rendered on-screen.

    Set whether the image component is visible on the screen.

    Get whether the image component is visible on the screen.

    Set the position image the upper left corner of the image on the X-axis, where the left side of the screen is X=0.

    Get the position of the upper left corner of the image on the X-axis, where the left side of the screen is X=0.

    Set the position of the upper left corner of the image on the Y-axis, where the top of the screen is Y=0.

    Get the position of the upper left corner of the image on the Y-axis, where the top of the screen is Y=0.

    Picture

    PNG, JPG, GIF, etc. Can also use a URL that ends in a file extension.

    The image file displayed in the image component.

    Picture Resize Mode

    Select from: cover, contain, stretch, repeat, and center.

    Define how the image is displayed if the file and the image component have different dimensions/aspect ratios. See the definitions of each setting below.

    Filter

    Select from: None, Blur, Brightness, Contrast, Grayscale, Invert, Sepia, and Opasit

    Define the filter that will be applied in the image component.

    X

    coordinate value

    Position of the upper left corner of the image on the X-axis, where the left side of the screen is X=0.

    Y

    coordinate value

    Visible

    visible

    Users can see the image.

    Visible

    invisible

    This event will fire when the user clicks on the image.

    Set the image component's Picture.

    Using SVG files might result in images not being displayed correctly.

    Picture Resize Mode

    Layout

    Style

    Image Blocks

    Position of the upper left corner of the image on the Y-axis, where the top of the screen is Y=0.

    Users cannot see the image.

    Get the image component's Picture.

    resize mode
    resize mode

    Introduction

    There are a number of ways that Modules can speed up app development or enhance apps themselves.

    • Reusable designs and functionality. Creators can use Modules to help them avoid repeating designs and blocks across multiple screens. Today, when copying sets of components, the associated blocks will not copy. However, when copying Modules that contain components, not only are the designs preserved but also the associated Blocks and functionality.

    • Blocks organization. While today you can visually collapse certain Block clusters, you may still have many blocks for variables, functions, or other blocks. By compartmentalizing them to just the components where they’re needed, you can keep your Blocks workspace more tidy and easier to understand.

    • Easier updates. Have a change for a common feature across your app? Now you can just update the Module once and it will update everywhere the feature exists within the project.

    • Shared advanced capabilities. Sometimes you want functionality that you’re unable to build or are unfamiliar with. Through Module publishing and importing, Creators will be able to share what they’ve built with one another.

    To help you get started on building Modules, we’ve assembled a small list of samples you can use directly or even remix and make your own. To view the samples, click the plus icon next to the Add Components library on the project’s Design tab.

    • Stepper. A simple user interface (UI) element that allows users to easily increment or decrement the value within a Text Input. Using its associated blocks, you can obtain the value whenever it changes or directly set the value when you need to reset it. ()

    • Sign-In/Up. When paired with a valid account, app users can create accounts and sign into the app. Simply use the Module’s “successful sign up” and “successful sign in” blocks to return the new or returning user’s Firebase UUID. ()

    • User Profile. This is a design template for displaying different app users’ details. You can remix this module and apply your own stylings. Once added to your project, you can set the profile fields directly using the available blocks or change multiple fields at once using the “set profile” block. Note that if left empty, a field will display the default value from its parameters. (

    Input Components

    )
  • In-App Notification. Customize an in-app notification to match your app's stylings. Note that in order to use this Module, you will need to place it within a Group and toggle its visibility based on when you want the notification displayed or not. ()

  • Sample Modules

    Demo project
    Firebase
    Demo Project
    The image component used in Thunkable to show the image of Billy Beaver on a mobile screen.
    Demo Project
    Demo Project

    Data Viewer Components

    Overview

    There are two data viewer components: the data viewer list and the data viewer grid. Each of these acts as a presentation layer for your data source.

    Data Viewer List Component

    Data Viewer List Component
    Example of a data viewer list.

    Data Viewer Grid Component

    Data Viewer Grid Component
    Example of a data viewer grid.

    Custom Data Viewer

    Thunkable provides various default data viewer list and data viewer grid templates, but saving a customized layout component as a data viewer allows you to display your data in a way that reflects your brand design and preferences.

    Custom Data Viewer

    Related Docs

    Data Sources

    When a data source powers your app, you can continuously update your app contents without having to republish it. It allows you to build a dynamic app that can create, read, update, and delete data. Thunkable supports Google Sheets, Airtable, Webflow, and local tables as data sources.

    Data Sources

    Data Sources Blocks

    By incorporating the data source blocks into your app, you can allow users to create, read, update, and delete data in your data source when they interact with the data viewer.

    Data Sources Blocks

    Switch Component

    Overview​

    The switch component is a two-state toggle that allows users to select between two options. It is commonly used in selecting on/off for things like sound, Bluetooth, WiFi, etc.

    Properties

    Switch

    Property
    Value
    Description

    Value

    Property
    Value
    Desciption

    To access the blocks specific to the switch component:

    1. On the Design tab, add a Switch component to a screen.

    2. Navigate to the Blocks tab.

    3. In the component tree on the left, click the name of the switch component.

    This event fires every time the switch is clicked.

    Outputs

    • newValue - returns the new value of the switch (true or false) each time the switch is clicked.

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a group component to be enabled for a user until they've typed a set number of characters into a text input component, you can use the group's dark green set group's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Height

    number in pixels

    The switch's height is defined by a custom number of pixels.

    Width

    number in pixels

    The switch's width is defined by a custom number of pixels.

    Resize Mode

    Stretch

    Stretches the switch to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the switch in the same aspect ratio as the design, regardless of the device size.

    A drawer of switch-specific blocks opens.

    True/False

    Initial value of switch

    Tint Color

    Color

    Color of background when switch is false

    On Tint Color

    Color

    Color of background when switch is true

    Thumb Tint Color

    Color

    Color of the switch's slider

    Disabled

    True/False

    Toggle whether value switch can be changed by user

    X

    coordinate value

    Position of the upper left corner of the switch on the X-axis, where the left side of the screen is X=0.

    Y

    coordinate value

    Layout

    Switch Blocks

    Event Blocks

    When Switch On Value Change

    Properties Blocks

    Position of the upper left corner of the switch on the Y-axis, where the top of the screen is Y=0.

    User Guide

    In this short guide, we will go through the entire process of creating a module and using a module within a project.

    To demonstrate all aspects of Modules, we will be creating a simple module that will show the text “Hello World” in many different styles and themes. When someone clicks on “Hello World”, the background color will change.

    When creating a module, the first step would be to plan what we want our module to do and how we want it to function.

    Planning

    First, we can think about what components we want to use first. This module will be very straightforward as we want to display text, so we will use a label component.

    Next, we want to consider how it will function. It’s important to think about Modules as a separate entity in your project. It doesn’t have any way to communicate with our project unless we make that connection.

    For this module, we want to display “Hello World” in many different styles. So we need to have a way to set “styles” or “modes”. When it comes to setting, there are two places where we can set. The first is done through Properties and is in the Designer tab. The second is done through Methods and is in the Blocks tab. Setting in the Designer tab would allow us to choose a design before the app loads while setting in the blocks lets us change the design while the app is running. For this module, we will opt for both options. Thus, we will need to create a connection for the project to tell the module what style of “Hello World” to display.

    Another aspect to consider is whether we would like any information from the module. Information can also take the form of any actions or events taking place in the module that we would like to be able to access or know of in the project. We can do this through Events and the Blocks tab. For our module, I would like to know when someone clicks on “Hello World” or when it changes.

    Although there aren’t concrete plans, it is recommended to have a general idea of what you want your module to do.

    First, we will need to create a new module.

    Now that we have a new module, let's start building our Module.

    A module’s properties can be found by clicking on the gear icon next to the Module Workspace in the component tree. Module properties can be used to pass information from the project to the module through the Designer before the app loads up.

    It is recommended that modules be published and tested throughout the development process. One important thing to note is that once we publish the module, method parameters, properties, events, and methods can not be deleted.

    Module Events can be found by clicking on the gear icon next to the Module Workspace under UI Components. Module events can be used to pass information from the module to the project. You can think of events as a doorbell. Anytime the module runs that block, a doorbell is pressed to alert the project

    As you add features and make fixes to your module, you will need to push those updates out to all the projects that imported your module already.

    Module Methods allow your project to give commands to run blocks inside your module. This is also how you can have your project pass information from your project to your module through blocks.

    Now that you have created a new feature, it is recommended to publish and test your module following the steps from and .

    Like regular projects, if there is a module that looks interesting that you would like to use, modify, or look at its components or blocks, you can remix modules in projects. Give it a try with the project and module in this guide. A link to the project can be found .

    Creating a New Module

    Starting Build

    Properties

    Publishing & Testing

    Events

    Updating

    Method

    Remixing

    Updating
    Publishing & Testing
    here

    Data Viewer List Component

    Create powerful, no-code, data-driven apps connected directly to Google Sheets, Airtable, or stored locally.

    Overview

    The data viewer components act as a display layer for the data in a connected data source. The data viewer list displays your data as a list.

    Properties

    Data Viewer List

    Property
    Value
    Description

    Data Source

    Property
    Value
    Description

    The "Item Click" event block is fired when any list item in the data viewer is clicked. It returns "row id" which corresponds to the unique Thunkable row ID of the item that was clicked. The row id is most useful when used with the the .

    The left and right swipe click events are fired when these buttons are clicked. Both return a "row id" to identify which row was clicked when using the .

    Refresh the data viewer list to sync with the connected data source.

    Set and get of the data viewer list.

    If the data viewer list isn't the best layout to display your data, one of these other options may be more appropriate:

    To access the data sources blocks, you must first connect a data source. Then, by incorporating the data source blocks into your app, you can allow users to create, read, update, and delete data in your data source when they interact with the data viewer.


    Height

    number in pixels

    Height of the data viewer list in pixels.

    Width

    number in pixels

    Width of the data viewer list in pixels.

    Resize Mode

    Stretch

    Stretches the data viewer list to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the data viewer list in the same aspect ratio as the design, regardless of the device size.

    References chosen data source

    The data source your data is pulled from.

    Table

    References chosen table in data source

    The table within your data source your data is pulled from.

    Filter View

    References filter view in table

    The filter view within your table your data is pulled from.

    Row Appearance

    Select from list

    How your data will be displayed in your app.

    Populate Data

    Select from lists

    Map your data source's columns to the fields they will be displayed in.

    Left Swipe

    True/False

    Toggle whether your end user can swipe a list item to the left to view an additional button. Reveals left swipe button settings if set to true.

    Left Swipe Button Text

    Text

    Text of left swipe button when a user swipes list item to the left.

    Left Swipe Button Text Color

    Color

    Text color of left swipe button when a user swipes list item to the left.

    Left Swipe Button Background Color

    Color

    Background color of left swipe button when a user swipes list item to the left.

    Right Swipe

    True/False

    Toggle whether your end user can swipe a list item to the right to view an additional button. Reveals right swipe button settings if set to true.

    Right Swipe Button Text

    Text

    Text of right swipe button when a user swipes list item to the right.

    Right Swipe Button Text Color

    Color

    Text color of right swipe button when a user swipes list item to the right.

    Right Swipe Button Background Color

    Color

    Background color of right swipe button when a user swipes list item to the right.

    Empty text

    Text

    Text that will be displayed if there is no data in your data source to fill a data viewer field.

    X

    coordinate value

    Location of the top left corner of the data viewer list on the X-axis, where the left-hand side is X=0.

    Y

    coordinate value

    Layout

    Blocks

    Block: When Data Viewer List Item Click

    Block: When Data Viewer List Swipe Click

    Block: In Data Viewer List Call Refresh Data

    Block: Properties

    Related Docs

    Data Viewer Components

    Data Sources Blocks

    Have feedback on this doc? Please take a moment to share your feedback here: Thunkable Docs Feedback. Your valuable insights will help us improve and better serve you in the future.

    data source blocks
    data sources blocks
    properties
    Data Viewer Grid Component
    Custom Data Viewer
    Data Sources Blocks

    Location of the top left corner of the data viewer list on the Y-axis, where the top side is Y=0.

    User Interface (UI) Components

    Overview​

    User interface (UI) components make up the visual aspect of your app. Combine, style and customize Thunkable UI components to give your app personality and style that best suits your brand.​

    Properties Panel

    Each UI component you add to your app has an associated properties panel unique to that component. Using the various settings in the properties panel, you can style and customize your Thunkable UI components to give your app personality and style that best suits your brand.

    A label's properties panel is displayed on the right in the example below. Note its unique properties, such as the label's text, font, color, etc.

    Component Tree

    The component tree can be found at the top left corner of your project's designer. The component tree contains a list of the UI components in your app. The expand and collapse arrows show or hide the nested UI components.

    Copy and Paste Components

    Once you’ve perfected a UI component on the Design tab of a drag and drop project, you can duplicate it using copy-and-paste keyboard shortcuts.

    To copy and paste a component:

    1. Click on a component name in the component tree (A) or the component within a screen in your workspace (B).

    2. Type ctrl+c or command+c on Mac, and ctrl+c on PC, to copy the component.

    3. Type ctrl+v

    You can delete UI components from the component tree or the component's properties panel.

    To delete a UI component from your project:

    1. Hover over a component's name in the component tree.

    2. Click the trash can icon.

    3. Confirm the deletion.

    To delete a UI component from your project:

    1. Click on a component name in the component tree or the component within a screen in your workspace.

    2. Click the vertical ellipsis in the upper right of the component's properties panel.

    3. Select Delete.

    Learn more about each of the UI components:

    Once you have designed the UI you want, you can start adding functionality to your app with blocks and app features!

    or
    command+v
    on Mac, and
    ctrl+v
    on PC, to paste a duplicate of the component.
  • Click and drag the new component to position it as you desire.

  • Confirm the deletion.

    Delete UI Components

    Delete UI Components - Component Tree

    Delete UI Components - Component's Properties Panel

    User Interface Components

    Next Steps

    Basic Components
    Data Components
    Input Components
    Media Components
    Embed Components
    Modules
    Thunkable Blocks Overview

    Media Components

    PDF Reader Component

    Overview

    The PDF reader component lets users view and pinch to zoom PDF documents within the app interface. It serves as a tool for displaying various types of content, such as reports, forms, contracts, or educational materials.

    Properties

    PDF Reader

    Property
    Description
    Data Type

    File

    There are two ways to set a file to display in the PDF reader.

    • Upload PDF File You can upload a PDF file as an asset in your project. If you opt for this option, be mindful of the Thunkable 50 MB app size limit.

    • Enter PDF URL Enter the URL of the PDF you want to show in your project. The link must end in .pdf.

    Property
    Description
    Data Type

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a button to be enabled for a user until they've typed a set number of characters into a text input component, you can use the button's dark green set button's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Height

    Height of PDF reader in pixels.

    Number

    Width

    Width of PDF reader in pixels.

    Number

    Resize Mode

    Define dimensions of the PDF reader component.

    Select from list [Stretch, Float in Place]

    PDF to be displayed in the PDF reader

    PDF file or URL ending in .pdf

    X

    The location of the top left corner of the PDF reader on the X-axis, where the left-hand side is X=0.

    Number

    Y

    The location of the top left corner of the PDF reader on the Y-axis, where the top side is Y=0.

    Layout

    PDF Reader Blocks

    Properties Blocks

    Number

    Animation Component

    Overview

    The animation component is powered by Lottie. It makes adding animations as easy as adding images. For designers, animations can be created in Adobe After Effects or Haiku and imported as a .json file. For the rest of us, there is a large and growing community of designers who have created free and editable animations that you can easily add to your app.

    Video Tutorial

    See a video tutorial for using animations in your Thunkable project here:

    Properties

    Animation

    Property
    Description
    Data Type
    Property
    Description
    Data Type

    This event fires when the user clicks on the animation component. You can trigger actions to occur when the animation is clicked.

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a button to be enabled for a user until they've typed a set number of characters into a text input component, you can use the button's dark green set button's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Height

    Height of animation in pixels

    Number

    Width

    Width of animation in pixels

    Number

    Resize Mode

    Define dimensions of the animation component.

    Select from list [Stretch, Float in Place]

    Animation

    The name of the JSON animation file you want to display

    Text

    Loop

    Toggle whether or not the animation loops

    True/False

    X

    Location of top left corner of animation on X-axis, where the left hand side is X=0

    Number

    Y

    Location of top left corner of animation on Y-axis, where the top side is Y=0

    Layout

    Animation Blocks

    Event Block

    When Animation Click

    Properties Blocks

    Number

    Canvas Component

    Create interactive gaming apps with the canvas component.

    Overview

    The canvas component is a touch-sensitive panel that enables the movement of objects with velocity, collisions, and the ability to bounce off each other. It is most often used to create dynamic games and experiences that involve touching the device’s screen.

    Adding a Canvas

    To add a canvas to your app, drag and drop the canvas component into the app builder.

    When you click on the Canvas in your component tree, Canvas tab will appear. Click on this tab to customize your canvas

    The three elements of a Canvas are the Stage, the Sprites, and the Canvas Label.

    The Stage

    The Stage is the background of your Canvas. You can set a background color or background picture, a border color, and the stage's Height and Width. You can click and drag your Sprites on the stage in the Canvas tab.

    You can set Gravity of the Stage along the X and Y axis. The Sprites on the stage can be toggled to ignore gravity or not. If a Sprite is affected by gravity, it will be pulled in the direction of the gravity.

    Your Canvas Stage will automatically scale up in order to match the size of the device screen. If the aspect ratio of the Stage does not match the aspect ratio of the device, you can use Stage Scaling Mode to resize the background to fill the device screen.

    Scale: The aspect ratio of the background will be maintained, and the background will be scaled up. May result in some of the background being cropped.

    Stretch: The background image will be stretch in order to fill the screen. May result in the background image being distorted.

    Select how you want your background image to be centered when it is scaled to match the device screen.

    Can be set to center, center horizontally only, center vertically only, or none.

    You can enable Touch Drawing on your Screen. You can set the Drawing Color to choose the color you draw in. You can set the Drawing Width to choose the thickness of the line you draw on the stage.

    You can add multiple stages to a Canvas component, in the same way you can add multiple Screens to an app project. when you have selected your Canvas tab, click on the + next to your Stage name to add another Stage to the Canvas.

    Each Stage has its own Sprites, background color, gravity, etc.

    Gravity

    Stage Scaling Mode

    Stage Alignment

    Touch Drawing

    Multiple Stages

    Behavior of Sprite when Y Gravity = 100, X Gravity = 0
    Behavior of Sprite when Y Gravity = 0, X Gravity = 100
    Behavior of Sprite when Y Gravity = 100, X Gravity = 100

    Rich Text Component

    Overview

    The Rich Text component is used to compose and display formatted text, and can also be made clickable using blocks.

    Rich Text works alongside other user interface components like buttons, images, and text inputs to create a cohesive and intuitive user experience.

    Properties

    You can customize your Rich Text component using the following properties:

    Rich Text

    Property
    Value
    Description
    Property
    Value
    Description
    Property
    Value
    Description

    To access the blocks specific to the Rich Text component:

    1. On the Design tab, add a Rich Text component to a screen.

    2. Navigate to the Blocks tab.

    3. In the component tree on the left, click the name of the Rich Text component.

    Block Image
    Description

    True/False

    Make the text bold

    Color

    Color

    Color of the text that appears on the component

    Highlight Color

    Color

    The color in which to highlight the text

    Strikethrough

    True/False

    Draw a line through the select text

    Underline

    True/False

    Underline the selected text

    Italic

    True/False

    Make the selected text italicized

    Text Align

    Select from menu

    Set alignment of the text relative to the outline

    Line Spacing

    Number

    Maximum amount of lines of text that will display

    Visible

    True/False

    Display or hide the component

    Height

    number in pixels

    The Rich Text component's height is defined by a custom number of pixels.

    Width

    number in pixels

    The Rich Text component's width is defined by a custom number of pixels.

    Resize Mode

    Stretch

    Stretches the Rich Text component to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the Rich Text component in the same aspect ratio as the design, regardless of the device size.

    Background Color

    color

    The background color of the Rich Text.

    Border: Style

    solid

    The Rich Text component's border is a solid line.

    Border: Style

    dotted

    The Rich Text component's border is a dotted line.

    Border: Style

    dashed

    The Rich Text component's border is a dashed line.

    Border: Color

    color

    The Rich Text component's border is the color selected.

    Border: Width

    number in pixels

    The width of the Rich Text component's border is defined by a custom number of pixels.

    Border: Radius

    number in pixels

    The radius of the Rich Text component's border’s corners is defined by a custom number of pixels.

    Shadow: Color

    color

    The Rich Text component's shadow is the color selected.

    Shadow: Opacity

    number between 0 and 100

    The opacity of the Rich Text component's shadow.

    Shadow: Radius

    number in pixels

    The radius of the Rich Text component's shadow’s corners is defined by a custom number of pixels.

    Shadow: Offset

    number in pixels

    How far the Rich Text component's shadow should be offset, in height and width, is defined by a custom number of pixels.

    A drawer of Rich-Text-specific blocks opens.

    Replace any text with the provided string. This will set it to the “default component styling” (no modifiers).

    Get the component's text.

    Set the background color of the component.

    Get the background color.

    Set the height of the component.

    Get the height of the component.

    The Computed Height block gets the on-screen dimensions of the component, after it has been rendered on-screen. The value returned is an integer, representing the size of the Rich Text component in pixels.

    Set the width of the component.

    Get the width of the component.

    The Computed Width block gets the on-screen dimensions of the Rich Text component, after it has been rendered on-screen. The value returned is an integer, representing the size of the Rich Text component in pixels.

    Choose whether to display or hide the component.

    Get the True or False value for the Visible state.

    Set the position of the component on the X-Axis, where the left side of the screen is X=0.

    Get the position of the component on the X-Axis.

    Set the position of the component on the Y-Axis, where the top of the screen is Y=0.

    Get the position of the component on the Y-Axis.

    Set the font of the component's text.

    Set the font size of the component's text.

    Make all the text Bold or Normal.

    Set all the text to Italic.

    Underline all the text.

    Draw a line through all the text.

    Highlight all the text in a specific color.

    Set the line spacing.

    Set all the text to a specific color.

    Set the component's Text Align. Text Align can be any of the following values: Auto, Left, Right, Center, or Justify.

    Text

    Text

    Text that appears on the Rich Text Component

    Font

    Select from menu

    Font used to display component's text

    Font Size

    Number

    Size of the text

    X

    coordinate value

    Position of the upper left corner of the Rich Text component on the X-axis, where the left side of the screen is X=0.

    Y

    coordinate value

    Visible

    visible

    Users can see the Rich Text.

    Visible

    invisible

    This event will fire when the user clicks on the Rich Text.

    Removes all text from the component.

    Reset all text formatting (including paragraph modifiers) to the default styling (i.e., the styling that a brand new Rich Text component has before it is modified).

    Using Custom Fonts may only be available for Creators on certain Thunkable plans. Please refer to our pricing page for more information: Thunkable pricing.

    Layout

    Style

    Rich Text Blocks

    Font Weight

    Position of the upper left corner of the Rich Text component on the Y-axis, where the top of the screen is Y=0.

    Users cannot see the Rich Text.

    Simple List Component

    The Simple List component allows you to add, view and click on items in a list.

    Overview

    Simple lists are used to organize and display information in an easy-to-read format. They help present data or options in a structured manner, making it convenient for users to scan through and find what they need quickly. Think of a list as a tidy way to show items like contacts, tasks, or menu options, saving space and making navigation smoother within an app.

    Properties

    You can customize the Simple List with the following properties:

    Simple List

    Property
    Description
    Data Type
    Property
    Description
    Data Type
    Property
    Description
    Data Type
    Property
    Description
    Data Type

    To access the blocks specific to the simple list component:

    1. On the Design tab, add a Simple List component to a screen.

    2. Navigate to the Blocks tab.

    3. In the component tree on the left, click the name of the simple list component.

    This event fires and performs an action when the user clicks on an item within a simple list component.

    Outputs

    Name
    Description
    Data Type

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a group component to be enabled for a user until they've typed a set number of characters into a text input component, you can use the group's dark green set group's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Sample Blocks Combinations: Set Simple List's Text Items to

    There are various ways you can define the items in a list using blocks. Using the "set simple list's text items to" block, you can:

    • Type each list item.

    • Make the list from a string of text.

    • Pull list items from a column of a connected . This method allows you to create a dynamic simple list where the information displayed to the user changes whenever you change your cloud-based data in the data source.

    Set font size of Text Items

    Number

    Show Arrow

    Toggle whether arrow is shown beside text items

    True/False

    Height

    Set the Height of your Simple List in pixels

    Number

    Width

    Set the Width of your Simple List in pixels

    Number

    Resize Mode

    Define dimensions of the Simple List component/container

    Select from list [Stretch, Float in Place]

    Border Color

    Set color of Simple List's border

    Color

    Border Width

    Set width of Simple List's border in pixels

    Number

    Border Radius

    Set radius of corners for Simple List's border in pixels

    Number

    Shadow Color

    Color of Simple List's shadow

    Color

    Shadow Opacity

    Opacity of Simple List's shadow

    Number between 0 and 100

    Shadow Radius

    Radius of corners of Simple List's shadow in pixels

    Number

    Shadow Offset

    How far Simple List's shadow should be offset, in Height and Width, in pixels

    Number

    A drawer of simple list-specific blocks opens.

    Text Items

    Set text items of Simple List

    List of text items

    Color

    Set font color of Text Items

    Color

    Background Color (text items)

    Set background color for the items in the Simple List

    Color

    Writing Direction (iOS and web app only)

    Set writing direction of text items

    Select from list [auto, ltr, rtl]

    Background Color (container)

    Set the background color of the Simple List container.

    X

    Set the location of your Simple List on the X-axis in pixels

    Number

    Y

    Set the location of your Simple List on the Y-axis in pixels

    Visible

    Toggle whether your end users can see the Simple List

    True/False

    Border Style

    Set style of Simple List's border

    Item

    Text of selected item

    String

    Index

    Position of item in simple list (starting with 1)

    Advanced Properties

    Layout

    Style

    Simple List Blocks

    Event Block

    When Simple List Item Click

    Properties Blocks

    On Android devices, it is a known limitation that it is not possible to have three levels of nested scrollable components. If your list doesn't scroll you have to set at most one component as scrollable or only the screen scrollable outside of the simple list component.

    Have feedback on this doc? Please take a moment to share your feedback here: Thunkable Docs Feedback. Your valuable insights will help us improve and better serve you in the future.

    data source

    Font Size

    Color

    Number

    Select from list [solid, dotted, dashed]

    Number

    Data Viewer Grid Component

    Create powerful, no-code, data-driven apps connected directly to Google Sheets, Airtable, or stored locally.

    Overview

    The data viewer components act as a display layer for the data in a connected data source. The data viewer grid displays your data in a grid.

    Properties

    Data Viewer Grid

    Property
    Value
    Description

    Data Source

    Property
    Value
    Description

    The "Item Click" event block is fired when any grid item in the data viewer is clicked. It returns "row id" which corresponds to the unique Thunkable row ID of the item that was clicked. The row id is most useful when used with the the .

    Refresh the data viewer grid to sync with the connected data source.

    Set and get of the data viewer grid.

    If the data viewer grid isn't the best layout to display your data, one of these other options may be more appropriate:

    To access the data sources blocks, you must first connect a data source. Then, by incorporating the data source blocks into your app, you can allow users to create, read, update, and delete data in your data source when they interact with the data viewer.


    Height

    number in pixels

    Height of the data viewer grid in pixels.

    Width

    number in pixels

    Width of the data viewer grid in pixels.

    Resize Mode

    Stretch

    Stretches the data viewer grid to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the data viewer grid in the same aspect ratio as the design, regardless of the device size.

    References chosen data source

    The data source your data is pulled from.

    Table

    References chosen table in data source

    The table within your data source your data is pulled from.

    Filter View

    References filter view in table

    The filter view within your table your data is pulled from.

    Grid Appearance

    Select from list

    How your data will be displayed in your app.

    Populate Data

    Select from lists

    Map your data source's columns to the fields they will be displayed in.

    Horizontal Scroll

    True/False

    True - data viewer scrolls horizontally

    False - data viewer scrolls vertically

    Empty text

    Text

    Text that will be displayed if there is no data in your data source to fill a data viewer field.

    X

    coordinate value

    Location of the top left corner of the data viewer grid on the X-axis, where the left-hand side is X=0.

    Y

    coordinate value

    Layout

    Blocks

    Block: When Data Viwer Grid Item Click

    Block: In Data Viewer Grid Call Refresh Data

    Block: Properties

    Related Docs

    Data Viewer Components

    Data Sources Blocks

    Have feedback on this doc? Please take a moment to share your feedback here: Thunkable Docs Feedback. Your valuable insights will help us improve and better serve you in the future.

    data source blocks
    properties
    Data Viewer List Component
    Custom Data Viewer
    Data Sources Blocks

    Location of the top left corner of the data viewer grid on the Y-axis, where the top side is Y=0.

    Checkbox Component

    The checkbox component allows users to select one or more options from a set. They're like little digital checkboxes you see when you want to choose multiple options simultaneously, such as selecting items in a to-do list or filtering search results. These components play a pivotal role in enhancing user experience by providing a clear and intuitive way for users to select various options. They offer visual feedback, showing users what's currently selected and what's not, which is crucial for clarity and ease of use within an app.

    Name
    Description
    Data Type

    Video Component

    The video component lets you play videos in your app.

    The ability to showcase videos within a mobile application enriches user experiences and enhances engagement. The video component allows your users to play, pause, rewind, or fast-forward videos that you have uploaded to your app or linked to with a URL. The videos can be stored in the or your project.

    To add a video to your project:

    1. Drag and drop a video component onto the screen.

    Custom Data Viewer

    Thunkable provides various default and templates, but saving a customized layout component as a data viewer allows you to display your data in a way that reflects your brand design and preferences.

    In this tutorial, we’ll show you how to customize a Thunkable data viewer so you can display your data in a way that meets your user’s needs and reflects your brand design.

    1. When you're happy with the layout you have customized, ensure it is selected in the component tree.

    True - checked False - unchecked

    True/False

    Disabled

    Toggle whether the value of the checkbox can be changed by user.

    True/False

    Color

    Background color of the checkbox when it is checked.

    Color

    Unchecked Color

    Color of the checkbox's perimeter when it is unchecked.

    Color

    Property
    Description
    Data Type

    X

    Location of top left corner of checkbox on X-axis, where the left hand side is X=0

    Number

    Y

    Location of top left corner of checkbox on Y-axis, where the top side is Y=0

    This event fires every time the checkbox component is clicked.

    Outputs

    • newValue - returns the new value of the checkbox (true or false) each time the checkbox is clicked.

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a group component to be enabled for a user until they've typed a set number of characters into a text input component, you can use the group's dark green set group's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Overview​

    Properties

    Checkbox

    Examples of uncheck and checked checkboxes.

    Value

    Layout

    Checkbox Blocks

    Events Blocks

    When Checkbox On Value Change

    Properties Blocks

    In the video component's properties panel, click in the video input field.
  • You have two options for adding a video: Upload Video File You can upload a video file as an asset in your project. If you opt for this option, be mindful of the Thunkable 50 MB app size limit. Enter Video URL Enter the URL of the video you want to show in your project. The link must end in .mp4, .mov, etc., so videos uploaded to YouTube and other video-sharing sites may not work.

  • Name
    Description
    Data Type

    Video

    The video users can play within your app.

    Uploaded video file or the video's URL.

    Play

    Toggle whether or not video file auto-plays when the screen opens.

    Property
    Description
    Data Type

    X

    Location of top left corner of video component on X-axis, where the left hand side is X=0.

    Number

    Y

    Location of top left corner of video component on Y-axis, where the top side is Y=0.

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a button to be enabled for a user until they've typed a set number of characters into a text input component, you can use the button's dark green set button's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Overview

    Add a Video to Your Project

    cloud

    The video component is not recommended for streaming live video content.

    Properties

    Video

    Layout

    Video Blocks

    Properties Blocks

    Click the vertical ellipsis next to the layout's name in the properties panel.
  • Select Save as Data Viewer Layout.

  • Give your data viewer layout a detailed name.

  • Select the Layout Type you want to create. - List for a data viewer list - Grid for a data viewer grid

  • Click OK.

    1. Click the Create New Screen icon at the top of the component tree in the Designer.

    2. Drag a Data Viewer List or Data Viewer Grid component onto your screen.

    3. Reposition and resize as necessary.

    4. Connect your project to a data source. See here for instructions on connecting a data source: .

    5. Click the sample template to access the data viewer templates available to you.

    6. Click to select the layout you saved as a data viewer from the bottom of the template library.

    7. Map your data source columns to components within your custom data viewer layout.

    Custom data viewers are created using Thunkable’s layout component, which allow for more precise positioning of UI components on an app screen.

    By incorporating the data source blocks into your app, you can allow users to create, read, update, and delete data in your data source when they interact with the data viewer.

    Overview

    Video Tutorial

    How to Customize a Data Viewer in Thunkable

    To Save a Layout as a Data Viewer:

    data viewer list
    data viewer grid

    A custom data viewer is designed to view data. It is not intended to receive user inputs. As such, we recommend that input components such as the text input and button, for example, are not included in a custom data viewer layout.

    To Use a Saved Layout as a Data Viewer:

    Related Docs

    Layout Component

    Data Sources Blocks

    Layout Component
    Data Sources Blocks

    True/False

    Number

    Height

    Height of video component in pixels.

    Number

    Width

    Width of video component in pixels.

    Number

    Resize Mode

    Define the dimensions of the video component.

    Select from list [Stretch, Float in Place]

    Number

    Height

    Height of checkbox in pixels

    Number

    Width

    Width of checkbox in pixels

    Number

    Resize Mode

    Define dimensions of the checkbox component.

    Select from list [Stretch, Float in Place]

    Data Sources

    Embed Components

    Date Input Component

    Overview

    The date input component allows users to easily select dates. It's like a digital calendar where users can pick dates for appointments, deadlines, or any time-related tasks within an app. These components are essential because they simplify entering dates, reducing errors and ensuring accuracy. The date input component utilizes the native Android and iOS date pickers.

    Native Android date picker on the left and iOS on the right.

    Properties

    Date Input

    Property
    Description
    Data Type
    Property
    Description
    Data Type
    Property
    Description
    Data Type

    You can trigger actions to happen when an event occurs.

    This event fires when the user has selected a date using the date picker.

    Returns the date from the date picker in the format Mon., DD, YYYY.

    Returns the date from the date picker in numeric form. For example, if the user selects February 17, 2024, this block returns 17. If they select 5 March 2025, this block returns 5.

    Returns the month from the date picker in numeric form. For example, if the user selects February 17, 2024, this block returns 2. If they select 5 March 2025, this block returns 3.

    Returns the year from the date picker in YYYY form.

    Opens the date picker to prompt the user to enter a date.

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a group component to be enabled for a user until they've typed a set number of characters into a text input component, you can use the group's dark green set group's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Height

    Height of date input in pixels

    Number

    Width

    Width of date input in pixels

    Number

    Resize Mode

    Define dimensions of the date input component.

    Select from list [Stretch, Float in Place]

    Border Color

    Color of border (only visible if border width > 0)

    Color

    Border Width

    Width of border around date input in pixels

    Number

    Border Radius

    Radius of corners of border on date input in degrees

    Number

    Shadow Color

    Color of date input's shadow

    Color

    Shadow Opacity

    Opacity of date input's shadow

    Number between 0 and 100

    Shadow Radius

    Radius of corners of date input's shadow in pixels

    Number

    Shadow Offset

    How far date input's shadow should be offset, in height and width, in pixels

    Number

    Style

    Format to use when displaying selected date

    Select from menu [YYYY-MM-DD, MM/DD/YYYY, M/D/YY, Month Day, Year, Mth. Day, Year]

    Font Size

    Size of font when displaying date

    Number

    Font Style

    Make the date's text italicized

    True/False

    Font Weight

    Make the date's text bold

    True/False

    Color

    Color of font when displaying date

    Color

    X

    Location of top left corner of date input on X-axis, where the left hand side is X=0

    Number

    Y

    Location of top left corner of date input on Y-axis, where the top side is Y=0

    Visible

    Toggle whether your end users can see the date input

    True/False

    Border Style

    Set whether border style is solid, dotted or dashed (only visible if border width > 0)

    Layout

    Style

    Date Input Blocks

    Event Blocks

    When Date Input Date Picked

    Function Blocks

    Call Date Input's Get Date

    Call Date Input's Get Day

    Call Date Input's Get Month

    Call Date Input's Get Year

    Call Date Input's Launch Picker

    Properties Blocks

    Number

    Select from list [solid, dotted, dashed]

    Slider Component

    The slider component is a horizontal track with a control, called a thumb, that app users can adjust between a minimum and maximum value. As a slider’s value changes, the portion of track between the minimum value and the thumb fills with color.

    Property
    Value
    Description

    Button Component

    When you tap on the play icon to hear your favourite music, you are using a button.

    The button component gives your user familiar ways to start actions in your app. Examples include navigating between app screens, submitting user inputs, and triggering a device’s camera to take a photo.

    In the block combination below, when a user clicks Button1 they will be taken to, or navigate to, Screen2.

    In this tutorial, you’ll learn how to use the “navigate to” block to allow your app’s users to navigate between app screens with a simple button click.

    Property
    Value

    Initial value of the slider

    Step

    Number

    Step between values on the slider

    Minimum Value Range

    Number

    Minimum value the user can select. Must be less than Maximum Value.

    Maximum Value Range

    Number

    Maximum value the user can select. Must be greater than Minimum Value.

    Min Track

    Color

    Color of slider track between minimum value and current value

    Max Track

    Color

    Color of slider track between current value and maximum value

    Thumb Color

    Color

    Color of the slider thumb widget

    Disabled

    True/False

    A disabled component is temporarily inactive and cannot be interacted with by the user.

    Property
    Value
    Desciption

    X

    coordinate value

    Position of the upper left corner of the slider on the X-axis, where the left side of the screen is X=0.

    Y

    coordinate value

    Property
    Value
    Description

    Visible

    visible

    Users can see the slider.

    Visible

    invisible

    To access the blocks specific to the slider component:

    1. On the Design tab, add a Slider component to a screen.

    2. Navigate to the Blocks tab.

    3. In the component tree on the left, click the name of the slider component.

    4. A drawer of slider-specific blocks opens.

    Block Image
    Description

    This event fires as the value of the slider changes. Returns the current value of the slider.

    This event fires when the user lifts their finger or thumb off the slider. Returns the current value of the slider.

    Value

    Overview

    Properties

    Slider

    Number

    Layout

    Style

    Blocks

    Description

    Text

    Text

    Text displayed on the button.

    Font

    Select from font menu

    Font for the button's text.

    Custom Font (mobile only)*

    Upload TTF or OTF file

    Font for the button's text.

    Property
    Value
    Description

    X

    coordinate value

    Position of the upper left corner of the button on the X-axis, where the left side of the screen is X=0.

    Y

    coordinate value

    Property
    Value
    Description

    Visible

    visible

    Users can see the button.

    Visible

    invisible

    Property
    Value
    Description

    Navigate to screen

    none

    When users click on the button there is no navigation to another screen.

    Navigate to screen

    screen name

    To access the blocks specific to the button component:

    1. On the Design tab, add a Button component to a screen.

    2. Navigate to the Blocks tab.

    3. In the component tree on the left, click the name of the button component.

    4. A drawer of button-specific blocks opens.

    Block Image
    Description

    This event fires when a user taps (or clicks) the button.

    This event fires when a user presses and holds the button for an extended period of time.

    Overview

    Video Tutorial

    How to Change Thunkable Screens with a Button Click

    Properties

    Button

    Navigate to a different screen

    * Uploading a custom font may only be available for Creators on certain Thunkable plans. Please refer to our for more information.

    ** Raised is no longer supported. Please use Shadows under Style instead.

    Layout

    Style

    Navigation

    Button Blocks

    Have feedback on this doc? Please take a moment to share your feedback here: . Your valuable insights will help us improve and better serve you in the future.

    Position of the upper left corner of the slider on the Y-axis, where the top of the screen is Y=0.

    Height

    number in pixels

    The slider's height is defined by a custom number of pixels.

    Width

    number in pixels

    The slider's width is defined by a custom number of pixels.

    Resize Mode

    Stretch

    Stretches the slider to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the slider in the same aspect ratio as the design, regardless of the device size.

    Users cannot see the slider.

    Border: Color

    color

    The slider's border is the color selected.

    Border: Width

    number in pixels

    The width of the slider's border is defined by a custom number of pixels.

    Border: Radius

    number in pixels

    The radius of the slider border’s corners is defined by a custom number of pixels.

    Shadow: Color

    color

    The slider's shadow is the color selected.

    Shadow: Opacity

    number between 0 and 100

    The opacity of the slider's shadow.

    Shadow: Radius

    number in pixels

    The radius of the slider shadow’s corners is defined by a custom number of pixels.

    Shadow: Offset

    number in pixels

    How far the slider's shadow should be offset, in height and width, is defined by a custom number of pixels.

    Set the slider's minimum value.

    Get the slider's minimum value.

    Set the slider's maximum value.

    Get the slider's maximum value.

    Set the slider's initial value.

    Get the slider's initial value.

    Set the slider's step value.

    Get the slider's step value.

    Set the slider component's height.

    Get the slider component's height.

    Returns the height of the slider component in pixels after it has been rendered on-screen.

    Set the slider component's width.

    Get the slider component's width.

    Returns the width of the slider component in pixels after it has been rendered on-screen

    Set whether the slider component is visible on the screen.

    Get whether the slider component is visible on the screen.

    Set the position of the upper left corner of the slider on the X-axis, where the left side of the screen is X=0.

    Get the position of the upper left corner of the slider on the X-axis, where the left side of the screen is X=0.

    Set the position of the upper left corner of the slider on the Y-axis, where the top of the screen is Y=0.

    Get the position of the upper left corner of the slider on the Y-axis, where the top of the screen is Y=0.

    Set the slider's minimum track tint color i.e. the color of the track the slider when set to its lowest value.

    Get the slider's minimum track tint color

    Set the slider's minimum track tint color i.e. the color of the track the slider when set to its highest value.

    Get the slider's maximum track tint color

    Set the slider's disabled value (true/false).

    Get the slider's disabled value (true/false).

    Set the slider's thumb tint color i.e. the color of the thumb at any given position.

    Get the slider's thumb tint color.

    Text Color

    Color

    Color for the button's text.

    Font Bold

    True/False

    True = button's text is bold. False = button's text is not bold.

    Font Italic

    True/False

    True = button's text is italic. False = button's text is not italic.

    Raised**

    True/False

    True = button has a shadow. False = button does not have a shadow.

    Font Size

    Number

    Font size of the button's text.

    Disabled

    True/False

    True = button is disabled for the user by default. False = button is enabled for the user by default.

    Position of the upper left corner of the button on the Y-axis, where the top of the screen is Y=0.

    Height

    number in pixels

    The button's height is defined by a custom number of pixels.

    Width

    number in pixels

    The button's width is defined by a custom number of pixels.

    Resize Mode

    Stretch

    Stretches the button to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the button in the same aspect ratio as the design, regardless of the device size.

    Users cannot see the button.

    Background Color

    color

    The background color of the button.

    Border: Style

    solid

    The button's border is a solid line.

    Border: Style

    dotted

    The button's border is a dotted line.

    Border: Style

    dashed

    The button's border is a dashed line.

    Border: Color

    color

    The button's border is the color selected.

    Border: Width

    number in pixels

    The width of the button's border is defined by a custom number of pixels.

    Border: Radius

    number in pixels

    The radius of the button border’s corners is defined by a custom number of pixels.

    Shadow: Color

    color

    The button's shadow is the color selected.

    Shadow: Opacity

    number between 0 and 100

    The opacity of the button's shadow.

    Shadow: Radius

    number in pixels

    The radius of the button shadow’s corners is defined by a custom number of pixels.

    Shadow: Offset

    number in pixels

    How far the button's shadow should be offset, in height and width, is defined by a custom number of pixels.

    When users click on the button they navigate to the selected screen.

    This event fires when a user initially touches the button. It is the moment when the user's finger (or stylus) makes contact with the touchscreen.

    This event fires when a user lifts their finger (or stylus) off the screen or releases the press on the button. It represents the moment when the user's interaction with the button ends.

    Set the text that is displayed on the button.

    Get the text that is displayed on the button.

    Set the color of the text that is displayed on the button.

    Get the color of the text that is displayed on the button.

    Set the font size of the text that is displayed on the button.

    Get the font size of the text that is displayed on the button.

    Set the custom font of the text that is displayed on the button.

    Get the custom font of the text that is displayed on the button.

    Set the button's background color by connecting a color, or a text with a color in RGBA "rgba(93, 122, 252, 100)" or Hex "#5D7AFC".

    Get the button's background color. By default, it returns the color in RGBA. If you set it using the set color block with Hex, it returns Hex.

    Set the button's background picture. Click the dropdown menu to select an image from your computer.

    Get the button's background picture.

    Set the button's background picture resize mode.

    Get the button's background picture resize mode.

    Set the button's height in pixels.

    Get the button's height in pixels.

    Gets the button's computed height, the on-screen dimensions of the button, after it has been rendered on-screen. The value returned is an integer, representing the button's height in pixels.

    Set the button's width in pixels.

    Get the button's width in pixels.

    Gets the button's computed width, the on-screen dimensions of the button, after it has been rendered on-screen. The value returned is an integer, representing the button's width in pixels.

    When set to true, the button is visible to users.

    When set to false, the button is invisible to users.

    Gets the button's visibility status. Returns true (visible) or false (invisible).

    Set the position of the upper left corner of the button on the X-axis, where the left side of the screen is X=0.

    Get the position of the upper left corner of the button on the X-axis, where the left side of the screen is X=0.

    Set the position of the upper left corner of the button on the Y-axis, where the top of the screen is Y=0.

    Get the position of the upper left corner of the button on the Y-axis, where the top of the screen is Y=0.

    Set the font of the text displayed on the button to bold.

    Get the color of the text that is displayed on the button. tbd

    Set the font of the text displayed on the button to italics.

    Get whether the font of the text displayed on the button is italics.

    Set the font of the text displayed on the button to raised.

    Get whether the font of the text displayed on the button is raised.

    When set to true, the button is disabled or inactive for users.

    When set to false, the button is not disabled, it is active for users.

    Get the button's disabled status.

    pricing page
    Thunkable Docs Feedback

    Text Input Component

    The text input allows the person using your app to type in anything that they want such as words, passwords or numbers.

    Overview

    The text input component is a field where app users can enter text, such as a name or email address.

    Video Tutorial

    How to Implement Text Input Validation in Thunkable

    In this tutorial, we’ll implement text input validation to disable a button until text input conditions are met.

    You need to make your screen scrollable to prevent the text input from moving up when the keyboard appears.

    Properties

    Text Input

    Property
    Data Type
    Description
    Property
    Value
    Description
    Property
    Value
    Description
    Property
    Value
    Description

    To access the blocks specific to the text input component:

    1. On the Design tab, add a Text Input component to a screen.

    2. Navigate to the Blocks tab.

    3. In the component tree on the left, click the name of the text input component.

    This event fires when the user clicks on the text input component.

    This event fires when the component loses focus, i.e. the user clicks on another component.

    This event fires when the enter or submit button is pressed on the device keyboard.

    This event fires whenever a character is added to or removed from the text input (i.e. whenever there is a change to the content of the text input).

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a button to be enabled for a user until they've typed a set number of characters into a text input component, you can use the button's dark green set button's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Auto Focus

    true/false

    Toggle whether the text input field is automatically in focus when the screen opens (i.e. the user doesn't need to tap into the field to focus).

    Max Length (Android and iOS only)

    number

    Set the maximum number of characters of text your user can enter. Mobile only

    Clear Button Mode (iOS only)

    select from list [never, while-editing, unless-editing, always]

    Toggle when an iOS user has the option to clear the text input's text.

    Input Color

    Color

    The color of the text input's text.

    Background Color

    color

    The background color of the text input field.

    Hint Text Color

    color

    The color of the text input's hint.

    Selection Color (Android and iOS only)

    color

    The highlight color when a user selects a section of text.

    Height

    number in pixels

    The text input's height is defined by a custom number of pixels.

    Width

    number in pixels

    The text input's width is defined by a custom number of pixels.

    Resize Mode

    Stretch

    Stretches the text input to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the text input in the same aspect ratio as the design, regardless of the device size.

    Border Color

    color

    Color of text input's border.

    Border Width

    number in pixels

    The width of the text input's border is defined by a custom number of pixels.

    Border Radius

    number in pixels

    The radius of the text input's border’s corners is defined by a custom number of pixels.

    Shadow Color

    color

    The text input's shadow is the color selected.

    Shadow Opacity

    number between 0 and 100

    The opacity of the text input's shadow.

    Shadow Radius

    number in pixels

    The radius of the text input's shadow’s corners is defined by a custom number of pixels.

    Shadow Offset

    number in pixels

    How far the text input's shadow should be offset, in height and width, is defined by a custom number of pixels.

    A drawer of text input-specific blocks opens.

    Hint

    text

    The prompt text the user sees when the text input is empty (eg. Type Email).

    Text

    text

    Populated text of the text input.

    Keyboard

    select from list [default, email address, numeric, phone pad]

    The keyboard style provided to a user when they tap into the text input. If none are selected, it will be the default standard keyboard.

    Secure Text Entry

    true/false

    Toggle whether the input text is obscured as a user types (suitable for entering passwords and other sensitive information).

    Font

    text

    Set the font for the hint and text properties. Options can be found here: Google Fonts.

    Font Italic (web app only)

    true/false

    Select whether hint and text are shown in italics.

    Underline (web app only)

    true/false

    Select whether the hint and text are underlined.

    Strikethrough (web app only)

    true/false

    Apply strikethrough formatting to the hint and text.

    Writing Direction (iOS and web app only)

    select from icons

    Set whether text should be written left-to-right or right-to-left.

    Font Size

    number in pixels

    Set whether text should be written left-to-right or right-to-left.

    Letter Spacing

    number in pixels

    Spacing between letters in pixels.

    Editable

    true/false

    Toggle whether the user can edit the text.

    Multiline

    true/false

    X

    coordinate value

    Position of the upper left corner of the text input on the X-axis, where the left side of the screen is X=0.

    Y

    coordinate value

    Visible

    true/false

    Toggle whether users can see the text input.

    Border Style

    select from list [solid, dotted, dashed]

    Advanced Properties

    Layout

    Style

    Text Input Blocks

    Event Blocks

    When Text Input Click

    When Text Input Unfocus

    When Text Input Submit

    When Text Input Changes

    Properties Blocks

    Toggle whether the user can enter multiple lines of text.

    Position of the upper left corner of the text input on the Y-axis, where the top of the screen is Y=0.

    Style of text input's border.

    Map Component

    Overview

    The Map component lets you show an area of a Google map to the user. You can add markers, polylines, and polygons to this map.

    Properties

    Add Google Maps API Key

    You can live-test your app without adding your unique Google Maps API keys, but you need to add them if you want to download or publish your app.

    Generate a Google Maps API Key

    To generate your personal Google Maps API key, you need to:

    1. Create a Google Cloud project for your app.

    2. Create a billing account or enable billing for the project.

    3. Click Enable to enable the Maps SDK for Android or Maps SDK for iOS.

    4. Select Enable all Google Maps APIs for this project.

    5. Copy the provided API key.

    For more detailed instructions, please see here: .

    Once you've generated your Google Maps API keys, you can add them to your Thunkable project. Click the gear icon on the left of your project's designer tab to access your . Scroll to the Google Map Settings section and paste your Android and iOS API keys into the corresponding fields.

    Property
    Description
    Data Type
    Property
    Description
    Data Type
    Property
    Description
    Data Type
    Property
    Description
    Data Type

    The map has several events. You can trigger actions to happen when these events occur.

    This event happens when the Map has loaded in your app.

    This is a good time to add any markers, polylines or polygons to your app that you want the user to see as soon as your app opens.

    GeoJSON is a format for encoding geographical data structures that is based on the JSON (JavaScript Object Notation) format. It is a lightweight and versatile format that is widely used for storing and exchanging spatial data. GeoJSON provides you with a simple and flexible way to add geographic data to your Google Maps app, making it easy to create engaging and informative map-based applications.

    Incorporating GeoJSON in your Thunkable Map component allows you to draw lines, shapes (rectangles, triangles, squares, and custom shapes), and markers on the map.

    To use the Add GeoJSON block:

    1. On the Design tab of your Thunkable project, add a map component to a screen.

    2. On the Blocks tab, within the component tree, click the Map component.

    3. Drag and drop the Add GeoJSON block into your workspace.

    This event happens when the location of the user changes. It returns the coordinate object. You can use to get the properties of the coordinate object.

    The coordinate object has the following properties:

    { target: Numeric ID for your app coordinate:{ latitude: latitude of point selected longitude: longitude of point selected } position:{ x: x-position of selected point on the Map component y: x-position of selected point on the Map component } }

    This event happens when the user taps on the Map.

    This event happens when the user presses on the map for a longer period of time.

    This event happens when the user clicks on a Marker that is on the Map.

    The On Marker Press block returns an event object. This is an object which can be used with

    The event object has the following properties:

    { latitude: latitude of the selected Marker longitude: longitude of the selected Marker }

    Adds a generic map marker to your map at the specified latitude/longitude.

    This block takes the following inputs:

    Input
    Description
    Data Type

    Adds a marker of a selected image to your map at the specified latitude/longitude

    This block takes the following inputs:

    Input
    Description
    Data Type

    Add a polyline to your map. This is an outline that connects several points on your map.

    This block takes the following inputs:

    These blocks:

    Will produce this polyline:

    Note that polylines won't automatically create a closed shape. You would need to add a forth object with the properties latitude: 37 and longitude: -122 to the coordinate input of the addPolyline block above to close this triangular polyline.

    Add a polygon to your map. This is a solid shape that connects several points on your map.

    This block takes the following inputs:

    These blocks:

    Will produce this polygon:

    Note that the polygon outline will automatically connect the first and last points in the list of coordinates.

    You can use the deleteAllMarkers block to delete all from your app.

    You can use the deleteAllPolylines block to delete all from your app.

    You can use the deleteAllPolygons block to delete all from your app.

    Set and get of the Map component.

    Returns the height of the Map on the device screen in pixels.

    Returns the width of the Map on the device screen in pixels.

    You can pair the Map component with a . This helps you show content relevant to the user's location.

    These blocks will set the map's latitude and longitude to show the user's location once the map is ready:

    Zoom

    Zoom level between -15 (most zoomed out) and 15 (most zoomed in)

    Number

    User location

    Show the user where they are on the map.

    True/False

    My location button

    Show button that allows the user to re-center the map on their location.

    True/False

    Compass

    Show compass.

    True/False

    Scroll

    Allow user to scroll on the map.

    True/False

    Zoom

    Allow user to zoom in and out on the map.

    True/False

    Traffic

    Show traffic data.

    True/False

    Height

    Height of Map in pixels

    Number

    Width

    Width of Map in pixels

    Number

    Resize Mode

    Define dimensions of the map component/container

    Select from list [Stretch, Float in Place]

    Border Color

    Color of border (only visible if border width > 0)

    Color

    Border Width

    Width of border around Map in pixels

    Number

    Border Radius

    Radius of corners of border on Map in degrees

    Number

    Shadow Color

    Color of map's shadow

    Color

    Shadow Opacity

    Opacity of map's shadow

    Number between 0 and 100

    Shadow Radius

    Radius of corners of map's shadow in pixels

    Number

    Shadow Offset

    How far map's shadow should be offset, in Height and Width, in pixels

    Number

    Click Text.

  • Drag the empty text block and connect it to the Add GeoJSON block.

  • Paste your GeoJSON data into the empty text block. This can be retrieved from a website such as GeoJSON.io.

  • Drag and drop the Add GeoJSON block into an event block. For example, the onMapReady block to render the GeoJSON when the map loads, or the when button click block to render the GeoJSON when the user clicks a button.

  • Number

    position X

    X Co-ordinate of selected position on map component

    Number

    position Y

    Y Co-ordinate of selected position on map component

    Number

    Number

    position X

    X Co-ordinate of selected position on map component

    Number

    position Y

    Y Co-ordinate of selected position on map component

    Number

    Title

    Title of marker (displayed when marker is clicked)

    Text

    Description

    Description of marker (displayed when marker is clicked)

    Text

    Pin Color

    Color of marker

    Color

    Title

    Title of marker (displayed when marker is clicked)

    Text

    Description

    Description of marker (displayed when marker is clicked)

    Text

    Icon

    Image to use as marker

    Dropdown menu (select )

    Number

    Stroke Color

    Color of polyline

    Color

    Number

    Stroke Color

    Color of outline (Only visible if Stroke Width > 0)

    Color

    Fill Color

    Color of polygon shape

    Color

    Latitude

    Co-ordinate of the map's center on the north-south axis

    Number

    Longitude

    Co-ordinate of the map's center on the east-west axis

    Provider

    Map provider (ex. Google).

    Text

    Map Type

    Style of map.

    X

    Location of top left corner of Map on X-axis, where the left hand side is X=0

    Number

    Y

    Location of top left corner of Map on Y-axis, where the top side is Y=0

    Visible

    Toggle whether your end users can see the Map

    True/False

    Border Style

    Set whether border style is solid, dotted or dashed (only visible if border width > 0)

    Output name

    Output value

    Data Type

    Latitude

    Latitude of selected position

    Number

    Longitude

    Output name

    Output value

    Data Type

    Latitude

    Latitude of selected position

    Number

    Longitude

    Latitude

    Latitude of marker's position

    Number between -90 and 90

    Longitude

    Longitude of marker's position

    Latitude

    Latitude of marker's position

    Number between -90 and 90

    Longitude

    Longitude of marker's position

    Input

    Description

    Data Type

    Coordinate

    List of points to draw a line between. List can be any length.

    List of objects. Each object must have the properties latitude and longitude. Latitude and Longitude must be numbers.

    Stroke Width

    Input

    Description

    Data Type

    Coordinate

    List of points to draw a line between. List can be any length.

    List of objects. Each object must have the properties latitude and longitude. Latitude and Longitude must be numbers.

    Stroke Width

    Note: If you close this pop pup message without copying your API key

    1. Navigate to APIs & Services.

    2. Select Credentials from the left side menu.

    3. Click SHOW KEY.

    Add Google Maps API Key to Thunkable

    Map

    Advanced Properties

    Layout

    Style

    Blocks

    Events

    On Map Ready

    Add GeoJSON

    We do not currently support adding GeoJSON tooltips or callouts.

    On User Location Change

    On Press

    On Long Press

    On Marker Press

    Functions

    Add Marker

    Add GeoJSON

    Add Icon Marker

    Add Polyline

    Add Polygon

    Delete Markers, Polylines and Polygons

    Properties

    Latitude

    Longitude

    Zoom

    Computed Height

    Computed Width

    Visible

    See Also

    Google Maps Platform: Set up your Google Cloud project
    Project Settings
    object blocks
    object blocks.
    markers
    polylines
    polygons
    properties
    Location Sensor

    Number

    Select from list (standard, satellite, hybrid, terrain, none)

    Number

    Select from list [solid, dotted, dashed]

    Longitude of selected position

    Longitude of selected position

    Number between -90 and 90

    Number between -90 and 90

    Width of polyline

    Width of outline

    asset

    Layout Component

    Overview

    Thunkable’s layout component allows for more precise positioning of UI components on an app screen, by allowing you to position UI components dependent on other UI components on the screen. For example, in a typical sign-in screen, if a user inputs an incorrect email address or password, a screen built with a layout component allows you to shift the UI components on the screen to display the error messaging to the user.

    Add a Layout to a Screen

    To add a layout component to a screen:

    1. Drag and drop the layout UI component onto a screen. You’ll notice it is composed of two containers, one on top of the other.

    2. Click and drag the sizing handles in the corners to resize the layout UI component.

    3. Click and drag to reposition it.

    By default, a newly added layout has two horizontal containers arranged vertically, one on top of the other. To insert additional containers to a layout:

    1. Click to select the layout UI component in the component tree or within the screen.

    2. At the top of the layout's properties panel, select whether you want to insert a horizontal or vertical Container. ∙ Horizontal Container - UI components within the container are aligned horizontally, side by side ∙ Vertical Container - UI components within the container are aligned vertically, on top of each other

    3. Identify into which layout or container you want to insert the new container.

    To add UI components to a layout:

    1. Drag and drop UI components into a container on a screen.

    2. Once UI components are in a container, rearrange their order by dragging and dropping their component names in the component tree.

    The following properties are configured on the right in the layout's properties panel.

    Property
    Value
    Description

    Horizontal Alignment Examples

    Vertical Alignment Examples

    Property
    Value
    Description
    Property
    Value
    Description
    Property
    Value
    Description
    Property
    Value
    Description

    The following properties are configured on the right in the container's properties panel.

    Property
    Value
    Description
    Property
    Value
    Description
    Property
    Value
    Description
    Property
    Value
    Description
    Property
    Value
    Description

    To access the blocks specific to the layout component:

    1. Navigate to the Blocks tab.

    2. In the component tree on the left, click the Layout component.

    3. A drawer of layout-specific blocks opens.

    Block Image
    Description

    To access the blocks specific to the container component:

    1. Navigate to the Blocks tab.

    2. In the component tree on the left, click the Container component that is nested under the layout component.

    3. A drawer of container-specific blocks opens.

    The layout component is the foundation of custom data viewers, which allows for more precise positioning of UI components on an app screen.

    Click Add.

    Vertical / Horizontal Alignment

    top

    The elements directly within the layout (could be a UI component or a container) are positioned at the top of the layout.

    Vertical / Horizontal Alignment

    bottom

    The elements directly within the layout (could be a UI component or a container) are positioned at the bottom of the layout.

    Vertical / Horizontal Alignment

    left

    The elements directly within the layout (could be a UI component or a container) are positioned at the left of the layout.

    Vertical / Horizontal Alignment

    right

    The elements directly within the layout (could be a UI component or a container) are positioned at the right of the layout.

    Vertical / Horizontal Alignment

    center

    The elements directly within the layout (could be a UI component or a container) are positioned in the center of the layout (either top to bottom or left to right, depending on the selected direction).

    Vertical / Horizontal Alignment

    space-between

    The elements directly within the layout (could be a UI component or a container) are positioned with an equal amount of space between them.

    Vertical / Horizontal Alignment

    space-around

    The elements directly within the layout (could be a UI component or a container) are positioned with an equal amount of space between them, including at the top and bottom for a vertical direction layout or left and right for a horizontal direction layout.

    Scrollable

    true/on

    The user can scroll within the layout.

    Scrollable

    false/off

    The user cannot scroll within the layout.

    Scroll Bar Visible

    true/on

    The scroll bar is visible to the user.

    Scroll Bar Visible

    false/off

    The scroll bar is not visible to the user.

    Height

    number in pixels

    The layout’s height is defined by a custom number of pixels.

    Width

    number in pixels

    The layout’s width is defined by a custom number of pixels.

    Resize Mode

    Stretch

    Stretches the layout to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the layout in the same aspect ratio as the design, regardless of the device size.

    Background Picture Resize Mode

    cover

    Fills the entire layout without changing the height and width ratio of the image.

    Background Picture Resize Mode

    contain

    The entire image is scaled down to fit inside the layout, without changing the height and width ratio of the image.

    Background Picture Resize Mode

    stretch

    The image's height will change to fill the layout length-wise.

    Background Picture Resize Mode

    repeat

    The image repeats to cover the layout. The image's height and width ratio do not change.

    Background Picture Resize Mode

    center

    The image is positioned in the middle of the layout.

    Background Color

    color

    The background color of the layout.

    Gradient: Color

    color

    The layout's gradient color starts to fade from thebottom of the layout and blends into the background color.

    Border: Style

    solid

    The layout’s border is a solid line.

    Border: Style

    dotted

    The layoutt’s border is a dotted line.

    Border: Style

    dashed

    The layout’s border is a dashed line.

    Border: Color

    color

    The layout’s border is the color selected.

    Border: Width

    number in pixels

    The width of the layout’s border is defined by a custom number of pixels.

    Border: Radius

    number in pixels

    The radius of the layout border’s corners is defined by a custom number of pixels.

    Margin

    left

    The margin between the layout’s left border and the next UI component as defined by a custom number of pixels.

    Margin

    right

    The margin between the layout’s right border and the next UI component as defined by a custom number of pixels.

    Padding

    top

    The padding between the layout and its top border as defined by a custom number of pixels.

    Padding

    bottom

    The padding between the layout and its bottom border as defined by a custom number of pixels.

    Padding

    left

    The padding between the layout and its left border as defined by a custom number of pixels.

    Padding

    right

    The padding between the layout and its right border as defined by a custom number of pixels.

    Vertical / Horizontal Alignment

    top

    UI components are positioned at the top of the container.

    Vertical / Horizontal Alignment

    bottom

    UI components are positioned at the bottom of the container.

    Vertical / Horizontal Alignment

    left

    UI components are positioned at the left of the container.

    Vertical / Horizontal Alignment

    right

    UI components are positioned at the right of the container.

    Vertical / Horizontal Alignment

    center

    UI components are positioned in the center of the container (either top to bottom or left to right depending on the selected direction).

    Vertical / Horizontal Alignment

    space-between

    UI components are positioned with an equal amount of space between them

    Vertical / Horizontal Alignment

    space-around

    UI components are positioned with an equal amount of space between them, including at the top and bottom for vertical direction containers or left and right for horizontal direction containers.

    Scrollable

    true/on

    The user can scroll within the container.

    Note: When setting a container as scrollable, we recommend the size of the UI components within it be set to an absolute pixel value or Fit Contents.

    Scrollable

    false/off

    The user cannot scroll within the container.

    Scroll Bar Visible

    true/on

    The scroll bar is visible to the user.

    Scroll Bar Visible

    false/off

    The scroll bar is not visible to the user.

    Height

    Size (e.g. 50px or 50%)

    The container’s height is defined by a custom number of pixels or percentage of the screen.

    Width

    Fit contents

    The container’s width is the same as the widest UI component or container within it (vertical direction) or the side-by-side UI components or containers within it (horizontal direction).

    Width

    Fill container

    The elements directly within the container (could be a UI component or another container) fill the container horizontally.

    Width

    Size (e.g. 50px or 50%)

    The container’s width is defined by a custom number of pixels or percentage of the screen.

    Background Picture Resize Mode

    cover

    Fills the entire screen without changing the height and width ratio of the image.

    Background Picture Resize Mode

    contain

    The entire image is scaled down to fit inside the screen, without changing the height and width ratio of the image.

    Background Picture Resize Mode

    stretch

    The image's height will change to fill the screen length-wise.

    Background Picture Resize Mode

    repeat

    The image repeats to cover the screen. The image's height and width ratio do not change.

    Background Picture Resize Mode

    center

    The image is positioned in the middle of the frame.

    Background Color

    color

    The background color of the container.

    Gradient: Color

    color

    The container's gradient color starts to fade from the bottom of the container and blends into the background color.

    Border: Style

    solid

    The container’s border is a solid line.

    Border: Style

    dotted

    The container’s border is a dotted line.

    Border: Style

    dashed

    The container’s border is a dashed line.

    Border: Color

    color

    The container’s border is the color selected.

    Border: Width

    number in pixels

    The width of the container’s border is defined by a custom number of pixels.

    Border: Radius

    number in pixels

    The radius of the container border’s corners is defined by a custom number of pixels.

    Shadow: Color

    color

    The container’s shadow is the color selected.

    Shadow: Opacity

    number between 0 and 100

    The opacity of the container’s shadow.

    Shadow: Radius

    number in pixels

    The radius of the container shadow’s corners is defined by a custom number of pixels.

    Shadow: Offset

    number in pixels

    How far the container’s shadow should be offset, in height and width, is defined by a custom number of pixels.

    Margin

    left

    The margin between the container’s left border and the next container as defined by a custom number of pixels.

    Margin

    right

    The margin between the container’s right border and the next container as defined by a custom number of pixels.

    Padding

    top

    The padding between the container and its top border as defined by a custom number of pixels.

    Padding

    bottom

    The padding between the container and its bottom border as defined by a custom number of pixels.

    Padding

    left

    The padding between the container and its left border as defined by a custom number of pixels.

    Padding

    right

    The padding between the container and its right border as defined by a custom number of pixels.

    Gets the layout’s height in pixels.

    Gets the layout’s computed height, the on-screen dimensions of the layout, after it has been rendered on-screen. The value returned is an integer, representing the layout's height in pixels.

    Sets the layout’s width to a custom number of pixels.

    Gets the layout’s width in pixels.

    Gets the layout’s computed width, the on-screen dimensions of the layout, after it has been rendered on-screen. The value returned is an integer, representing the layout's width in pixels.

    When set to true, it sets the layout to visible, meaning the layout is visible to users.

    When set to false, it sets the layout to invisible, meaning the layout is not visible to users.

    Gets the layout’s visibility status. Returns true (visible) or false (invisible).

    Set the position of the upper left corner of the layout on the X-axis, where the left side of the screen is X=0.

    Get the position of the upper left corner of the layout on the X-axis, where the left side of the screen is X=0.

    Set the position of the upper left corner of the layout on the Y-axis, where the top of the screen is Y=0.

    Get the position of the upper left corner of the layout on the Y-axis, where the top of the screen is Y=0.

    Set the layout’s background color.

    Get the layout’s background color.

    Set the layout's background picture. Click the dropdown menu to select an image from your computer.

    Get the layout's background picture.

    Set the layout’s background picture resize mode. See the layout Properties section for definitions of the acceptable values.

    Get the layout’s background picture resize mode.

    When set to true, it sets the layout to scrollable for users.

    When set to false, it sets the layout to scrollable for users.

    Gets the Layout’s scrollable status. Returns true (scrollable) or false (not scrollable).

    When set to true, it sets the layout’s scroll bar to be visible to users.

    When set to false, it sets the layout’s scroll bar to invisible for users.

    Gets the layout’s scroll bar visibility status. Returns true (visible) or false (invisible).

    The blocks are the same as the ones above in the Layout Blocks section, but specific to the container instead of the layout.

    Direction

    vertical

    The elements directly within the layout (could be a UI component or a container) are aligned vertically, on top of each other.

    Direction

    horizontal

    X

    coordinate value

    Position of the upper left corner of the layout on the X-axis, where the left side of the screen is X=0.

    Y

    coordinate value

    Background Picture

    Upload files

    Click to upload an image file.

    Background Picture

    Type in URL

    Visible

    visible

    Users can see the layout.

    Visible

    invisible

    Margin

    top

    The margin between the layout’s top border and the next UI component as defined by a custom number of pixels.

    Margin

    bottom

    Direction

    vertical

    UI components within the container are aligned vertically, on top of each other.

    Direction

    horizontal

    Height

    Fit contents

    The container’s height is the same as the tallest UI component or container within it (horizontal direction) or the stacked UI components or containers within it (vertical direction).

    Height

    Fill container

    Background Picture

    Upload files

    Click to upload an image file.

    Background Picture

    Type in URL

    Visible

    visible

    Users can see the container.

    Visible

    invisible

    Margin

    top

    The margin between the container’s top border and the next container as defined by a custom number of pixels.

    Margin

    bottom

    If the layout is scrollable, you can use this block to scroll the user to the end of the layout. For example, a user clicks a button in a chat app, and the layout scrolls to the end of the chat history to see the most recent messages.

    If the layout is scrollable, you can use this block to scroll the user to the start of the layout.

    Insert Additional Containers

    Add UI Components

    Layout Properties

    Alignment

    Layout

    Image

    Style

    Spacing

    Container Properties

    Alignment

    Layout

    Image

    Style

    Spacing

    Layout Blocks

    Container Blocks

    Related Docs

    Custom Data Viewer

    Have feedback on this doc? Please take a moment to share your feedback here: Thunkable Docs Feedback. Your valuable insights will help us improve and better serve you in the future.

    Custom Data Viewer

    The elements directly within the layout (could be a UI component or a container) are aligned horizontally, side by side.

    Position of the upper left corner of the layout on the Y-axis, where the top of the screen is Y=0.

    Type in an image URL.

    Users cannot see the layout.

    The margin between the layout’s bottom border and the next UI component as defined by a custom number of pixels.

    UI components within the containerntainer are aligned horizontally, side by side.

    The elements directly within the container (could be a UI component or another container) fill the container vertically.

    Type in an image URL.

    Users cannot see the container.

    The margin between the container’s bottom border and the next container as defined by a custom number of pixels.

    Sets the layout’s height to a custom number of pixels.

    spinner

    Basic Components

    spinner
    spinner
    spinner
    spinner
    spinner
    spinner

    Group Component

    Overview

    A group is a container component in which other user interface components are placed. Groups are useful when you want to combine multiple components into one. This allows for their positions and visibility to be easily altered.

    Add UI Components to a Group

    To add components to a group:

    1. Drag and drop a group component onto a screen.

    2. Drag and drop other UI components inside the group on the screen.

    3. The added components are nested under the group in the component tree.

    4. When a group component is moved, any UI components within it are moved with it as a unit.

    Property
    Value
    Description
    Property
    Value
    Description
    Property
    Value
    Description
    • Center: The image is displayed at its original size within the container, and it is centered both vertically and horizontally. This means that if the image is larger than the container, parts of it may extend beyond the container's edges.

    • Cover: The image is resized to completely cover the container while maintaining its aspect ratio. This mode ensures that the entire container is filled with the image, and any excess image parts are cropped if necessary. This can result in parts of the image being clipped.

    • Contain:

    To access the blocks specific to the group component:

    1. On the Design tab, add a Group component to a screen.

    2. Navigate to the Blocks tab.

    3. In the component tree on the left, click the name of the group component.

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a group component to be enabled for a user until they've typed a set number of characters into a text input component, you can use the group's dark green set group's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Touch Opacity

    Number between 0-100

    Set the group's opacity when a user clicks on the group.

    Height

    number in pixels

    The button's height is defined by a custom number of pixels.

    Width

    number in pixels

    The button's width is defined by a custom number of pixels.

    Resize Mode

    Stretch

    Stretches the group to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the group in the same aspect ratio as the design, regardless of the device size.

    Background Image

    PNG, JPG, GIF, SVG, etc. Can also use a URL that ends in a file extension.

    The image displayed in the group's background.

    Background Image Resize Mode

    Select from list [cover, contain, stretch, repeat, center]. See the definitions of each setting below.

    Define how the group's background image is displayed if the file and the group component have different dimensions/aspect ratios.

    Border Style

    select from list [solid, dotted, dashed]

    Style of text input's border.

    Border Color

    color

    Color of text input's border.

    Border Width

    number in pixels

    The width of the group's border is defined by a custom number of pixels.

    Border Radius

    number in pixels

    The radius of the group's border’s corners is defined by a custom number of pixels.

    Shadow Color

    color

    The group's shadow is the color selected.

    Shadow Opacity

    number between 0 and 100

    The opacity of the group's shadow.

    Shadow Radius

    number in pixels

    The radius of the group's shadow’s corners is defined by a custom number of pixels.

    Shadow Offset

    number in pixels

    How far the group's shadow should be offset, in height and width, is defined by a custom number of pixels.

    The image is resized to fit entirely within the container while maintaining its aspect ratio. This mode ensures that the entire image is visible within the container, and it may result in empty space around the image if the container's aspect ratio differs from the image's aspect ratio.
  • Repeat: The image is tiled or repeated to fill the entire container, both horizontally and vertically. This mode is often used for creating patterns or backgrounds that seamlessly repeat across the container.

  • Stretch: The image is resized to fully cover the container without maintaining its original aspect ratio. This can distort the image and may result in an unnatural appearance, so it's generally not recommended for most scenarios.

  • A drawer of group-specific blocks opens.

    Position

    Relative to Screen

    The group moves as the user scrolls.

    Position

    Relative to Device

    X

    coordinate value

    Position of the upper left corner of the button on the X-axis, where the left side of the screen is X=0.

    Y

    coordinate value

    Visible

    true/false

    Toggle whether users can see the group.

    Background Fill

    color

    Properties

    Group

    Layout

    Style

    Picture Resize Mode

    Group Blocks

    Properties

    The group stays in place as the user scrolls (suitable for creating a floating action button).

    Position of the upper left corner of the button on the Y-axis, where the top of the screen is Y=0.

    Color of group's background.

    Time Input Component

    The time input component allows users to easily select times. Users can pick times for appointments, deadlines, or any time-related tasks within an app. These components are essential because they simplify entering times, reducing errors and ensuring accuracy. The time input component utilizes the native Android and iOS time pickers.

    Property
    Description
    Data Type

    Format to use when displaying selected time

    Select from menu [Hour:Minute AM/PM, Hour:Minute 24h]

    Font Size

    Size of font when displaying time

    Number

    Font Style

    Select whether font is italic

    True/False

    Font Weight

    Select whether font is bold

    True/False

    Color

    Color of font when displaying time

    Color

    Property
    Description
    Data Type

    X

    Location of top left corner of time input on X-axis, where the left hand side is X=0

    Number

    Y

    Location of top left corner of time input on Y-axis, where the top side is Y=0

    Property
    Description
    Data Type

    Visible

    Toggle whether your end users can see the time input component

    True/False

    Border Style

    Set whether border style is solid, dotted or dashed (only visible if border width > 0)

    You can trigger actions to happen when an event occurs.

    This event fires when the user has selected a time using the time picker.

    Opens the time picker to prompt the user to enter a time.

    Returns the hour from the time picker in 24-hour format. For example, if the user selects 2:30 PM, this block returns 14.

    Returns the minutes from the time picker in. For example, if the user selects 2:30 PM, this block returns 30.

    Returns the selected time from the time picker in the same format as the time input's style property. For example, if the user selects 2:30 PM, and the style is set to Hour:Minute AM/PM, this block returns 2:30 PM. If the user selects 2:30 PM, and the style is set to Hour:Minute 24h, this block returns 14:30.

    The time the user selects automatically displays in the time input label, but if you want to save the time to be used later, you can use the block combination below to save the time as a variable.

    Event Property
    Output

    Get Time

    Time in whichever format you specify

    Get Hours

    Hour of the Day from 1-24

    Get Minutes

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a button to be enabled for a user until they've typed a set number of characters into a text input component, you can use the button's dark green set button's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Overview

    Properties

    Time Input

    Native Android time picker on the left and iOS on the right.

    Style

    Layout

    Style

    Time Input Blocks

    Event Blocks

    When Time Input Time Picked

    Function Blocks

    Call Time Input's Launch Picker

    Call Time Input's Get Hour

    Call Time Input's Get Minute

    Call Time Input's Get Time

    Save the Time

    Properties Blocks

    Number

    Height

    Height of time input in pixels

    Number

    Width

    Width of time input in pixels

    Number

    Resize Mode

    Define dimensions of the time input component.

    Select from list [Stretch, Float in Place]

    Select from list [solid, dotted, dashed]

    Border Color

    Color of border (only visible if border width > 0)

    Color

    Border Width

    Width of border around time input in pixels

    Number

    Border Radius

    Radius of corners of border on time input in degrees

    Number

    Shadow Color

    Color of time input's shadow

    Color

    Shadow Opacity

    Opacity of Time Input's shadow

    Number between 0 and 100

    Shadow Radius

    Radius of corners of time input's shadow in pixels

    Number

    Shadow Offset

    How far time input's shadow should be offset, in height and width, in pixels

    Number

    Minutes from 1-60

    Loading Icon Component

    Overview

    The loading Icon is an animated graphical component used to notify users of your app that an action is taking place in the background, such as retrieving or uploading data. They serve as visual cues to users, signaling that the app is working behind the scenes, reducing uncertainty and providing reassurance while enhancing the overall user experience by managing expectations during brief wait times.

    Properties

    Loading Icon

    Property
    Description
    Data Type

    Color

    Property
    Description
    Data Type
    Property
    Description
    Data Type

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a button to be enabled for a user until they've typed a set number of characters into a text input component, you can use the button's dark green set button's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    The size property is unique to the loading icon. Using these blocks, you can set the size of the loading icon. You can choose between extra small, small, middle, large, or extra large.

    The loading icon should be displayed when the app is performing an activity in the background and hidden when it is not.

    One way to show and hide the icon is to use the visible property of the component.

    In the following example, the loading icon becomes visible when the screen opens but disappears once data is retrieved from Airtable.

    The loading icon displays on the app screen when the visibility property is true. The loading icon does not show on the app screen if the visibility property is false.

    If you want to show different animation styles in your app as content loads, you can use the animation component. You can learn more here: .

    Height

    Height of loading icon in pixels.

    Number

    Width

    Width of loading icon in pixels.

    Number

    Resize Mode

    Define dimensions of the loading icon component.

    Select from list [Stretch, Float in Place]

    Border Color

    Color of border (only visible if border width > 0)

    Color

    Border Width

    Width of border around loading icon in pixels.

    Number

    Border Radius

    The radius of corners of the border on the loading icon in degrees.

    Number

    Shadow Color

    Color of loading icon's shadow.

    Color

    Shadow Opacity

    Opacity of loading icon's shadow

    Number between 0 and 100

    Shadow Radius

    Radius of corners of loading icon's shadow in pixels.

    Number

    Shadow Offset

    How far loading icon's shadow should be offset, in height and width, in pixels.

    Number

    The color of the loading icon.

    Color

    X

    Location of the top left corner of the loading icon on the X-axis, where the left-hand side is X=0.

    Number

    Y

    Location of the top left corner of the loading icon on the Y-axis, where the top side is Y=0.

    Visible

    Toggle whether your end users can see the loading icon.

    True/False

    Border Style

    Set whether border style is solid, dotted or dashed (only visible if border width > 0)

    Layout

    Style

    Loading Icon Blocks

    Properties Blocks

    Size

    Demo: Showing and Hiding the Loading Icon

    See Also

    Animation
    Component

    Number

    Select from list [solid, dotted, dashed]

    Web Viewer Component

    Display websites in your app

    Overview

    The web viewer component displays websites in your app. You can also use it to run HTML and JavaScript commands. For example, you can run a simple HTML URL to decode an image into base 64 text.

    Some websites may not appear when previewing your app on the web. We recommend previewing with the on a device.

    Properties

    Web Viewer

    Property
    Description
    Data Type

    URL

    Property
    Description
    Data Type
    Property
    Description
    Data Type
    Property
    Description
    Data Type

    The "when web viewer receives message" block fires when the web viewer receives a message from the web page it's displaying. It returns the "message" output, text that contains the message that was received.

    The "call web viewer's reload" block reloads the web viewer.

    The "call web viewer's back" block navigates the user back to the previous page visited.

    The "call web viewer's forward" block navigates the user to the next page in the user's browser history.

    If you own the website displayed in the web viewer, you can send and receive messages between your website and the web viewer using Javascript. The "call web viewer's post message" block posts a message to the website.

    You can see examples of sending and receiving messages and get further setup instructions here: .

    The "call web viewer's value from post message" block returns any message received after using the "call web viewer's post message" block.

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a button to be enabled for a user until they've typed a set number of characters into a text input component, you can use the button's dark green set button's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    Height

    Height of the web viewer in pixels.

    Number

    Width

    Width of the web viewer in pixels.

    Number

    Resize Mode

    Define dimensions of the web viewer component.

    Select from list [Stretch, Float in Place]

    Border Color

    Color of border (only visible if border width > 0)

    Color

    Border Width

    Width of border around the web viewer in pixels.

    Number

    Border Radius

    Radius of corners of border on the web viewer in degrees.

    Number

    Shadow Color

    Color of the web viewer's shadow.

    Color

    Shadow Opacity

    Opacity of the web viewer's shadow.

    Number between 0 and 100

    Shadow Radius

    Radius of corners of the web viewer's shadow in pixels.

    Number

    Shadow Offset

    How far the web viewer's shadow should be offset, in height and width, in pixels.

    Number

    Set the initial URL to be displayed in the web viewer. The URL should begin with HTTPS://. You can also type in the name of an HTML file that has been uploaded to the project to display in the web viewer.

    URL

    Geolocation Enabled (Android only)

    Select if you want to enable geolocation functionality for Android apps.

    True/False

    X

    The location of the top left corner of the web viewer is on the X-axis, where the left-hand side is X=0.

    Number

    Y

    The location of the top left corner of the web viewer on the Y-axis, where the top side is Y=0.

    Visible

    Toggle whether your end users can see the web viewer.

    True/False

    Border Style

    Set whether border style is solid, dotted or dashed (only visible if border width > 0)

    Advanced Properties

    Layout

    Style

    Web Viewer Blocks

    Event Blocks

    When Web Viewer Receives Message

    Function Blocks

    Call Web Viewer's Reload

    Call Web Viewer's Back

    Call Web Viewer's Forward

    Call Web Viewer's Post Message

    You may also find connecting to a Web API helpful for sending and receiving information between your app and a website.

    Call Web Viewer's Value From Post Message

    Properties Blocks

    Thunkable Web Viewer Extensions
    Thunkable Live app

    Number

    Select from list [solid, dotted, dashed]

    Icon Component

    The image component allows you to display pictures in your app and can be made clickable using blocks.

    Overview

    The icon component is used to display an icon and can be made clickable using blocks.

    Properties

    You can customize your icon component using the following properties:

    Icon

    Property
    Value
    Description
    Property
    Value
    Desciption
    Property
    Value
    Description

    To access the blocks specific to the icon component:

    1. On the Design tab, add an Icon component to a screen.

    2. Navigate to the Blocks tab.

    3. In the component tree on the left, click the name of the icon component.

    Block Image
    Description

    Height

    number in pixels

    The icon's height is defined by a custom number of pixels.

    Width

    number in pixels

    The icon's width is defined by a custom number of pixels.

    Resize Mode

    Stretch

    Stretches the icon to fit the dimensions of the device's screen.

    Resize Mode

    Float in Place

    Renders the icon in the same aspect ratio as the design, regardless of the device size.

    Border: Color

    color

    The icon's border is the color selected.

    Border: Width

    number in pixels

    The width of the icon's border is defined by a custom number of pixels.

    Border: Radius

    number in pixels

    The radius of the icon border’s corners is defined by a custom number of pixels.

    Shadow: Color

    color

    The icon's shadow is the color selected.

    Shadow: Opacity

    number between 0 and 100

    The opacity of the icon's shadow.

    Shadow: Radius

    number in pixels

    The radius of the icon shadow’s corners is defined by a custom number of pixels.

    Shadow: Offset

    number in pixels

    How far the icon's shadow should be offset, in height and width, is defined by a custom number of pixels.

    A drawer of icon-specific blocks opens.

    Set the icon component's stroke color.

    Get the icon component's stroke color.

    Set the icon component's stroke width.

    Get the icon component's stroke width.

    Set the icon component's fill color.

    Get the icon component's fill color.

    Set the icon component's height.

    Get the icon component's height.

    Returns the height of the icon component in pixels after it has been rendered on-screen.

    Set the icon component's width.

    Get the icon component's width.

    Returns the width of the icon component in pixels after it has been rendered on-screen.

    Set whether the icon component is visible on the screen.

    Get whether the icon component is visible on the screen.

    Set the position icon the upper left corner of the icon on the X-axis, where the left side of the screen is X=0.

    Get the position of the upper left corner of the icon on the X-axis, where the left side of the screen is X=0.

    Set the position of the upper left corner of the icon on the Y-axis, where the top of the screen is Y=0.

    Get the position of the upper left corner of the icon on the Y-axis, where the top of the screen is Y=0.

    Icon type

    Icon name

    The icon displayed in the icon component.

    Stroke Color

    Color

    Color of outline

    Fill Color

    Color

    Color inside the icon

    Stroke Width

    Number

    Width of outline

    X

    coordinate value

    Position of the upper left corner of the icon on the X-axis, where the left side of the screen is X=0.

    Y

    coordinate value

    Visible

    visible

    Users can see the icon.

    Visible

    invisible

    This event will fire when the user clicks on the icon.

    Set the icon component's icon type.

    Layout

    Style

    Icon Blocks

    Position of the upper left corner of the icon on the Y-axis, where the top of the screen is Y=0.

    Users cannot see the icon.

    Get the icon component's icon type.

    Rating Component

    Overview

    In its most traditional use case, the rating component is used to display a rating in your app and allows users to leave their own rating. However, there are a lot of different icons to choose from so you can customize the "meaning" of your ratings. For example, you could use five hearts in a quiz app to represent the five lives or five guesses that each player gets.

    A rating component displaying a rating of 3.5/5.

    Properties

    Rating

    Property
    Description
    Data Type
    Property
    Description
    Data Type

    This event block fires when a user inputs a rating in the rating component.

    There are two types of property blocks: dark green "set" and light green "get" blocks. The specific blocks available vary according to the UI component.

    The dark green set blocks allow you to change the component's properties using blocks. For example, if you don't want a group component to be enabled for a user until they've typed a set number of characters into a text input component, you can use the group's dark green set group's disabled status block.

    The light green get blocks allow you to access the properties of a component (e.g. color, font, width, text, etc.).

    The direction property is unique to the rating icon. Using these blocks, you can define how the rating component is filled. You can choose between row (left to right), row-reverse (right to left), column (top to bottom) or column-reverse (bottom to top).

    The icon margin property is unique to the rating icon. Use these blocks to get or change the margin size between the icons of the rating component.

    Height

    Height of the rating component in pixels.

    Number

    Width

    Width of the rating component in pixels.

    Number

    Resize Mode

    Define the dimensions of the rating component.

    Select from list [Stretch, Float in Place]

    Value

    Initial value of the rating.

    Number

    Count

    Maximum value of the rating.

    Number between 5 and 10

    Image

    Shape of the rating's icons.

    Select from menu:

    • Pick One - menu of pre-set icons you can choose from. Preview these icons here.

    • Custom Image - upload images as an asset or provide an image URL (.jpg or .png files) for filled and empty icons.

    Read Only

    Toggle whether or not the user can edit the rating.

    True/False

    Rating Color

    Color of filled-in icons reflecting the current rating.

    Color

    Background Color

    Color of unfilled icons.

    Color

    X

    The location of the top left corner of the rating component on the X-axis, where the left-hand side is X=0

    Number

    Y

    The location of the top left corner of the rating component on the Y-axis, where the top side is Y=0.

    Layout

    Rating Blocks

    Event Blocks

    When Rating On Rate

    Properties Blocks

    Direction

    Icon Margin

    Number

    Modules

    Overview

    Creating modules allows you to save combinations of components and blocks as components or combinations of blocks without UI elements (Logic Modules) outside of the builder experience to reuse in your projects and share them for other Creators to use. Create the component in the component editor once and use it as often as you need in any of your projects.

    Video Tutorial

    How to Save and Reuse Thunkable App Elements with Modules

    Thunkable Modules allow you to save and reuse combinations of UI components and blocks in your projects. In this tutorial, you’ll learn how to create, share, import, copy, and edit modules.

    Create a New Module

    1. Navigate to your Thunkable Project page.

    2. Under Customizations, click on the Modules tab.

    3. Click Create A New Module.

    4. Name your module.

    5. Click Create.

    6. The module editor opens. It is similar to the editor you’re used to designing in, but you’ll notice the screen has a default group component within which to build your module.

    7. From the components library, drag and drop components into the group on the screen.

    8. Resize the group as necessary to achieve your desired design.

    9. Navigate to the Blocks tab.

    10. Build your module's functionality with blocks.

    11. When you’re happy with your module, click the Publish icon in the upper right.

    12. Select Publish Module.

    13. Include Release Notes. For future iterations, you’ll include what changed in the version.

    14. Click Publish.

    You can share modules with other Creators using the module's unique URL. When you're ready to share a module:

    1. In the component editor, click the Share icon in the upper right.

    2. The module's unique URL is copied to your computer's clipboard.

    3. Share the URL with another Creator. To import your shared module, they will follow these instructions: (choosing option 2 in step 4).

    1. Navigate to your Thunkable Project page.

    2. Open an existing project or create a new one.

    3. On the project’s Design tab, click the plus icon next to the Add Components library.

    If another Creator has shared a Module with you, you can remix it following the steps below (you can also ):

    1. Open the in your browser.

    2. Click on Click to Remix near to the top right.

    3. Make any desired changes and then click Publish to make available for importing into a project's component library.

    1. Open your project containing the .

    2. When you hover over the imported module in the component library, a vertical ellipsis appears.

    3. Hover over the vertical ellipsis to display the module's details.

    1. Navigate to your Thunkable Project page.

    2. Click the Modules tab.

    3. Click the Copy associated with the module you want to make a copy of.

    To make a change to an existing module:

    1. Navigate to your Thunkable Project page.

    2. Click the Modules tab.

    3. Click the Edit associated with the module you want to edit.

    To apply the edits to a previously imported module:

    1. Open your project containing the imported module.

    2. When you hover over the imported module in the component library, a vertical ellipsis appears.

    3. Hover over the vertical ellipsis to display the module's details.

    Adding a property to your module allows its properties to be modified after it has been imported into a project.

    For example, a page title module. Perfect the design in the module editor, add a property and the associated blocks, and then modify the page title on each screen of the imported project.

    To add a property to a module:

    1. Navigate to your Thunkable Project page.

    2. Click the Modules tab.

    3. Click the Edit associated with the module you want to edit.

    To configure the blocks to modify the component's properties when it is later imported into a project:

    1. Navigate to the module editor's block tab.

    2. In the component tree, click Module Workspace to access the module's unique blocks.

    3. Drag the "when Module Initialized" block into the workspace. This event block is triggered when the screen the module is added to opens.

    Once a module has been imported into a project, to modify its properties:

    1. Drag and drop the imported module onto your project's screen.

    2. In the module's properties panel, update the module property.

    An event is a block that allows the project to react to behavior that occurred inside of the component.

    1. Navigate to your Thunkable Project page.

    2. Click the Modules tab.

    3. Click the Edit associated with the module you want to edit.

    A method is a block that allows the project to trigger behavior to occur inside of the component. When you call a method, it is possible to provide additional information in parameters. When a project calls a component's method, the component has access to the values in the parameters.

    1. Navigate to your Thunkable Project page.

    2. Click the Modules tab.

    3. Click the Edit associated with the module you want to edit.

    In this tutorial, you’ll learn how to use methods to trigger behavior in modules.

    As part of this beta release, some functionality is not supported. This includes the following:

    • Modules can't be added to a layout component.

    • Modules can't be in shared screens.

    • Creators can't update a module that they do not own. To do so they will need to use the .

    Building on Modules, Logic Modules are specific to blocks and allow you to to start or trigger an event, set and change properties in your projects, and share them for other Creators to use.

    To create a new Logic Module, you can follow the same steps as after clicking on the Logic Modules tab.

    To share a Logic Module, you can follow the same steps as after clicking on the Logic Modules tab.

    1. Navigate to your Thunkable Project Page

    2. Open an existing project or create a new one.

    3. On the projects blocks editor, click the plus icon next to Logic Modules in the middle of the Blocks panel.

    To remix a Logic Module that another Creator has shared with you, you can follow the same steps as after clicking on the Logic Modules tab.

    To remix an already imported Logic Module you, you can follow the same steps as after clicking on the Logic Modules tab.

    To copy a Logic Module you, you can follow the same steps as after clicking on the Logic Modules tab.

    To edit a Logic Module, you can follow steps 1-8 in after clicking on the Logic Modules tab.

    Adding a property to your logic module allows its properties to be modified after it has been imported into a project.

    To add a property to a module:

    1. Navigate to your Thunkable Project page.

    2. Click the Logic Modules tab.

    3. Click the Edit associated with the logic module you want to edit.

    An event is a block that allows the project to react to behavior that occurred inside of the component.

    1. Navigate to your Thunkable Project page.

    2. Click the Logic Modules tab.

    3. Click the Edit associated with the module you want to edit.

    A method is a block that allows the project to trigger behavior to occur inside of the component. When you call a method, it is possible to provide additional information in parameters. When a project calls a component's method, the component has access to the values in the parameters.

    1. Navigate to your Thunkable Project page.

    2. Click the Logic Modules tab.

    3. Click the Edit associated with the module you want to edit.

    In the modal provided, either:

    1. My Modules tab - Select a Module from the list.

    2. Module Link tab - Type or paste the module's link.

  • Click Import.

  • The newly imported module is available under the heading Modules in the component library.

  • Drag the new module onto your screen.

  • Click on Remix.
  • You will be given the option to select Remix and Replace or to simply Remix. Remixing creates a copy that can be edited but won't replace the original that you have already imported into your project. Remix and Replace creates a copy that can be edited and replaces the original imported module in your project. Deselect the checkbox if and click Remix to simply make a copy that can be edited.

  • Make the desired changes to the copy and click Publish to make available for importing into a project's component library.

  • A copy of the module is created.
    Make the necessary changes on the Design and Blocks tabs.
  • When you’re happy with your module, click Publish in the upper right.

  • Select Publish Module.

  • Include Release Notes that state what has changed in this version.

  • Click Publish.

  • To apply the changes you made in the component editor to the components you added to your screens within this project, click Update.
  • Click Update to confirm the update.

  • Navigate to the Blocks tab.
  • Click the gear icon next to the Module Workspace in the component tree.

  • Click Add a Property.

  • Give the event a descriptive name (e.g. page title).

  • Select the property type (String (text), Boolean (true or false), Number, or Color).

  • Input the default value, the value the property will have if it is not modified in the project it's imported into.

  • Click the X in the upper right to close the modal.

  • Click the name of the component to which the property applies. In this example, we're changing the page title label.

  • Drag the relevant block into the "when Module Initialized" block. In our example, we want to be able to modify the page title label's text.

  • Click Module Workspace.

  • Drag the property block you created when you added a property to the module and connect it to the existing blocks.

  • Navigate to the Blocks tab.
  • Click the gear icon next to the Module Workspace in the component tree.

  • Click Add an Event.

  • Give the event a descriptive name (e.g. continue button clicked).

  • Input the parameters the event will take in.

    Once you drag and drop a block that refers to the parameter or publish the component, the event's parameters cannot be edited.

  • Click the X in the upper right to close the modal.

  • Navigate to the Blocks tab.
  • Click the gear icon next to the Module Workspace in the component tree.

  • Click Add a Method.

  • Give the method a descriptive name (e.g. change color).

  • Input the parameters the method will take in (e.g. color).

  • Press your keyboard's enter or return key.

    Once you drag and drop a block that refers to the parameter or publish the component, the method's parameters cannot be edited.

  • Click the X in the upper right to close the modal.

  • In the modal provided, either:
    1. My Logic Modules tab - Select a Logic Module from the list.

    2. Module Link Tab - Type or paste the logic module's link.

  • Click Import

  • The newly imported logic module is available under the heading Logic Modules in the Blocks panel.

  • Click the gear icon next to the Logic Module Workspace in the component tree.
  • Click Add a Property.

  • Give the event a descriptive name.

  • Select the property type (String (text), Boolean (true or false), Number, or Color).

  • Input the default value, the value the property will have if it is not modified in the project it's imported into.

  • Click the X in the upper right to close the modal.

  • Click the gear icon next to the Logic Module Workspace in the component tree.
  • Click Add an Event.

  • Give the event a descriptive name.

  • Input the parameters the event will take in.

    Once you drag and drop a block that refers to the parameter or publish the component, the event's parameters cannot be edited.

  • Click the X in the upper right to close the modal.

  • Click the gear icon next to the Logic Module Workspace in the component tree.
  • Click Add a Method.

  • Give the method a descriptive name.

  • Input the parameters the method will take in.

  • Press your keyboard's enter or return key.

    Once you drag and drop a block that refers to the parameter or publish the component, the method's parameters cannot be edited.

  • Click the X in the upper right to close the modal.

  • Share a Module

    Import a Module

    Remix a Module

    Remix an Imported Module

    Copy a Module

    Edit a Module

    This action can't be undone and will change all of the instances of this imported module used in the project.

    Create Custom Properties

    Add a Property

    Configure Property Blocks

    Modify Module Property

    You must view your app with web preview or Thunkable Live to see the module property render. It will not be rendered in the project's designer.

    Add an Event

    Add a Method

    Video Tutorial

    How to Use Methods to Trigger Behavior in Thunkable Modules

    Known Limitations

    Logic Modules

    Create a New Logic Module

    Share a Logic Module

    Import a Logic Module

    Remix a Logic Module

    Remix an Imported Logic Module

    Copy a Logic Module

    Edit a Logic Module

    This action can't be undone and will change all of the instances of this imported module used in the project.

    Create Custom Properties

    Add a Property

    Add an Event

    Add a Method

    Have feedback on this doc? Please take a moment to share your feedback here: Thunkable Docs Feedback. Your valuable insights will help us improve and better serve you in the future.

    Import a Module
    remix a previously imported module
    Share a Module
    imported module
    Remix feature
    Create a New Module
    Share a Module
    Remix a Module
    Remix an Imported Module
    Copy a Module
    Edit a Module
    spinner