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...

Basic Components

Embed Components

Media Components

Input Components

Data Components

Simple List ComponentData Viewer List ComponentData Viewer Grid ComponentCustom Data Viewer

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 .

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

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. (

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!

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.

Canvas Component

Create interactive gaming apps with the canvas component.

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.

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 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

)
  • 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. (Demo Project)

  • Sample Modules

    Demo project
    Firebase
    Demo Project
    Demo Project
    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
    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
    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.

    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

    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.

    Overview

    Adding a Canvas

    The Stage

    Gravity

    Stage Scaling Mode

    Stage Alignment

    Touch Drawing

    Multiple Stages

    Creating a New Module

    Starting Build

    Properties

    Publishing & Testing

    Events

    Updating

    Method

    Remixing

    Updating
    Publishing & Testing
    here

    Switch Component

    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.

    Property
    Value
    Description

    PDF Reader Component

    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.

    Property
    Description
    Data Type

    Animation Component

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

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

    Property
    Description

    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]

    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

    Property
    Value
    Desciption

    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

    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.

    4. A drawer of switch-specific blocks opens.

    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.).

    Value

    Overview​

    Properties

    Switch

    True/False

    Layout

    Switch Blocks

    Event Blocks

    When Switch On Value Change

    Properties Blocks

    PDF file or URL ending in .pdf

    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

    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.

    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.).

    File

    Overview

    Properties

    PDF Reader

    PDF to be displayed in the PDF reader

    Layout

    PDF Reader Blocks

    Properties Blocks

    Data Type

    Animation

    The name of the JSON animation file you want to display

    Text

    Loop

    Toggle whether or not the animation loops

    True/False

    Property
    Description
    Data Type

    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

    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.).

    Overview

    Video Tutorial

    Properties

    Animation

    Lottie
    Adobe After Effects
    Haiku
    created free and editable animations

    Layout

    Animation Blocks

    Event Block

    When Animation Click

    Properties Blocks

    Data Sources

    Checkbox Component

    Overview​

    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.

    Examples of uncheck and checked checkboxes.

    Properties

    Checkbox

    Name
    Description
    Data Type
    Property
    Description
    Data Type

    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.).

    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 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]

    Value

    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

    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

    Layout

    Checkbox Blocks

    Events Blocks

    When Checkbox On Value Change

    Properties Blocks

    Number

    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

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

    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.

    Number

    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]

    Number

    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]

    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.).

    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.).

    Data Viewer Grid Component

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

    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.

    Property
    Value
    Description

    Loading Icon Component

    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.

    Property
    Description
    Data Type

    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]

    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]

    The 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.

    Property
    Value
    Description

    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

    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 data source blocks.

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

    Set and get properties 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.


    Data Source

    Overview

    Properties

    Data Viewer Grid

    References chosen data source

    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: . Your valuable insights will help us improve and better serve you in the future.

    Data Viewer List Component
    Custom Data Viewer
    Data Sources Blocks

    Color

    Property
    Description
    Data Type

    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.

    Property
    Description
    Data Type

    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)

    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: Animation Component.

    Color

    Overview

    Properties

    Loading Icon

    The color of the loading icon.

    Layout

    Style

    Loading Icon Blocks

    Properties Blocks

    Size

    Demo: Showing and Hiding the Loading Icon

    See Also

    Time Input Component

    Overview

    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.

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

    Properties

    Time Input

    Property
    Description
    Data Type

    Style

    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 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

    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.).

    Data Viewer List Component

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

    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.

    Property
    Value
    Description

    Simple List Component

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

    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.

    You can customize the Simple List with the following properties:

    Property
    Description
    Data Type

    Group Component

    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.

    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.

    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]

    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

    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

    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

    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)

    Get Time

    Time in whichever format you specify

    Get Hours

    Hour of the Day from 1-24

    Get Minutes

    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

    Select from list [solid, dotted, dashed]

    Minutes from 1-60

    The 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.

    Property
    Value
    Description

    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

    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 data source blocks.

    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 data sources blocks.

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

    Set and get properties 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.


    Data Source

    Overview

    Properties

    Data Viewer List

    References chosen data source

    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: . Your valuable insights will help us improve and better serve you in the future.

    Data Viewer Grid Component
    Custom Data Viewer
    Data Sources Blocks

    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

    Property
    Description
    Data Type

    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.

    Property
    Description
    Data Type

    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

    Property
    Description
    Data Type

    Visible

    Toggle whether your end users can see the Simple List

    True/False

    Border Style

    Set style of Simple List's border

    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.

    4. A drawer of simple list-specific blocks opens.

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

    Outputs

    Name
    Description
    Data Type

    Item

    Text of selected item

    String

    Index

    Position of item in simple list (starting with 1)

    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 data source. 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.

    Overview

    Properties

    Simple List

    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: . Your valuable insights will help us improve and better serve you in the future.

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

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

  • Property
    Value
    Description

    Position

    Relative to Screen

    The group moves as the user scrolls.

    Position

    Relative to Device

    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

    true/false

    Toggle whether users can see the group.

    Background Fill

    color

    • 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: 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.

    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.

    4. A drawer of group-specific blocks opens.

    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

    Add UI Components to a Group

    Properties

    Group

    Layout

    Style

    Picture Resize Mode

    Group Blocks

    Properties

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

    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.

    data source
    Thunkable Docs Feedback

    Number

    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]

    Select from list [solid, dotted, dashed]

    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

    Icon Component

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

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

    You can customize your icon component using the following properties:

    Property
    Value
    Description

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

    Touch Opacity

    Number between 0-100

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

    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 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.

    Color of group's background.

    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.

    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

    Property
    Value
    Desciption

    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

    Property
    Value
    Description

    Visible

    visible

    Users can see the icon.

    Visible

    invisible

    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.

    4. A drawer of icon-specific blocks opens.

    Block Image
    Description

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

    Set the icon component's icon type.

    Overview

    Properties

    Icon

    Icon type

    Layout

    Style

    Icon Blocks

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

    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.

    data source
    Thunkable Docs Feedback

    Font Size

    Set font size of Text Items

    Number

    Show Arrow

    Toggle whether arrow is shown beside text items

    True/False

    Color

    Number

    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]

    Select from list [solid, dotted, dashed]

    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

    Number

    Thunkable Docs Feedback

    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.

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

    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.

    Users cannot see the icon.

    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.

    Get the icon component's icon type.

    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.

    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

    spinner
    spinner
    spinner
    spinner
    spinner

    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

    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

    Font Weight

    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

    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

    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.

    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

    resize mode
    resize mode

    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.).