Retool v2.73 release notes

Event handlers: run script

You can now run JavaScript with side effects directly inside of an event handler without having to create and manage a separate JavaScript Query.

Previously, if you wanted to run JavaScript with side effects—like triggering a query query1.trigger() or downloading data utils.downloadFile(…) — you had to create a new JavaScript query, write your code, save your query, and wire up a “Trigger query” event handler.

To streamline this common workflow, you can now write custom JavaScript code directly in your event handler with the new “Run script” action. You can utilize Retool’s full JavaScript API that allows you to control components (e.g., table.selectRow(index), input.setValue(…)), show notifications utils.showNotification(…), set temporary state state.setValue(…), set key/value pairs in local storage localStorage.setValue(…), and more. Check out this guide to learn more about what you can do with JavaScript in Retool.

Additional API methods you’d like to see us add? Any other feedback while working with “Run script” or JavaScript queries? Drop us a note at [email protected]


Switching between edit and preview is now much snappier! When building an app in Retool, you’ll often jump back and forth between editing your app and previewing what it looks like for your end users. We’ve just shipped some big performance improvements to the path:

Performance is always top of mind for us. In an effort to make every app load faster, we’ve leveraged code splitting to reduce the size of our main Components bundle by 63%. Now, your apps only pay a performance cost for the components you use. We have several engineers focused on burning down a list of similar improvements to app performance–drop us a note at [email protected] if there are parts of Retool you want us to focus on!

[Beta] Testing

Testing is now available in beta! You can add tests to increase confidence in updating and maintaining your Retool apps. See for more info.


Release 2.73.20

Published on August 18, 2021.


  • Added support for table column header to be affect by column alignment setting
  • Added a keyboard shortcut ⌘ + U (CTRL + U) to toggle the right panel (Inspector) open/close
  • Added an option to customize the 'no rows found' text when a table is empty
  • Added a new option to Tabbed Container to preserve UI state across hidden tabs
  • Improved the dialog when deleting multiple components to show child components that will also be deleted
  • Improved the query selection dropdown for event handlers to include the name of the resource for a given query
  • Improved performance on initial render of the canvas and Container components
  • Improved performance of apps with many dynamic height components
  • Added the ability to set custom content-type on Google Cloud Storage upload query
  • Added a submit event to the Notes component
  • Simplified the History modal further by removing an unneeded entry type
  • Added appName to retoolContext so you can dynamically access the name of the current app (e.g. {{retoolContext.appName}})
  • Added the ability to copy table names from the database schema
  • Added a button to the Users page for admins to download their user list as a CSV
  • Added change event handler to BoundingBox component
  • Added a Front integration


  • Fixed keyboard shortcuts incorrectly triggering while using an Email input in the editor
  • Fixed localStorage.setValue so that it will no longer trigger queries that depend on other keys in local storage
  • Fixed rendering of tooltip for app shell to also ensure there are not already any components in the header frame
  • Fixed overflow issues with long before/after text in Text, Number, and Password inputs
  • Fixed cases where drag-and-drop could get blocked by iframes on the canvas
  • Fixed unexpected layout shifts on some apps with multiple Text components
  • Fixed an edge case where the "Go to app" event handler wouldn't successfully navigate
  • Fixed an edge case with the new query event handlers so that old query triggers are properly migrated
  • Fixed Folders and Apps so that they're sorted consistently
  • Fixed background license checks to work again
  • Fixed autocomplete so test functions are not autocompleted outside of the test editor

Release 2.73.22

  • Snowflake now respects the DBCONNECTOR_QUERY_TIMEOUT_MS environment variable
  • Fixed committing changes to apps under Source Control in large repositories

Release 2.73.24

  • Added module versioning support behind a feature flag. Contact support ([email protected]) if you would like this enabled for your organization.
  • Fixed issue with running migrations on boot when using DATABASE_URL parameter for configuring PostgreSQL connection

Upgrade Guide

If you're upgrading from the Retool v2.72 series or earlier, note that this release contains database migrations. Please make sure that the migrations run successfully.

If you're upgrading from a different, older version of Retool, please follow the Updating Retool On-Premise guide.

Did this page help you?