Skip to main content

Changelog

Updates, changes, and improvements at Retool.

We’ve added two new tabs, State and Timeline, that enable you to inspect the app state, drill into dependencies, and visualize query runs.

The State tab allows you to view the current state of all properties in your apps, as well as see dependencies between individual properties and calls from event handlers or JavaScript. This makes it easy to see everything that triggers a specific query. You can also directly jump to what you need with a “View state” context menu action and built-in search.

The Timeline tab shows a live view of all query runs, making it easier to visualize run times, compare sequencing, and quickly identify successful, failed, and active query runs.

We've also moved Environments, Releases, and History to the status bar for easier access. The status bar is only visible to users with edit permissions.

To access the Debug Tools beta, navigate to the Beta tab in your organization’s settings and turn on the Debug console and status bar toggle. Share your feedback with us by clicking on the Beta Feedback button in the top right corner! These updates are currently live on cloud and will be available on-prem in v2.98.

Dynamic Icons

You can now configure icons dynamically! Anywhere in Retool where you can add an icon, like a prefix/suffix icon for Text Input components, you can now dynamically change it based on any Javascript expression. Type the new command /icon to pop up the new icon picker to choose from over 3,000 searchable icons with support for bold and outline styles.

These new icons and the ability to set dynamic icons are available for all cloud-hosted Retool instances and will be available in an upcoming on-premise release. Let us know if you have any feedback in the community forum.

Fixes and improvements

  • Fixed the "allow overflow" option on Table component columns
  • Improved overflow for Table component cells with large contents
  • Fixed the focus API for Date and Time components
  • Fixed the Tags component to show more text when wrapping is turned off
  • Improved the Tags component so that it can fit on a single line
  • Fixed default labels for Select components
  • Fixed the default workspace for permission groups
  • Fixed a rendering issue on focus for Listbox and Multiselect Listbox components
  • Fixed the authentication dropdown for REST resources in the query editor
  • Added support for tel:, sms:, and webcal:// links in markdown
  • Added support for forwarding cookies for HTTP requests inside custom authentication
  • Fixed SCIM group deletion so that it will not affect default groups–"admin," "editor," "viewer," "All Users"(on-premise only)

Check out this guide to see the on-prem versions and their release notes. These fixes and improvements will be rolling out to on-prem customers in the next few weeks.

Switching between component types

You can now easily switch the type of a component (e.g. Button →Link), and we’ll transfer over all applicable settings like label configuration, tooltips, and more! Let's say that you’ve set up a Number Input with a default value, min/max, label, and tooltip, and then you decide you actually want your users to be able to select their value via a Slider.

Previously, you’d have to drag out a new Slider component and manually copy over each of your settings one by one. Now, all you need to do is click on the three dots menu in the component inspector (right-hand panel) and click “switch component":

For most input components, you can now switch to a preset or other similar component type (for Number Input, that’s Slider, Percent, Currency, Rating, and Range Slider). Sometimes, we’ll prompt you for additional action when we can’t automatically convert all of your settings: like when switching from a Slider to a Range Slider, you’ll have to choose start and end values. There are so many different options to try out: like switching between different styles of Buttons (Button, Outline Button, and Link)!

We’re rolling out this new functionality to all users over the next week. Additionally, we’re working on fully overhauling additional components like Select and Multiselect, so you won’t see these options on those components just yet. Let us know how “Switch component” works for you, and any other components/presets you’d like to see at support@retool.com!

Fixes and improvements

  • Improved start time when running query
  • Improved performance during drag-and-drop
  • Fixed an edge case where multiple queries to the same resource would occasionally fail
  • Added support for plain numbers in the border radius style editor (assumes px unit)
  • Fixed file parsing for the new file input component types on Windows
  • Added a new option to the Text Input component to show a character count
  • Improved search in the component list
  • Fixed a rare edge case where the preview button in editor mode would hang indefinitely
  • Fixed GraphQL queries to exclude empty optional fields
  • Added support for using self-signed certificates with MongoDB connection string

Check out this guide to see the on-prem versions and their release notes. These features and performance improvements will be rolling out to on-prem customers in the next few weeks.

Event handlers for queries

When your query succeeds or fails, you can now trigger other queries, control components, call additional APIs, and more–all using event handlers!

New event handlers for queries

For most Retool apps you've built in the past, you've probably set up the "After this query runs" triggers. For example, let's say you have a query, selectUsers, populating a Table component; if you insert a new record to the users table, you probably want to re-run that selectUsers query so that your Table is up to date:

Previous query triggers

However, anything more complex–showing a notification, controlling components (e.g. opening a modal)–previously required creating and wiring up a JavaScript query, and writing custom code.

A few months ago, we rolled out new event handlers to all of your components. We're now replacing the old query triggers, and bringing those powerful event handlers to your queries! You can configure any number of event handlers to run when your query succeeds or fails (e.g. on success, show a notification to your end user and open a modal to prompt a new workflow).

