Home
Get Started what is rhyme? Your First App Sign Up

Blocks Block Types [start] [init] [blocks]
Actions Display Actions Input Actions Data Actions Flow Actions Understanding Actions
Variables Naming Conventions Special Variables $variables
Values Working with Text Text Number Switch Item Group Date Time Duration
Images Basics Displaying Images Image Sources
Icons Basics Icon Styling !icon select tool
Colors Color Sets Sets Color Tool Dynamic Theme
Fonts Basics Preview Fonts
Tags Understanding Tags Sounds
Sounds Beep Sounds Tap Sounds Event Sounds Slide Sounds

reference
Actions .10x1-image .12x1-image .16x9-image .1x1-image .1x2-image .1x3-image .1x4-image .1x6-image .1x8-image .2x1-image .2x3-image .3x1-image .3x2-image .4x1-image .4x3-image .4x5-image .5x4-image .6x1-image .6x9-image .8x1-image .a .account-signup .acknowledge .acknowledge-once .action-help .action-list .alt .announcement .app-frame .app-icon .app-iphone .app-laptop .app-navbar .app-tablet .aside .avatar .back .back-button .back-header .background-animated-gradient .background-color .background-gradient .background-image .background-video .banner-divider .bluesky .bottom-center .bottom-left .bottom-navbar .bottom-panel .bottom-right .brand-screen .btn .busy-button .button .button-bar .chat-incoming .chat-input .chat-outgoing .chat-typing .checkbox-field .chip .circle-button .circle-image .click .close-icon .color-input .color-palette .color-swatch .column .confetti .continue-button .copy-textbox .copyright .corner-banner .date-input .details .devfooter .dialog .dicebear-avatar .div .divider .divider-bar .edit-app .editor .enter .enter-date .enter-email .enter-family-name .enter-fullname .enter-given-name .enter-helptext .enter-number .enter-password .enter-phone .enter-text .enter-time .enterkey-effect .error-line .facebook .filler .fineprint .fixed-footer .font-sample .footer .footer-nav .full-panel .fullscreen-error .github .golden-image .goleft-effect .goto .goto-effect .gradient .grid .grid-cell .handwriting .header .help .hide .hide-in-progress .hover-over .hr .icon .icon-avatar .icon-button .icon-with-label .iframe .image .image-avatar .image-button .image-header .image-title .inbox-message .inbox-message-input .initials-avatar .input .instagram .left-panel .link .linkedin .list .list-item .live-search .lottie .megaicon .menu .menu-item .middle-center .middle-left .middle-right .mobile-app-view .navigation-bar .navto .number .option .overlay .paragraph .paragraph-text .password-field .password-panel .paste-background .pinpad-input .placeholder .popup .popup-screen .profile .progress-bar .progress-circle .progress-circle-with-value .qrcode .radio-field .rhappsody .rhyme-editor .rhyme-example .rhyme-live .rhyme-source .right-panel .row .run .screen .screen-background .search .select .select-field .set .shape-divider .show-in-progress .signature .signature-pad .sim-app .simulate .simulator .slider-input .spacer .span .spinner .splash-screen .stack .tagline .text .text-field .textarea .textbox-field .textbox-input .time-input .tint .tiptext .title .top-appbar .top-center .top-left .top-panel .top-right .turnstile .twitter .upload-csv .upload-file .upload-file-input .upload-image .upload-json .user-login .validate-email .value .video .video-banner .video-button .wait .when-load-complete .youtube .youtube-video +attachable +decorate +paste-image +paste-image +tint +when-close +when-load-complete account-ctx account-login account-logout account-signup action add add-days add-line add-row add-text add-weeks admin-login ai-auth ai-context ai-model ai-provider allow-dynamic-actions and app app-authorization app-colors app-context app-context-server app-data app-expires-on app-font app-golive-on app-host app-image app-mode app-name app-password app-private app-public app-sound appdev average background-image bluesky break browser-version build-app calculate capitalize character clear-acknowledgement clear-announcement clear-client clear-icons clear-image clear-images clear-inbox clear-profile close-menu color compile conditional confetti console-error console-info console-log console-var contains continue core-kv-get core-kv-put core-run corner-banner create-key create-table csv day-names days-between days-until decode-secret decrement decrypt default default-style delay delete delete-all-videos delete-app-data delete-app-image delete-appgroup delete-column delete-inbox-message delete-key delete-public-app-data delete-public-user-data delete-row delete-saved delete-user-data dir-action dir-actions dir-app dir-blocks dir-boot dir-build dir-clear dir-clear-inbox dir-compile dir-compiler dir-current dir-delay dir-delete-appgroup dir-delete-image dir-dev dir-edit dir-edit-block dir-files dir-help dir-hide dir-images dir-inbox dir-list-apps dir-list-groups dir-load dir-login dir-login-if-needed dir-logout dir-mock-date dir-new dir-new-appgroup dir-new-image dir-publish dir-regen-keys dir-secrets dir-send-inbox-message dir-set dir-sets dir-shell dir-show dir-source dir-source-default dir-status dir-users dir-who distance-between divide down-key dynamic-action dynamic-color-theme editor-login editor-onkey enable-shell-shortcut encrypt endconditional english ensure-email enter-date enter-email enter-family-name enter-fullname enter-given-name enter-helptext enter-key enter-number enter-password enter-phone enter-text enter-time equals error-line escape-key exit-module facebook fadein fadeout fake fake-date fake-table fake-time fill-column filter-group first-row font foreach forget fullscreen-error generate-app-key get-ip-location get-item-number get-location get-public-key get-recipe get-row github goto groq-ai-chat groq-models have hide host-call http-delete http-get http-post http-put icon if if-fail if-is-closed if-is-open if-success image increment init-all init-animation init-auth init-chat init-client init-compiler init-help init-images instagram is-appgroup-available is-date is-greater-than is-group is-item is-less-than is-number is-time is-valid-email is-valid-phone key last-row launch-module left-key length-of linkedin list-actions list-actionsets list-app-data list-app-images list-appgroups list-apps list-areas list-color-palettes list-colors list-compilers list-dynamic-actions list-fonts list-icons list-images list-inbox list-public-app-data list-public-user-data list-recipes list-saved list-secrets list-user-data list-videos load load-app load-app-data load-audio load-binary-file load-compiler load-json-file load-public-app-data load-public-user-data load-saved load-source load-text-file load-user-data logic loop lowercase manager-login max missing modulo month-names multiply my-approups new-app new-appgroup new-profile noop not not-equals on-incoming-chat-message on-notification open-browser open-browser-window open-menu openai-chat pause-audio person pick-random play-audio print print-error print-header profile protect-with-password proxy publish-bin publish-html publish-private random-between random-dice-roll random-digits random-row random-text random-uuid register-actionset reload remember remove-secret render-recipe repeat resend-send-email reset-client resize-image restore-profile resume return right-key round round-down round-up run save save-app-data save-app-image save-public-app-data save-public-user-data save-source save-user-data say schedule secret send-email send-notification send-to-inbox server-run set set-active-schedule set-ai-service set-animation set-announcement set-app-bin set-app-source set-app-title set-brand-color set-build-mode set-css-variable set-debug-ui set-default set-default-font set-dev-mode set-email-bcc set-email-body set-email-cc set-email-from set-email-service set-email-subject set-email-to set-groq-api-key set-http-body set-http-header set-http-timeout set-iconset set-image set-language set-message-body set-message-from set-message-subject set-mock-mode set-private-key set-public-key set-resend-api-key set-secret set-sound set-start-block set-target-ag set-target-aid set-video set-voice set-voice-language shield show slide-down slide-left slide-right slide-up slot sort-column sort-group sort-table source-block-list source-delete-block source-get-block source-join-blocks source-split-blocks source-update-block space-between-lines space-key spanish split-text stack stop-audio store-profile style su-account su-accounts su-platform subscribe subtract sync-time-to-server test test-owner-auth test-server timer-start timer-stop toggle-menu top-left twitter typed-getters-example unpack-row unshield unsubscribe up-key upload-app-image uppercase use use-modules user user-data user-login vardump varref varset vibrate wait waitfor when youtube
action sets understanding action sets acknowledgement actions AI announcements appgroup audio auth avatars background barcodes blog browser buttons calendar chat client clipboard color column compiler components config core CSS data datetime debug decorator directive divider editor editors effects email enter error events examples exec feedback fields file flow fonts footers form goto groq group headers help HTML HTTP icons if images inbox init input inputs interaction keys language layout lists localstorage location log logic logicfn loops math media menus messaging mock modifier modules navigation network notifications numbers openai overlays paragraph platform print profile progress publish random recipes resend resources rhyme row rows screens search secrets security selects server services shell shield sim social sounds source specialfx speech stacks styling system table test testing text upload users utilities utils validate validation variables video view voice
advanced /shell Variable Types Mock Values environment
Tools /shell Rhyme Editor /shell Playground

