Skip to main content

Changelog

Updates, changes, and improvements at Retool.

New input components

We’re rolling out 15+ input components, redesigned and rebuilt from the ground up. These include a full overhaul of components like Text Input and Checkbox, along with completely new inputs like Segmented Control and Range Slider.

Each component offers brand new configuration options, built-in and custom validation rules, and expanded style editor support. We’ve also built these components with accessibility in mind, with features like focus states, full keyboard and screen reader support, and automatic text color selection.

Along with these new components, the grid is also getting major upgrade: we’ve introduced a significantly reduced row height that allows for greater data density and more fine-grained layout control. The height of all new components is automatic and dynamic: growing as you add options to a Radio Group or type in a Text Area, and enabling validation errors to be rendered inline.

These components support their original functionality along with new features like:

  • Text Input

    • Simplified inspector with many options split out into separate components
    • Configurable prefix and suffix text or icons, autofill behavior, and more
  • **Text Area **(formerly part of Text Input)

    • Controls for number of lines and auto-grow as the user types
    • Optional character count display along with min/max validation
  • **Number Input **(formerly part of Text Input)

    • Automatic formatting based on the locale in your browser settings
    • Support for any 3-letter currency code, with the ability to override default display
    • Optional increment/decrement steppers, alignment options, and more
  • Inputs preconfigured to get you started more quickly

    • Email and URL configurations of Text Input
    • Currency and Percent configurations of Number Input
  • Select inputs

    • Segmented Control
    • Radio Group
    • Checkbox and Checkbox Group
    • Switch (formerly Toggle) and Switch Group
  • Password Input

    • Optional show/hide password toggle
    • Regex validation and autofill types
  • Sliders

    • Slider for selecting single value
    • Range Slider for selecting a start and end value
    • Rating, with support for 3 different icon sets — stars, hearts, and smileys
  • In addition, all new inputs support:

    • APIs to set, clear, and validate an input's value via an Event Handler or JS query

    • Tooltips with GitHub Flavored Markdown and styles based on the app theme

    • Control over label position, alignment, and wrapping

    • Validation rules including custom logic and inline error messages

You can find all of these components in our new compact and reorganized component list that features improved search. Old versions of these inputs have been deprecated, but existing instances will not be affected. If you want to continue using them, turn on the "Deprecated components" switch on the Beta settings page to see the “Deprecated” section in the components list.

Drop us a note with any feedback (or requests for new components!) at support@retool.com.

Utilities

Whether you’re prototyping a new idea or just want to get a CRUD app up and running, we now have 20+ developer utilities to help you build faster. Starting just with a CSV, you can generate a REST API on top of your data, write your data back to PostgresSQL or MySQL, or even autogenerate a CRUD app. We also have plenty of public data sets to get you started.

Check out the full set of utilities and start building today. Any others you’d like to see? Drop us a note at support@retool.com!

Fixes and improvements

  • Added a 'Submit feedback' option to the help menu to send product feedback directly to the Retool engineering team
  • Added a keyboard shortcut ⌘+J (CTRL+J) to show/hide the query editor (bottom panel)
  • Fixed the style editor for Modal components
  • Fixed Date/Time components min and max to use UTC time when 'display in local timezone' is not selected
  • Added back the ability to delete and duplicate transformers and analytics from the query editor sidebar
  • Fixed loading spinners that weren’t visible for some components
  • Fixed styling for URL parameters in REST queries
  • Fixed self-hosted trials that were expiring at the incorrect date
  • Added a OneSignal integration
  • Added support for current_user.metadata when using custom HTTP Auth with REST
  • Improved search in the components list

Enterprise plan

  • Added an environment variable–DISABLE_INTERCOM–to swap email support for default chat support
  • Added a button in the Advanced settings tab to refresh your license key
  • Protected apps
    • Fixed the 'protect page' modal to properly dismiss on branches other than 'main’
    • Improved autogenerated PR descriptions
    • Added entries in the History modal for resetting branches and merging pull requests

Check out this guide to see the on-prem versions and their release notes.

Undo/redo

We’ve completely overhauled the undo/redo system in the Retool editor. You can now reliably undo and redo nearly any action, including:

  • Creating, renaming, or deleting components and queries
  • Editing queries or component properties
  • Any layout operation (including copy and paste)

History