Anything you can do with Retool’s JS API (e.g. query1.trigger(), modal.open(), utils.showNotification(...)) you can do with event handlers. If you do have a need to write some custom JavaScript, it's even easier than before. You can just use the "run script" event handler and write your code, without creating and wiring up a new query.

As you build with these new event handlers on your queries, we want to hear from you! Are there more kinds of event handlers you'd like to see us add? Any feedback? Drop us a note at support@retool.com.

Fixes and improvements

  • Updated default component IDs to use camelCase (e.g., checkboxGroup1)
  • Added advanced editor features to the Text Area component, including autocomplete, autocapitalization, and spell check
  • Added support for exploring queries and transformers in the model browser (left-hand panel) while actively editing a different query or transformer
  • Added a change event handler to BoundingBox component
  • Added a Front integration
  • Fixed Folders and Apps so that they're sorted consistently
  • Fixed an edge case with query trigger migrations for the new query event handlers
  • Fixed an edge case where the "Go to app" event handler wouldn't successfully navigate

Check out this guide to see the on-prem versions and their release notes. These features will be rolling out to on-prem customers in the next few weeks.

New

  • Added support for custom SSL options in the** gRPC** integration

  • Improved how we handle errors in the OpenAPI integration

  • Added option to configure Table components to hide the refresh button in its footer.

  • Added support for frozen columns in the **Table **component

Protected Applications (Beta)

  • Added branch management interface to the editor
  • Fixed issue where renaming or moving apps would not sync to git repos
  • Fixed issue opening pull requests in GitHub Enterprise

Layout (beta)

  • Holding CMD will block component interaction and allow you drag and drop components without having to worry about triggering side effects

  • Selecting a hidden components will make the component visible automatically. Performance improvements

  • Apps with larger numbers of concurrent queries (5+) should see significant improvements in the responsiveness of the application when the queries are running.

Modules beta

  • Modules will inherit the permissions sets of their host app. This means that end users will be able view modules used in apps even if they have not been granted explicit view access to those modules.
  • Importing an app with modules will also automatically recreate missing modules that are needed by that app.

Bugfixes

  • Fixed issue where exporting apps on a non-main branch in the protected application workflow would still export the main branch

  • Fixed an issue where OAuth2 flows that had “skip Retool consent screen” turned on was incorrectly interpolating variables

  • Fixed issue where the id token was not being refreshed in the OAuth2 refresh

  • Fixed issue where the Github API Base URL was not visible in the protected apps settings

  • Fixed issue where importing apps would stop working

  • Fixed issue where the Rich Text Editor would be blurred unexpectedly

  • Fixed issue where it was not possible to disable beta experiments

We’ve added an “Alert” component to Retool! Alert components let you provide and highlight feedback to your users. You might hide and show this component based on the response of a query. You can dynamically set the type of alert you show to your users (ex: display a success or error based on the return value of a query). You can also include a button in this component that can take any action a Button component can, such as running a query, or exporting data.

These updates are included in v2.64.40 or higher.

Debug queries in browser DevTools

No longer do you have to console.log everything you can to debug queries. You can now use your browser’s developer tools debugger with Javascript Queries and Transformers! Check out the docs for more details.

For example, to do this in Chrome:

  1. Run the query 2. Open the Sources tab in Chrome DevTools and navigate to a file (Cmd/Ctrl-P) with the same name as the query 3. You should now be able to inspect variables, set breakpoints, etc.

Barcode scanner

You can now scan barcodes in Retool using the Barcode scanner component. The component uses the camera of the device to scan the barcode and returns the code number.

Cascading query deletion

Often deleting a query left your app in a broken state. To fix this, we've changed query deletion to cascade: deleting a query will delete all the references to it. We've added a confirmation modal that explicitly describes what will happen. One note: it's tricky to delete query references in JS expressions, so we leave those as-is and provide references in the confirmation modal.

Preview specific app versions

You can now jump from the editor to previewing the latest or the live version of the app, without having to open the Releases modal.

More powerful components

  • Added support for LIKE operations in the Query builder component
  • You can now allow popups in the iFrame component
  • You can now reload the iFrame component from a JS query
  • The Form generator now allows for fields to be drag-and-dropped reordered. You can also specify dropdowns as an input type.
  • Fixed an issue where opening another Retool app via the Button component sent you to the home page instead
  • Added a lastSubmittedAt field to Text Input components
  • Added option to not clear the Dropdown component when clicked
  • Added the ability to remove borders in the ListView component
  • MultiSelect components no longer expand past the allotted space when full
  • Added a button to clear Text Input components
  • Chart components with duplicate x-axis values now display correctly

Table improvements

  • Long strings in cells no longer crash the table
  • Dropdown type columns now map a value of 0 correctly to its label
  • Numeric columns now align right by default
  • Queries triggered by Button type columns can now access the triggeredById and index fields to see which table and row triggered them