Tutorials Your App's Inbox

Resources
Rhappsody Platform Community Discord Server

© 2025 Rhappsody

Variables

Variables are the heart of data management in Rhyme. They store and track information throughout your app’s lifecycle, from simple text values to complex data structures.

Understanding Variables

Variables in Rhyme are containers that hold values you can use throughout your app. They follow a simple naming convention - all variables start with a dollar sign $ followed by a descriptive name using kebab-case (words separated by hyphens).

Variable Types

Rhyme supports several types of variables:

Quick Examples

// Setting variables
set $user-name = "Alice"
set $score = 100
set $is-logged-in = true

// Using variables in UI
.text "Welcome, $user-name!"
.text "Your score: $score"

// Conditional logic with variables
if $is-logged-in
  .button "Logout"
else
  .button "Login"

Variable Naming

Good variable names make your code easier to understand:

Learn More

Naming Conventions

Variable names in Rhyme follow specific conventions that make your code readable and consistent.

The Basics

All variables in Rhyme start with a dollar sign $ followed by a descriptive name:

set $user-name = "Alice"
set $total-count = 42
set $is-logged-in = true

Kebab-Case Style

Rhyme uses kebab-case (words separated by hyphens) for variable names:

  • $user-email - Correct kebab-case
  • $first-name - Clear and readable
  • $shopping-cart-total - Multiple words connected
  • $userEmail - Avoid camelCase
  • $user_email - Avoid underscores