The History modal lets you view changes and revert apps to a prior state. Until now, the list included many entries (e.g. “minor changes”) that made it difficult to pinpoint exactly what had changed. We’ve added human-readable descriptions for every action and consolidated entries, making it easier than ever to identify your changes and jump back to the right moment.

Fixes and improvements

  • Improved load times for our components
  • Fixed S3 download queries that would fail for certain file types
  • Fixed an inconsistent default sticky header setting
  • Fixed the utils.downloadPage API
  • Fixed Snowflake queries to correctly estimate their size
  • Improved error messages for bulk user invites
  • Added the ability to ⌘+click (CTRL+click) on a query, component, or state name inside {{ }} to see its value in the model browser
  • Improved permissions for resource creation
  • Fixed queries triggered by a Navigation component in a Module

Enterprise plan

  • Added a configuration option to disable public pages
  • Added a new page–Environment Variables–in Settings for debugging (Beta)
  • Protected apps
    • Added the ability to protect and unprotect apps from the actions menu
    • Fixed the commit changes modal to display changes since the last commit, instead of against the main branch
    • Improved autogenerated PR descriptions

Check out this guide to see the on-prem versions and their release notes.

Performance

We recently fixed a long term issue that was negatively impacting Retool performance, caused by inefficient transmission of data between our parent application window and our JavaScript evaluation sandbox. We’re now seeing up to 10x faster query result speeds for many Retool apps, especially those with significant data fetching and {{}} usage.

To complement this improvement, we’ve also started to expose some performance metadata directly in the query editor. Hover over query’s runtime in the left panel of the query editor and you’ll now see a performance breakdown for that query. You can inspect each step from when a query is triggered to when the data is processed on the client—making it much easier to debug slow queries.

The performance tooltip will be rolling out to users over the next week. Drop a note to support@retool.com and let us know how it’s working for you.

Self-hosted Retool

If you’re working with sensitive data or in a highly regulated industry, your internal tools almost certainly need to run on your own infra. For developers in this camp, we’ve just introduced much easier paths to spin up self-hosted Retool: 1-click deployment to AWS, a k8s install script, and deployment as a Docker container to any service (Heroku, Render, etc.). Get started now and build Retool apps on your own infrastructure in less than 10 minutes.

Fixes and improvements

  • Fixed the app “Preview” button to wait for all changes to save before switching to preview mode
  • Fixed the “allowed inputs” validation for certain types of the TextInput component (e.g. percentage, number, currency)
  • Added a toggle on custom components to enable the allow-modals sandbox option
  • Fixed the Scanner component's image preview on mobile
  • Fixed failure conditions in a query's “Response” tab so that they’re no longer shown when the setting is toggled off
  • Upgraded the Presto integration JDBC driver to v350
  • Added support to the Presto integration for the source connection parameter
  • Removed license key checking for airgapped deployments
  • Added support for audit log entries when Resources get created, updated, or deleted (Pro plan and above)

Enterprise Plan

We’ve been shipping improvements to Protected Apps over the past few weeks and all of those changes are now live on the latest stable build, 2.69.17–check out this guide to upgrade your Retool instance.

More room to write code

Let’s face it, writing more than a few lines of code inside of Retool isn’t usually a great experience: code inputs are small, there aren’t any line numbers, and the text wrapping can be aggressive. This week, we’re excited to ship a new movable, resizable editor window that can be popped out from any code input. Whether you’re writing a custom component, editing JSON for a Chart component, or writing a long SQL query—it’s finally much nicer to write multiline code in Retool.

We’re working to bring even more code editing improvements to Retool, so drop us a note at support@retool.com and let us know what you’d like to see next.

Fixes and improvements

  • Added 20+ app edit descriptions for the history tab in "Releases and history"
  • Added the ability to automatically format JS queries
  • Fixed the distanceMatrix endpoint for the Google Maps integration
  • Added the ability to set a custom content-type on a S3 upload query
  • Added a permission group setting to grant non-admins access to the audit log
  • Fixed undo/redo when renaming components
  • Added a setting to restrict which user groups can run a query in a query's "Advanced" tab
  • Added the ability to browse MongoDB collection schemas in the query editor
  • Added more defaults to MongoDB fields in the query editor
  • Added support for the insertMany action type for MongoDB queries
  • Fixed the button column type for the Table component to correctly evaluate references to other components and queries when setting the "disabled" field
  • Added text color settings to the Rich Text Editor component
  • Added support for the style attribute in Text component content
  • Fixed a rare edge case with custom auth flows
  • Fixed alignment of profile photos in permissions settings