Editor power and quality of life

  • The releases modal now shows email addresses
  • Query editor now scrolls correctly to the bottom of the query list when a query is created
  • Deleting a query now also deletes other properties that reference that query
  • Queries now have a queryRunTime field that contains how long the query took to run
  • Added toggle to always show a hidden component in editor mode
  • Query success toasts now display the query name in editor mode
  • You can now add metadata to gRPC resource requests

Bug fixes

  • The Releases modal now displays the correct page (was off by 1)
  • Accessing currentRow in Button type columns now works as expected
  • List View components using row keys no longer crash
  • New queries no longer incorrectly display "Cannot find property 'get' of undefined"
  • Forms no longer crash when optional fields require validation
  • Text Input components now validate numbers with regex correctly
  • Text Input components now invalidate floats when an integer was required
  • Fixed a bug where connecting a Google sheets resource would occasionally fail
  • Added clarifications to GCS resources that failed silently on upload
  • Creating a folder named "root" no longer breaks your home page
  • The Resend invite button after inviting a user now works as expected
  • Fixed a bug that stopped you publishing the latest version of an app
  • The errors field is now correctly cleared after a query succeeds
  • Custom auth steps when setting up a REST/GraphQL resource now accurately show what variables you have access to
  • Queries no longer have isFetching set to true after completion
  • Fixed a bug where switching apps didn't stop queries on the previous page from running
  • Renaming a page now displays a reason if it failed
  • Copy pasting a Container component now also correctly copies its children
  • Marking a Text Input component as not required in a Form component now works as expected
  • Mappers in Chart components are now recalculated correctly when datasets are toggled

A new home page

The home page is the first screen you see after signing in. It’s the hub of Retool: where you go to create a new app, access apps you’ve already built, and discover apps built by teammates. To make it easier for new users to get started — and existing teams to manage a growing number of apps — we’ve rebuilt the Apps home page from the ground up with a focus on speed and visibility.

Some of our favorite features of the new home page include:

  • Quick links to access apps you’ve recently viewed or starred
  • Ability to view all your folders
  • See when an app was last edited and by whom with more app metadata
  • Search for pages by name (and last editor) and faster page loads

What's using this button?

Components, transformers, state, and queries now show dependencies in the model browser! Hover over the blue icon next to the name to see the dependencies. For example, you can see which components update textinput1 and what components textinput1 depends on.

Tables

As usual, we've made improvements to the table component, given how core it is to the Retool experience. Let us know if there any cases that make using tables particularly slow or cumbersome, and we’ll be on it!

Performance

  • Performance improvements for tables that contain dates
  • Tables with content that overflowed columns now load faster
  • Tables load data faster

Pagination

  • Fixed Action Buttons not rendering correctly in Tables that use forward-cursor-based pagination
  • Allow users to disable the "Next" button on the Table for forward-cursor-based pagination
  • Fixed how the Table decides to update the afterCursor property when the data has been fully loaded

Custom column types

  • Fixed an issue where tables with dropdown type columns did not load dynamic data correctly
  • Fixed an issue where tables with dropdown type columns would sometimes crash
  • Fixed an issue where dropdown type cells in tables would search via value instead of label

Features & Integrations

  • Added startAt and endAt to Firestore queries for use in pagination
  • You can now delete shared queries in the query library
  • Imported queries that have been deleted can now be converted to a regular query

UX Improvements

  • The JSON Explorer component now opens all nodes by default
  • Added Cmd/Ctrl+Shift+P as a shortcut to go to presentation mode
  • Added transformers back to the model browser

Bug Fixes

  • Fixed issue where changing URL parameters in REST resources didn't let you save the resource
  • Fixed an issue where clicking on a state variable wouldn’t focus the inspector
  • Fixed an issue where zero values did not display correctly in Text components

  • General editor performance improvements
  • Dragging new components onto the canvas should be faster
  • Dropdown components are faster when using “Max Results”
  • Faster scrolling for wide tables

Copy and paste components between apps

  • Copy & paste entire components from one app to another!

Visual cue for staging environment

  • Added a yellow banner for both Editor and Presentation modes when staging mode is selected
  • Only available for apps that have a staging environment configured

Visual cue for staging environment

New

  • Start, stop, resume, and reset a stopwatch-style timer timer component

New & Improved

  • Added triggeredby``Id attribute to manually-triggered queries so you know what triggered it
  • Added button to Settings > Advanced page to download Retool’s public key for git syncing
  • Added support for auto-pagination for DynamoDB resources
  • Added ability to specify GCS bucket in resource editor
  • Added ability to specify more than 1 permitted file type for S3 Uploader components
  • Added onchange query trigger for Radio Group components
  • Added write-back capability for BiqQuery resources
  • Added setValue function to Editable Text component
  • Added autocomplete for JS query utility libraries
  • Now displaying hints for common SQL query gotchas in query editor
  • Various performance improvements for big Retool apps
  • Better UX in Query Playground for long queries