Descriptive Names

Choose names that clearly describe what the variable contains:

Special Variables

Rhyme provides a comprehensive set of special variables that are automatically available in all apps. These variables give you access to system information, app state, date/time values, and much more.

date & time variables

current date/time
  • $TODAY - Current date and time
  • $NOW - Current date and time (same as $TODAY)
  • $TIMESTAMP - Current timestamp in milliseconds
formatted dates
  • $DATE - Medium format date (e.g., “Jan 15, 2025”)
  • $LONGDATE - Long format date (e.g., “January 15, 2025”)
  • $SHORTDATE - Short format date (e.g., “1/15/25”)
formatted times
  • $TIME - Medium format time (e.g., “2:30:45 PM”)
  • $LONGTIME - Long format time with timezone
  • $SHORTTIME - Short format time (e.g., “2:30 PM”)
date components
  • $DAY - Full day name (e.g., “Monday”)
  • $DAYSHORT - Short day name (e.g., “Mon”)
  • $MONTH - Full month name (e.g., “January”)
  • $MONTHSHORT - Short month name (e.g., “Jan”)
  • $MONTHNUM - Month as number (1-12)
  • $YEAR - Two-digit year (e.g., “25”)
  • $YEARNUM - Four-digit year (e.g., 2025)
time components
  • $HOUR - Two-digit hour (e.g., “14”)
  • $HOURNUM - Hour as number (0-23)
  • $MINUTE - Two-digit minute (e.g., “05”)
  • $MINUTENUM - Minute as number (0-59)
  • $SECOND - Two-digit second (e.g., “09”)
  • $SECONDNUM - Second as number (0-59)
time slots
  • $TIMESLOTS60 - Array of hourly time slots
  • $TIMESLOTS30 - Array of half-hour time slots
  • $TIMESLOTS15 - Array of 15-minute time slots
  • $TIMESLOTS10 - Array of 10-minute time slots
  • $TIMESLOTS5 - Array of 5-minute time slots
name arrays
  • $DAYNAMES - Full weekday names array
  • $DAYNAMESSHORT - Short weekday names array
  • $MONTHNAMES - Full month names array
  • $MONTHNAMESSHORT - Short month names array