Enterprise plan

  • Added a button in the “Advanced” tab to verify GitHub repo setup for protected apps
  • Added the ability to set a name when creating protected branches
  • Added links to GitHub commits in “Releases and history” for protected apps
  • Added the ability to turn on protected apps from the settings page
  • Added support for setting the client ID and secret for JIRA resources

Check out this guide to see the on-prem versions and their release notes.

Code editing improvements

Great code editing ergonomics are near and dear to our hearts at Retool. We’ve recently added a few improvements that make writing JavaScript in Retool just a little bit smoother.

Inline code evaluation previews now display the type of the returned value. This is handy for quick reference when working with properties that can accept multiple types:

Retool now also supports and correctly lints ES2020 features, like the nullish coalescing operator and optional chaining. You can replace clunky expressions like {{ (localStorage.values||{}).userStatus ? localStorage.values.userStatus : 'Unavailable' }} with a simple {{ localStorage.values.userStatus ?? 'Unavailable' }}.

Lastly, we’ve improved Retool’s autocomplete to properly infer JavaScript types and offer the available methods and properties, even when chained. If using inline JSDoc comments, the defined parameters will also show up the autocomplete menus.

Fixes and improvements

  • Fixed a memory leak issue causing unneeded query results to be retained
  • Added the returned value type to inline code evaluation previews
  • Added ES2020 support to Retool’s code linter
  • Removed notifications from appearing on every copy and paste operation
  • Fixed Excel files returned from REST API queries to be correctly parsed as base64Binary
  • Added link on the Billing page for admins to view past invoices and payment methods

Enterprise Plan

  • Moved protected apps actions into separate menu in the editor header

One-click reusable queries, right from your app

When you’re writing a query in an app, you may realize that it would be useful in many apps. Rather than copy/pasting your work, you can now extract your resource query to the Query Library and import your new, reusable query wherever you need it! We’ll automatically convert JS expressions to query variables, so that each app can configure its own inputs. To learn more about reusing queries with the Query Library, check out the docs.

Fixes and improvements

  • Added the ability to reset all temporary state variables to their initial value
  • Improved performance of Omnibox ⌘ + K (or_ CTRL + K_)
  • Included Query Library queries in Omnibox ⌘ + K (or CTRL + K)
  • Fixed the Jira query editor to work correctly with POST requests
  • Fixed the query editor so that its height persists throughout a session
  • Fixed the canvas background color for themes in the editor
  • Added support for Vim mode in code editors ⌘ + ⌥ + V (or CTRL + ALT + V)
  • Fixed initial value on app load for the date/time inputs
  • Fixed the function selection for Lambda queries
  • Fixed S3 read queries for binary/octet-stream content-type payloads ** ---**

Enterprise plan

  • Added an environment variable to disable username/password login (DISABLE_USER_PASS_LOGIN)

Check out this guide to see the on-prem versions and their release notes.

Google Maps and Google Analytics integrations

Need to geocode addresses? Find the road closest to a map point? Build a realtime dashboard of visitors on your website?

We've added native integrations with two of Retool’s most commonly connected APIs: Google Maps and Google Analytics. Both integrations come with out-of-the-box authentication support and a custom query builder for discovering endpoints and validating inputs. For Google Analytics, we've prepared a transformer that makes it easy to parse reports into a clean array of objects for charting and displaying in a table format. To learn more, check out the Google Analytics and Google Maps docs.

Improved query sharing

Shared queries imported from the Query Library can now be pinned to their latest version. Before this update, any changes made to a shared query required you to manually bump the version in each app that used it. Now your apps can be in sync automatically with your shared query.

We also now include a list of apps that use a shared query in the right panel of the Query Library. When making big changes to a query (e.g. adding new variables), you can quickly open each app from the list and carefully update them, as needed.

Pinning to the latest version is only available for cloud customers, if you'd like to use it on-prem, shoot us a note at support@retool.com.