app & system information

app details
  • $APP - Current app information object
  • $APPNAME - Name of the current app
  • $APPGROUP - App group identifier
  • $AID - App ID
  • $APPICON - App icon reference
  • $APPBIN - App binary data
  • $APPBINLEN - Size of app binary in bytes
  • $VERSION - VM version
execution context
  • $BLOCK - Current block name
  • $BLOCKID - Current block ID
  • $BLOCKS - Array of all block names
  • $BLOCKIDS - Array of all block IDs
  • $PC - Program counter
  • $STEP - Current step count
environment
  • $ENVIRONMENT - Runtime environment (“browser”, “node”, “worker”, “unknown”)
  • $ENV - Extended environment information
  • $LANGUAGE - Current language setting (e.g., “en|US”)
  • $REGION - Geographic region
  • $PWA - Whether running as Progressive Web App

user & authentication

  • $ACCOUNT - Account information
  • $PLAN - Current subscription plan
  • $AUTH - Authentication headers
  • $AUTHMODE - Authentication mode
  • $AUTHHEADERS - Generated auth headers
client information
  • $CLIENT - Client object
  • $CLIENTID - Client identifier
  • $CLIENTPASSCODE - Client passcode
  • $CLIENTTOKEN - Client authentication token
  • $CLIENTCAN - Client capabilities object (badge, listen, locate, speak, vibrate)

url & location

  • $URL - Full current URL
  • $HOSTNAME - Current hostname
  • $SUBDOMAIN - First part of hostname
  • $ORIGIN - Protocol and hostname
  • $URLPATH - URL pathname
  • $URLHASH - URL hash/fragment

colors & styling

  • $COLORA - Primary color value
  • $COLORB - Secondary color value
  • $COLORC - Tertiary color value
  • $COLORS - Array of all available colors
  • $APPWIDTH - Application width setting

system lists

variables & state
  • $VARIABLES - Array of all defined variable names
  • $SYSVARS - Array of all system variable names
  • $VARMETA - Variable metadata keys
  • $STATE - Complete state object
  • $VARBUF - Variable buffer
ui & components
  • $CUSTELEMENTS - Custom elements available
  • $CUSTOMELEMENTS - Registered custom elements
  • $TEMPLATES - Available templates
  • $UIPOSITIONS - UI elements with position data
  • $LASTEL - Last created element
resources
  • $IMAGES - Array of loaded image names
  • $ICONS - Array of available icons
  • $ACTIONS - Array of all action names
  • $PLUGINS - Array of loaded plugins

variable metadata

These functions accept a variable name as parameter:

$variables

Variables are the foundation of data management in Rhappsody applications. They provide a simple, intuitive way to store and manipulate information throughout your app.

key concepts

naming conventions
  • Variables are prefixed with a $ symbol (e.g., $my-var)
  • All variables are global to the entire app
  • Variable names are case sensitive - $my-var is different from $My-Var
  • Convention: use lowercase letters, numbers, and dashes (e.g., $user-name, $item-count)
best practices
  • Use descriptive, meaningful names that clearly indicate the data’s purpose
  • Longer names are encouraged for clarity (e.g., $customer-email instead of $email)
  • Ensure variable names are unique across your entire application
  • Remember that all variables share the same global scope

variable types

string

Text values enclosed in double quotes. Use single quotes when the value contains double quotes.

Home
Get Started what is rhyme? Your First App Sign Up

Blocks Block Types [start] [init] [blocks]
Actions Display Actions Input Actions Data Actions Flow Actions Understanding Actions
Variables Naming Conventions Special Variables $variables
Values Working with Text Text Number Switch Item Group Date Time Duration
Images Basics Displaying Images Image Sources
Icons Basics Icon Styling !icon select tool
Colors Color Sets Sets Color Tool Dynamic Theme
Fonts Basics Preview Fonts
Tags Understanding Tags Sounds
Sounds Beep Sounds Tap Sounds Event Sounds Slide Sounds

reference
Actions .10x1-image .12x1-image .16x9-image .1x1-image .1x2-image .1x3-image .1x4-image .1x6-image .1x8-image .2x1-image .2x3-image .3x1-image .3x2-image .4x1-image .4x3-image .4x5-image .5x4-image .6x1-image .6x9-image .8x1-image .a .account-signup .acknowledge .acknowledge-once .action-help .action-list .alt .announcement .app-frame .app-icon .app-iphone .app-laptop .app-navbar .app-tablet .aside .avatar .back .back-button .back-header .background-animated-gradient .background-color .background-gradient .background-image .background-video .banner-divider .bluesky .bottom-center .bottom-left .bottom-navbar .bottom-panel .bottom-right .brand-screen .btn .busy-button .button .button-bar .chat-incoming .chat-input .chat-outgoing .chat-typing .checkbox-field .chip .circle-button .circle-image .click .close-icon .color-input .color-palette .color-swatch .column .confetti .continue-button .copy-textbox .copyright .corner-banner .date-input .details .devfooter .dialog .dicebear-avatar .div .divider .divider-bar .edit-app .editor .enter .enter-date .enter-email .enter-family-name .enter-fullname .enter-given-name .enter-helptext .enter-number .enter-password .enter-phone .enter-text .enter-time .enterkey-effect .error-line .facebook .filler .fineprint .fixed-footer .font-sample .footer .footer-nav .full-panel .fullscreen-error .github .golden-image .goleft-effect .goto .goto-effect .gradient .grid .grid-cell .handwriting .header .help .hide .hide-in-progress .hover-over .hr .icon .icon-avatar .icon-button .icon-with-label .iframe .image .image-avatar .image-button .image-header .image-title .inbox-message .inbox-message-input .initials-avatar .input .instagram .left-panel .link .linkedin .list .list-item .live-search .lottie .megaicon .menu .menu-item .middle-center .middle-left .middle-right .mobile-app-view .navigation-bar .navto .number .option .overlay .paragraph .paragraph-text .password-field .password-panel .paste-background .pinpad-input .placeholder .popup .popup-screen .profile .progress-bar .progress-circle .progress-circle-with-value .qrcode .radio-field .rhappsody .rhyme-editor .rhyme-example .rhyme-live .rhyme-source .right-panel .row .run .screen .screen-background .search .select .select-field .set .shape-divider .show-in-progress .signature .signature-pad .sim-app .simulate .simulator .slider-input .spacer .span .spinner .splash-screen .stack .tagline .text .text-field .textarea .textbox-field .textbox-input .time-input .tint .tiptext .title .top-appbar .top-center .top-left .top-panel .top-right .turnstile .twitter .upload-csv .upload-file .upload-file-input .upload-image .upload-json .user-login .validate-email .value .video .video-banner .video-button .wait .when-load-complete .youtube .youtube-video +attachable +decorate +paste-image +paste-image +tint +when-close +when-load-complete account-ctx account-login account-logout account-signup action add add-days add-line add-row add-text add-weeks admin-login ai-auth ai-context ai-model ai-provider allow-dynamic-actions and app app-authorization app-colors app-context app-context-server app-data app-expires-on app-font app-golive-on app-host app-image app-mode app-name app-password app-private app-public app-sound appdev average background-image bluesky break browser-version build-app calculate capitalize character clear-acknowledgement clear-announcement clear-client clear-icons clear-image clear-images clear-inbox clear-profile close-menu color compile conditional confetti console-error console-info console-log console-var contains continue core-kv-get core-kv-put core-run corner-banner create-key create-table csv day-names days-between days-until decode-secret decrement decrypt default default-style delay delete delete-all-videos delete-app-data delete-app-image delete-appgroup delete-column delete-inbox-message delete-key delete-public-app-data delete-public-user-data delete-row delete-saved delete-user-data dir-action dir-actions dir-app dir-blocks dir-boot dir-build dir-clear dir-clear-inbox dir-compile dir-compiler dir-current dir-delay dir-delete-appgroup dir-delete-image dir-dev dir-edit dir-edit-block dir-files dir-help dir-hide dir-images dir-inbox dir-list-apps dir-list-groups dir-load dir-login dir-login-if-needed dir-logout dir-mock-date dir-new dir-new-appgroup dir-new-image dir-publish dir-regen-keys dir-secrets dir-send-inbox-message dir-set dir-sets dir-shell dir-show dir-source dir-source-default dir-status dir-users dir-who distance-between divide down-key dynamic-action dynamic-color-theme editor-login editor-onkey enable-shell-shortcut encrypt endconditional english ensure-email enter-date enter-email enter-family-name enter-fullname enter-given-name enter-helptext enter-key enter-number enter-password enter-phone enter-text enter-time equals error-line escape-key exit-module facebook fadein fadeout fake fake-date fake-table fake-time fill-column filter-group first-row font foreach forget fullscreen-error generate-app-key get-ip-location get-item-number get-location get-public-key get-recipe get-row github goto groq-ai-chat groq-models have hide host-call http-delete http-get http-post http-put icon if if-fail if-is-closed if-is-open if-success image increment init-all init-animation init-auth init-chat init-client init-compiler init-help init-images instagram is-appgroup-available is-date is-greater-than is-group is-item is-less-than is-number is-time is-valid-email is-valid-phone key last-row launch-module left-key length-of linkedin list-actions list-actionsets list-app-data list-app-images list-appgroups list-apps list-areas list-color-palettes list-colors list-compilers list-dynamic-actions list-fonts list-icons list-images list-inbox list-public-app-data list-public-user-data list-recipes list-saved list-secrets list-user-data list-videos load load-app load-app-data load-audio load-binary-file load-compiler load-json-file load-public-app-data load-public-user-data load-saved load-source load-text-file load-user-data logic loop lowercase manager-login max missing modulo month-names multiply my-approups new-app new-appgroup new-profile noop not not-equals on-incoming-chat-message on-notification open-browser open-browser-window open-menu openai-chat pause-audio person pick-random play-audio print print-error print-header profile protect-with-password proxy publish-bin publish-html publish-private random-between random-dice-roll random-digits random-row random-text random-uuid register-actionset reload remember remove-secret render-recipe repeat resend-send-email reset-client resize-image restore-profile resume return right-key round round-down round-up run save save-app-data save-app-image save-public-app-data save-public-user-data save-source save-user-data say schedule secret send-email send-notification send-to-inbox server-run set set-active-schedule set-ai-service set-animation set-announcement set-app-bin set-app-source set-app-title set-brand-color set-build-mode set-css-variable set-debug-ui set-default set-default-font set-dev-mode set-email-bcc set-email-body set-email-cc set-email-from set-email-service set-email-subject set-email-to set-groq-api-key set-http-body set-http-header set-http-timeout set-iconset set-image set-language set-message-body set-message-from set-message-subject set-mock-mode set-private-key set-public-key set-resend-api-key set-secret set-sound set-start-block set-target-ag set-target-aid set-video set-voice set-voice-language shield show slide-down slide-left slide-right slide-up slot sort-column sort-group sort-table source-block-list source-delete-block source-get-block source-join-blocks source-split-blocks source-update-block space-between-lines space-key spanish split-text stack stop-audio store-profile style su-account su-accounts su-platform subscribe subtract sync-time-to-server test test-owner-auth test-server timer-start timer-stop toggle-menu top-left twitter typed-getters-example unpack-row unshield unsubscribe up-key upload-app-image uppercase use use-modules user user-data user-login vardump varref varset vibrate wait waitfor when youtube
action sets understanding action sets acknowledgement actions AI announcements appgroup audio auth avatars background barcodes blog browser buttons calendar chat client clipboard color column compiler components config core CSS data datetime debug decorator directive divider editor editors effects email enter error events examples exec feedback fields file flow fonts footers form goto groq group headers help HTML HTTP icons if images inbox init input inputs interaction keys language layout lists localstorage location log logic logicfn loops math media menus messaging mock modifier modules navigation network notifications numbers openai overlays paragraph platform print profile progress publish random recipes resend resources rhyme row rows screens search secrets security selects server services shell shield sim social sounds source specialfx speech stacks styling system table test testing text upload users utilities utils validate validation variables video view voice
advanced /shell Variable Types Mock Values environment
Tools /shell Rhyme Editor /shell Playground

Tutorials Your App's Inbox

Resources
Rhappsody Platform Community Discord Server

© 2025 Rhappsody