Fixes and improvements

  • Added support for copy/pasting multiple components

  • Added autocomplete for native JavaScript functions in JavaScript queries

  • Added support for ES2020 features like nullish coalescing and optional chaining

  • Updated pasted components to use their original name

  • Improved performance of apps with a Table component

  • Added a setValue API to the Slider component

  • Added play, pause, and seekTo APIs to the Video component

  • Added a duration property to the Video component

  • Fixed inspector for the Calendar component

  • Fixed the size of the Modal button when disabled

  • Fixed event handlers on the S3 Uploader component

  • Fixed the default name for new S3 Uploader components

  • Fixed component positioning when pasting into containers

  • Fixed some folders not appearing in the "Add to folder" dropdown when creating a new app

  • Added link to "Releases and history" when previewing an app ---Enterprise plan

  • Added support for creating releases for protected apps

  • Fixed "Releases and history" to show history for the current branch on a protected app

  • Enabled editors to reset a protected app to the state of a remote branch

Check out this guide to see the on-prem versions and their release notes.

Event Handlers

Think of a Retool event handler just like addEventListener** ** in native JS or **onChange** in React. Before, components could only trigger a single query, and anything more advanced would require writing JavaScript. Now, you can configure components to trigger multiple queries, control other components, and call additional APIs in response to user interactions.

We’ve also greatly expanded the number of events available on components, and added new utils and component APIs. Anything you can do with Retool’s JavaScript API (e.g.** _query1.trigger()**_, modal.open(), **utils.showNotification(...)**) you can now do with Event Handlers. Event Handlers will be rolled out to all customers over the next few weeks. To learn more, check out the docs.

Style Editors

Every component now has a style editor in the inspector, making it easier to customize the appearance of your applications without CSS. You can edit the background, foreground, borders and more—you can even use a JavaScript expression for dynamic colors (e.g. {{ checkbox1.value ? 'purple' : 'yellow' }}). Style editors will be rolled out to all customers over the next few weeks. To learn more, check out the docs.

Group Admins

Admins can now assign Group Admins to manage membership for any custom groups.

Previously, only Admins could manage membership for custom groups. Now, Admins can grant any number of group members the Group Admin privileges to add new users or remove existing users. Group Admins will be able to see all users within an org, but are not able to modify any aspect of their group beyond membership (e.g. app and resource permissions).

Fixes and improvements

  • Improved performance when typing in a TextInput
  • Added the ability to unpublish a release, which switches an app back to using the latest working version
  • Added an action to format SQL or GraphQL queries in the Query Library
  • Added more information to document titles to make working in multiple browser tabs easier
  • Added new templates for an Elasticsearch Admin Panel, Datadog Elasticsearch Admin Panel, and Twilio + Segment Personalized Outreach App
  • Reduced app startup time
  • Fixed visibility of the spinner when saving changes in a Table
  • Removed updatedAt property from release and commit diffs
  • Improved performance of apps with multiple modules
  • Fixed display of debug data when testing a custom auth flow with an OAuth step
  • Changed query search in the Query Editor to be case insensitive
  • Fixed incorrect page documentation content on public apps
  • Fixed styles of the color picker in the inspector
  • Fixed documentation links for several resources
  • Fixed "last active" date on the Users page under Settings

Enterprise plan

  • Fixed default folder permissions for new pages that use Git Syncing

Check out this guide to see the on-prem versions and their release notes.

App Documentation

**READMEs. **README files are a staple of any programming project. If you're on the Startup plan or above, all of your Retool apps now come equipped with a built-in README file. To open it, click on the app’s description in the navigation bar. The Editor README is a great place for sharing information with other Retool editors in your organization: details on working with data sources, descriptions of business logic, or ground rules for making changes.

User Documentation. Of course, developers aren’t the only ones who benefit from documentation. For customers on plans that support end-user only permissions (Pro and above), we’ve also added User Documentation support. Here you can provide information that will be visible to your app’s users, like how to operate the app and who to contact when there’s an issue. (You can also set the docs to open automatically for users firing up the app for the first time.)

To learn more about App Documentation and how to bring sophisticated text display to Retool, check out our blog.

Fixes and improvements

  • Introduced ⌘/⌃X to cut/paste components on the canvas and between apps
  • Corrected placement of pasted components to be more predictable
  • Improved the Text component:
    • Reintroduced a background color option
    • Reintroduced support for the class attribute on HTML elements
    • Improved styles for nested lists and headlines
    • Fixed a bug where toggling staging mode would reset the height
  • Added the ability to turn a Container into a Tabbed Container from the component’s Inspector menu
  • Updated the Container deletion confirmation to list child components that will also be deleted
  • Updated Table and Chart to use the currently selected query by default when created
  • Updated the Table setFilters_ _API to support "OR" in addition to "AND"
  • Fixed a bug where custom CSS did not load correctly in Modules
  • Added support for tabbing between components in the editor
  • Added support for opening a new tab from the Omnibox by holding ⌘/⌃
  • Added keyboard shortcut to toggle the canvas grid lines (⌘/⌃+Shift+G)
  • Updated the Query Library to display duration after running a query
  • Updated the Releases list to include the creator and publisher of each release
  • Fixed a bug where renamed components, queries, and transformers could collide with reserved Retool names (e.g. utils)
  • Fixed a rare bug where JS references to a component wouldn't be updated on rename
  • Improved error messages when renaming components, queries, and transformers
  • Redesigned tooltips in the Inspector
  • Updated the Alert component to be resizable up to 4 rows in height
  • Fixed a bug where editors without "use" permissions could add a Module to apps
  • Fixed Snowflake queries to respect the_ DBCONNECTOR_QUERY_TIMEOUT_MS_ env variable
  • Fixed a bug with Stripe queries that contain array parameters
  • Fixed a bug in Google Cloud Storage queries where the default export file type was invalid
  • Fixed a bug where disabled users would show up in the app users list

Enterprise Plan

  • Updated protected apps to create an initial commit when starting with an empty repo
  • Fixed author data when syncing protected branches to Retool
  • Fixed a rare bug where the GitHub API would not return the entire tree for a protected app's repo

Text v2

We’ve just launched a brand new version of our Text component. The component includes:

  • Full support for all GitHub flavored markdown features — 6 different headline sizes, bold, italics, strikethrough, underline, bullet lists, numbered lists, task lists, images, links, blockquotes, code blocks, and tables.
  • Dynamic height with the “hug contents” option, on by default
  • Inspector improvements including a markdown-aware code editor and image scaling options

The new Text component no longer supports advanced HTML rendering. If you require more custom HTML, check out the iFrame component or the Custom component.

App specific styles and scripts

You might have noticed that the Text component doesn’t support adding style tags for custom CSS. Good news is, you no longer have to hack in CSS into random Text components. You can now add styles specific to your application in the “Scripts and styles” modal. As the name suggests, this panel also lets you add JS libraries and define custom code in your applications.

Layout improvements and dynamic containers

We’ve refreshed the way drag and drop works in the editor for easier editing and a faster feedback loop:

  • Redesigned component bounding box for easier selection, drag, and resize
  • Instant drag-and-drop feedback with no countdown timer
  • Major improvements and fixes to layout reflows from drag-and-drop and hidden components
  • Hidden components are now visible when selected
  • Support for opening/closing modals and switching Tabbed container tabs during drag-and-drop

We’ve also added dynamically resizing to some containers. The Container component, Tabbed Container component, and Form components now include a “hug contents” setting that automatically sets the height of the container based on the height of its contents!

For a quick guide on how these changes can make you faster at editing, check out the docs.

Chart v2

Our new chart component, built on top of the open source Plotly library, makes data visualizations easier to build, update, and consume. It makes it simple to build charts right out of the box with all of the basics—like mixed chart types, built-in aggregations, and support for grouping—included. And because you’re building charts in Retool, you can take action on the data you’re looking at by easily writing back to your database, making an API request, or whatever else is impactful. See how other Retool users are leveraging charts in our blog post or checkout our webinar on how to build data-driven dashboards in Retool.

Modules

Modules are a new way for Retool customers to reuse groups of components and queries between applications. Modules give you the ability to create a shared library of reusable components and queries that you can use in any Retool application. Any update you make to a module is immediately reflected in every app it powers. Check out our blog post and the docs.

User Management Improvements

A brand new UI and folder-based permissions. Quickly and effortlessly manage access for many users.

A suite of new integrations

We’ve added integrations for Jira, Asana, Datadog and BigID, with many more to come!

Refreshed Query UIs

We’ve updated our UI for some of our most popular integrations including Stripe, Twilio and Sendgrid. Among many visual improvements, the new UI includes inline documentation for the resources so you no longer have to constantly switch between Retool and the Stripe/Twilio/Sendgrid documentation when writing your queries.