Self-hosted Retool release notes

Change and update information for Self-hosted Retool.

Retool releases a new version of self-hosted Retool every two weeks. Retool also updates existing versions with bug fixes and improvements as needed.

Version information and selection

Retool version numbers are formatted as X.Y.Z:

  • X.Y represents the release version, such as v2.93. This increments with each new version released.
  • Z represents the full version of the release, such as 2.93.9. This increments with each update and does not always start at zero.

We strongly recommend you point your Dockerfile to the full X.Y.Z version rather than a Docker tag name. This ensures that the version of Self-hosted Retool remains fixed in the event you need to roll back or troubleshoot issues with your deployment, or maintain multi-instance deployments.

Identify your current version


Avoid downgrading to previous versions

Retool performs database migrations during each update of Self-hosted Retool. Downgrading to a previous version can cause unpredictable issues.

As you consider updating your Self-hosted Retool deployment, ensure you choose a newer version. You can identify your current version of Self-hosted Retool by logging in and clicking on the Help menu in the lower-right of the Organization dashboard.

Identify the current version of RetoolIdentify the current version of Retool

Release notes

The following release notes detail the changes and updates for each version of Self-hosted Retool. Refer to Retool's Changelog for more information about new products and features.


Release notes for Self-hosted Retool 2.96. First released on August 12, 2022.


  • Fixed a bug that passes opposite Skip TLS Certificate Verification value
  • Fixed auto-complete suggestions when writing JavaScript directly so that they won't suggest leading curly braces
  • Fixed an issue causing to include form fields without form data keys
  • Fixed an issue where queries with Run query only when manually triggered enabled incorrectly blocked execution of dependent queries
  • Added POSTGRES_SSL_REJECT_UNAUTHORIZED environment variable to allow disabling SSL/TLS validation for self-signed certificates (defaults to true)
  • Improved menus in editor list items (e.g., menu items, event handlers) in the Inspector so that they only show up on hover
  • Added initial value for Max lines for all new mobile apps
  • Improved visual collection view layout
  • Fixed hide table border for top toolbar tables
  • Adds formatting options to the Grouped mode of Timeline
  • Fixed tap area of text inputs
  • Added an option to show or hide table border for table widget
  • Added Freetool gating in app and resource editor
  • Added Freetool gating for app history
  • Improved validation for date and time formats
  • Made Google sheets private by default
  • Made Google Sheets User Auth generally available without flag
  • Made Google Sheets Service Account Authentication generally available
  • Fixed JS colors in tag column type
  • Improved padding editor experience
  • Fixed autocapitalization of first letter of password text input
  • Improved hover states and selected menu items in the sidebar nav and Query Editor
  • Updated styles of onboarding module and learn page to remove certain shadows and big borders
  • Widget labels will be shown within the widget bounding box when there is not enough space in its container to display the label below the bounding box
  • Unified and expands supported IFrame permissions for IFrame and Custom Component widgets
  • Fixed default style editor labels for some properties
  • Fixed drag and drop scroll behavior in the Code section of the Explorer
  • Fixed typo in dynamic column setting restricedEditingMapper
  • Fixed how multiple views are displayed within a list view in the component tree
  • Fixed an issue causing the table pagination bar to collapse when in server side pagination mode
  • Fixed a case where certain labels in the Explorer weren't properly overflowing
  • Fixed a few bugs with the widget resize dimensions tag
  • Fixed an issue causing key value widgets to sometimes not render correctly in list views
  • Improved notification layout experience
  • Removed unnecessary notification
  • Added year information to Releases view and Page Documentation view
  • Fixed references to self in Run script event handlers when using Modules
  • Added API functions showNextVisibleView and showPreviousVisibleView for stepped containers
  • Fixed an issue with list view docs page
  • Cleaned up Concurrent Editor Popover title
  • Fixed JS colors in tag column type
  • Fixed default Style editor labels for some properties
  • Added private beta access for config variables
  • Added the new Deployment Dashboard which serves as a hub for Source Control settings and allows users to see a list of Source Control deployments on their instance


Release notes for Self-hosted Retool v2.95. First released on August 1, 2022.


Upgrading to v2.95

In v2.95, Retool upgraded the Node.js version it uses which may require you to set the POSTGRES_SSL_REJECT_UNAUTHORIZED environment variable. If your main PostgreSQL database uses self-signed certificates, you need to set this variable. It defaults to true but can be set to false to prevent errors related to self-signed certificates in the certificate chain.


  • Fix Authentication Modal for Snowflake and old Salesforce resources
  • Disable default behavior from autoselect on enter key press in select widget


  • Added the POSTGRES_SSL_REJECT_UNAUTHORIZED environment variable to control validation of SSL/TLS certificates when connecting to the main PostgreSQL database. This variable defaults to true, but can be set to false to prevent errors related to self signed certificates in the certificate chain.


  • Added support for Retool's new Free plan, which lets developers and teams up to five use Retool indefinitely, with the ability to use apps in end-user mode.
  • Source Control Deploy Dashboard is now available in beta. This new dashboard makes it easier to configure Source Control settings, monitor deployments, and view logs. You can enable the feature in your organization's Beta tab.
  • Apps now include a Header frame on the Canvas by default, allowing you to build a custom header for your application. Header frame was an opt-in feature in previous versions but is now the default for new and existing apps. An app's Header frame only appears in end-user mode if it contains at least one component, such as Navigation. Learn more about these functionality changes and the expanded options for custom branding in the docs.
  • New authentication methods to securely connect a Google Sheets resource. You can now authenticate with Google using:
    • User OAuth (beta): OAuth-based authentication with individual user credentials. This is currently in beta for Self-hosted Retool v2.95+ and can be activated from the Beta tab in your organization settings.
    • Shared OAuth: OAuth-based authentication with shared user credentials.
    • Service account authentication: Authenticate with a service account tied to a Google Cloud project.

Fixes and Improvements

  • Fixed an issue allowing plugins with invalid names to be created
  • Added year information to app history view
  • Fixed bug in DateRange to update formattedValue when textBetween is edited
  • Fixed an issue causing updates to not execute when they depend on certain queries
  • Enable progress circle to show values less than 0 and greater than 100
  • Allow parentheses and longer domain suffixes in URL validation
  • Added more specific type names for plugin autocomplete hints
  • Added a new environment variable NUM_WORKERS to allow specifying the number of workers to dedicate to the Retool instance
  • Updated search in the Code section of the Explorer to autofocus on click
  • Fixed a bug where module input queries could be imported into the Query Library and subsequently cause the Query Library to freeze
  • Hide the horizontal scrollbar on Multiselect when tags don't wrap
  • Added support for sending body with custom authentication browser requests
  • Updated the Navigation component to open links in a new tab when holding CMD/Ctrl
  • Improved contrast in Contrast text colors
  • Fixed the vertical alignment of the label on Text Area and Multiselect
  • Added support for custom branding (logo) to the 2FA page
  • Added Helper text to the Text Area component
  • Enable users to configure whether Table components have a box shadow. Disabled by default on new tables, enabled for old tables to maintain backwards compatibility
  • OpenAPI query editor now displays parameter descriptions passed in schema.description in tooltips
  • Improved search tags for components list
  • Enable auto-indexing
  • Moved the changeSet and recordUpdates to the top of the table model browser
  • Added "Invalidate query cache" option in query menus in app editor
  • DebugTools will now show newlines in string literals and console log statements
  • Fixed an issue preventing reordering of columns when some columns are frozen
  • Fixed "Reset state" for temporary state when the state explorer is open
  • Allow drag to reorder table columns with "Apply to column order" on
  • Added a Format option to the grouped mode of Timeline
  • Upgraded backend to Node.js 16
  • [Beta] Added option to connect to Postgres using AWS IAM authentication


Release notes for Self-hosted Retool v2.94. First released on July 14, 2022.


  • Fixed tooltips in containers when a dark theme is applied
  • Fixed an issue where a Table given with empty column-based data would not display the columns
  • Improved spacing of server-side pagination controls
  • Fixed a performance issue affecting large apps with certain pattern of layouts
  • Allow table columns with Apply to column order on to be dragged to reorder
  • Changed Checkbox default event handler from "True" to "Change"
  • Cursor-based, server-side-paginated tables can now say how many rows they contain explicitly
  • Autocomplete suggestions will now pull a preceding ! into the curly braces if appropriate
  • Turned off the RUN_QUERY_BY_UUID_METADATA logs by default but can be turned back on with the ENABLE_RUN_QUERY_BY_UUID_METADATA_LOG environment variable
  • Fixed some unexpected drag-and-drop issues in the editor
  • Fixed an issue with SCIM based group mapping which was preventing syncing of Retool's default groups with Okta
  • Fixed vertical alignment of text inside Table Modal cells
  • Event handlers can now be added to handle canceling changes in the Table component
  • Fixed circular dependency errors when referencing widgets in list views with dynamic indexes
  • Fixed retoolContext.appUuid in public apps
  • Editors receive guidance when adding rows to a table with no editable columns
  • Number Input now exposes its value during editing as inputValue
  • Added option to allow deselecting for Select component
  • File Inputs can now parse Excel dates
  • Added new keyboard shortcuts to move and resize components by five rows at a time
  • Added pattern validation to Text Area and Editable Text Area
  • OpenAPI resources now refresh access tokens when responses fail (any non 2xx response)
  • Added a new option to file inputs to support appending new files instead of replacing the current selection
  • Captions are no longer hidden when no label is provided
  • Added an onLoad event to the Video component
  • Added a "click" event to the Statistic component


Release notes for Self-hosted Retool v2.93. First released on June 24, 2022.


  • Added "Allow deselect" option for Listbox components
  • Added a sid property to current_user in the global context
  • Fixed cursor-based pagination with scrollable Tables in some cases
  • App headers now collapse to fit their contents if they are shorter than 5 rows
  • Fixed custom styles for Modals in embedded apps
  • Added helpful messages for Google Sheets service account resource settings
  • Fixed a z-index issue affecting Tables with Modal columns within nested modals
  • Added auth modal for custom auth flow
  • Fixed an issue where Date Time could show the wrong popover based on the focused subfield
  • Fixed an issue where dynamic height rows in Table would sometimes overlap
  • Consolidated "Control query" and "Trigger query" Event Handler types
  • Fixed a bug where Select and Multiselect would show the clear button even when no value was selected
  • Fixed styling issues with empty state text on Listbox and Multiselect Listbox
  • Fixed custom auth modal behavior to let users authenticate with more than one custom auth resource
  • Modules no longer have a place to input custom CSS
  • [beta] Added option to connect to Google Sheets with a service account


Release notes for Self-hosted Retool 2.92. First released on June 08, 2022.


  • Fixed an issue where some queries would run indefinitely.


  • Fixed an issue with custom logo upload in Branding settings.


  • Allow editors to enter the editor via URL when VERSION_CONTROL_LOCKED is set to true.


  • Initial release of Self-hosted Retool 2.92
  • Added support for HTTP Digest authentication to the REST API resource
  • Fixed an issue where some components would shift around when upgraded to new versions
  • Fixed alignment between folder name and icons on the dashboard homepage
  • Fixed an issues with Tabbed Container components nested in List View components
  • Fixed the PostgreSQL connector so that connections are not held open unnecessarily
  • Fixed an issue where Custom Authentication modals would not display for users


Release notes for Self-hosted Retool v2.91. First released on May 11, 2022.


  • Fixed an issue with parsing recursive proto files


  • Fixed an issue where some queries would run indefinitely.


  • Fixed an issue with custom logo upload in Branding settings.


  • Allow editors to enter the editor via URL when VERSION_CONTROL_LOCKED is set to true


  • Fixed an issue where Custom Authentication modals would not display for users


  • First release of Self-hosted Retool v2.91.
  • Resources can now be protected and checked in to your connected Retool Source Control Git repository. This enables resources to be synced across any Retool instances configured to pull from the repository, just like Protected Apps. To enable the beta, go to the Settings > Beta tab and select Protected Resources. This feature is under active development, so give it a try and let us know what you think.
  • Added support for additional GCP BigQuery regions
  • Added support for Snowflake form generation
  • Added support for Elasticsearch, MongoDB, MSSql, Cassandra, Postgres, and Redis users to explicitly opt out of TLS certificate validation
  • Added a range of valid values for the Rating component (between 0 and 20)
  • Improved the Multiselect component to scroll to the last selected item, rather than the first
  • Fixed an edge case where MSSql query errors were not surfaced to users
  • Fixed various bugs and polished the MongoDB query editor
  • Fixed the Postgres connector so that connections are not held open unnecessarily
  • Fixed incorrect overlays when certain components were placed in nested Modal components
  • Fixed the default item name of new options created for the Split Button and Dropdown Button components
  • Fixed the Table component's cell colors when using a theme


Release notes for Self-hosted Retool v2.90. First released on May 11, 2022.


  • Fixed an issue with parsing recursive proto files


  • Fixed an issue where some queries would run indefinitely


  • Fixed an issue with downward syncing in Source Control when an empty app is present.


  • Fixed an issue where Custom Authentication modals would not display for users


  • Improved the LDAP group mapping feature so that you can map a single google group to multiple retool groups (using the LDAP_ROLE_MAPPING env variable)
  • Fixed the downloaded users CSV so that the last active date always appears
  • Added validate and clearValidation APIs for the Form component
  • Improved selection in the Table component such that selected rows will now be selected and deselected correctly while filtering
  • Fixed the Date Time component so that the Date subfield correctly persists its value
  • Fixed alignment in the query editor for REST API queries
  • Added a new "Reset state" action to the component context menu
  • Fixed an issue where the Select component would unexpectedly reset the input value when connected to a dynamic datasource
  • Fixed an edge case where scrolling a Select in a modal would sometimes scroll the application
  • Added a new group permission to allow view only users to view unpublished releases of apps when release management is enabled


Release notes for Self-hosted Retool v2.89. First released on April 27, 2022.


  • Improved drag and drop behavior on Safari for the Image component
  • Fixed theme in the model browser so that it shows changes correctly
  • Added the ability to save a query even when it's running
  • Improved query creation from event handlers so that it default creates the last selected query type
  • Fixed the Table component's "select all" menu for checkbox selection
  • Fixed an edge case where transformers would not run on page load
  • Improved the experience of resizing components
  • Fixed the Date Time component so that the Date subfield correctly persists its value
  • Fixed an issue where the Select component would unexpectedly reset the input value when connected to a dynamic datasource
  • Fixed an edge case where scrolling a Select in a modal would sometimes scroll the application
  • Fixed an issue where Custom Authentication modals would not display for users


Release notes for Self-hosted Retool v2.88. First released on April 13, 2022.


  • We’ve added support for multiple environments, making it easy to build, run, and test applications to suit your development needs. Now, you're not constrained by only Staging and Production: admins can configure as many environments as they need under Organization Settings > Environments.
  • Fixed visual height Switching height from auto to fixed now preserve visual height
  • Added support to control which menu items are highlighted in the Navigation component
  • Fixed dynamic height components so that they don't shift the canvas layout when deleted
  • Increased the size of handles on components to make resizing easier
  • Improved drag-and-drop such that moving a component into a Container component will preserve its width as much as possible
  • Fixed action buttons for the Table component so that they fire on first click in editor mode
  • Fixed the editor canvas so it does not change it's size when dragging components
  • Fixed component selection so that hidden containers stay visible when you're selecting any component inside of them.
  • Fixed the Slider component and the Range Slider component's outputs when the value is over 1,000


Release notes for Self-hosted Retool 2.87. First released on April 01, 2022.


  • If your organization uses GitLab you can now take advantage of the features provided by our Source Control integration. Retool's Source Control enables branch-based editing on Retool applications. It allows organizations to manage changes using pull requests and syncs their applications across multiple instances of Retool. Follow our guide to setting up source control with GitLab to get started.
  • We have introduced the new HTML Component so that you can quickly add custom HTML and sandboxed CSS to your apps. This component is perfect for use cases that require a little bit of custom UI without the full scripting capabilities that Custom Component provides.
  • We have also introduced a standalone Icon component with over 3,400 icons to choose from! It supports alignment options, alt text for accessibility, and optional click event handlers.
  • Dynamically set the icon based on any state from your application to give helpful visual clues:
  • Added a new "Auto" height option for Modules, allowing them to resize themselves to fit their contents
  • Added the ability to dynamically set whether a Table component supports selecting multiple rows
  • Added markdown syntax highlighting to tooltip fields in the Inspector
  • Added the ability in edit mode to select components when a Container component is in a loading state
  • Adjusted the amount the Container component grows when dragging in child components
  • Improved the editing experience when working with the Container component
  • Fixed layout issues with dragging hidden components
  • Fixed an edge case where style editor colors would occasionally display incorrectly
  • Fixed an issue where you could not programmatically call selectRow in Table components with multiple selection enabled
  • Fixed the Table component's "sort change" event handlers which were temporarily not firing
  • Fixed event handlers in the Split Button component and the Dropdown Button component when options are hidden
  • Fixed the confirmation message when deleting queries, transformers, and temporary state
  • Fixed the Table component's "Add new row" action so that it no longer overwrites the first row in your Table when uploading an image
  • Fixed the focus JavaScript APIs for the Listbox and Multiselect Listbox components
  • Fixed app URL parameters when they reference components
  • Fixed an edge case in the options list editor where items would be duplicated in Manual mode
  • Fixed the Dropdown Button component so that it is square when it only has an icon and no text
  • Fixed validation for icons configured via the options list editor in Mapped mode
  • Fixed the Date Time component so that it is not editable in readonly mode
  • Fixed the Form component so that it doesn't clear its fields if the submit event fails


Release notes for Self-hosted Retool v2.86. First released on March 16, 2022.



We strongly recommend updating to 2.86.14+

Versions 2.86.12 and 2.86.13 included a regression which broke new and existing Postgres resources that connect using SSL. Please upgrade to 2.86.14 if you are experiencing these issues. Git Syncing (with Github) is failing on versions before v2.86 due to a change in SSH encryption requirements on GitHub. Please upgrade to v2.86.14 or above to fix broken Git Syncing functionality. No other SCM providers (Gitlab, Bitbucket, etc.) are affected.

  • We've brought the power and flexibility of our canvas components–like the new Rating component or the rebuilt Date Time component–to our Table with over 20 new column types to choose from.
    • These column types provide new and expanded functionality to display numeric values in the Table component. Like the Number Input component on the canvas, you can control decimal places or support any 3-letter currency code. You can also display a star rating of your numeric values with the Rating type.
    • Display formatted emails using the new User Email column type. If the email address has an associated Retool account, you'll get better formatting out of the box: including the email, the user's profile picture (if applicable, otherwise their initials), and full name.
    • Display multiline text easily with the new Multiline column, or take advantage of full GitHub Flavored Markdown support in the Markdown column. Use the HTML column type to render HTML in your table cells.
    • Display dates and times, and automatically handle time zone in the Table with "manage time zone." "Display" time zone controls how time is displayed to your users, while "Value" time zone controls how it’s encoded, so you can do things like have the display time zone follow your user's local browser, but encode the time in UTC! The new Date, Time, and Date Time columns also support an expanded list of formatting strings.
    • Display images from a URL or allow your users to upload an image directly with the Image Link and Image Upload column types.
    • The new Single Tag column type replaces the existing Dropdown column type: when your user edits the cell like above, they'll see the familiar dropdown. You can configure the data source that populates the list of options in the dropdown: it defaults to the unique column values, but you can also choose a query, transformer, or just JS. When your user selects an option, it will be rendered as a tag! Tag colors can be automatic or configured with JS. In the next few weeks we'll be rolling out the Multiple Tag column type, so your users can similarly select multiple options from a Multiselect dropdown.
    • Additionally, check out the new JSON column type (instead of Object), the Link type, and the rebuilt Modal and Button types.
  • We've added better overflow handling so that truncated cells will expand on hover, and multiline cells will also grow on hover to show more of their content. The editing experience also got a revamp: there's a new indicator for edited cells in the top right corner of the cell, and we've made it easier to directly edit Boolean and Rating cells.


Release notes for Self-hosted Retool v2.85. First released on March 02, 2022.


  • We rebuilt our theme editor, which allows you to create themes that control the look and feel of applications across your organization. Under your organization settings, you’ll find Themes, where you can create new themes and modify existing ones.
    • The new editor includes improved descriptions of all the style properties and a revamped, live-updating preview–so you can see how your color selections will impact your apps 🎨. We also introduced several new settings, like status colors. You can also now configure text colors: components will automatically use the most readable option of the light and dark colors you choose!
    • Themes are available on Business or Enterprise plans. We’ll soon be adding even more properties–so be sure to drop us any feedback in the community forum.
  • This week we’re highlighting some major improvements to containers including support for multiple views, collapsible containers, and new presets for multistep flows and tabs.
    • Multiview makes it easy to swap between different groups of components within a single Container. Add any number of views via the Inspector, each with a grid to drag components onto. The current view can be controlled with event handlers, the setView API, or conditional logic in the default view settings.
    • You can enable multiview on any Container, but we’re also launching presets for common multiview patterns.
    • The redesigned Tabbed Container comes pre-configured with a Tabs component linked to a multiview Container. Tabs can now be moved and customized independently, and individual tabs can be disabled or hidden.
    • The brand new Stepped Container provides a quick and easy way to build beautiful multi-step flows. Like Tabbed, it comes pre-configured with the new Steps component linked to a multiview Container, along with next and previous Buttons.
    • Container and Form now include a “Show body” setting, along with new APIs to show/hide the header, body, and footer. Get started quickly with the new Collapsible Container, which includes a Toggle Button wired up to expand and collapse the body of its Container.
  • To learn more about all of these new features, check out our Containers docs. And if you have any feedback, we’d love to hear from you in our community forum.
  • Simplified the “query success” setting in the query editor
  • Improved autocomplete for Form and Text components
  • Improved styling of disabled components to improve readability
  • Fixed keyboard navigation for disabled components
  • Added more information, like the type of the value, in the SQL editor when SQL is evaluated
  • Fixed File Dropzone, File Button, and File Input in List Views
  • Added an option to Table components to "Disable user selection." If enabled, selection can only happen via the editor inspector or JS APIs. Click and arrow keys are ignored.
  • Improved List View rendering performance
  • Fixed the columnMappers property on the Table component to update when data changes
  • Added the ability to hover over the extra indicator (e.g. "+10") for the Tags component to see the other tags
  • (enterprise only) Fixed the keyboard shortcut CMD+SHIFT+P (CTRL + SHIFT + P) so that it doesn't drop you into a non-editable protected branch
  • Added the keyboard shortcut CMD+/ (CTRL+/) which will show and hide all hidden components
  • Postgres resources now support custom root certificates
  • Fix to re-enable usage of resources without ENCRYPTION_KEY being set
  • Fixed a bug that caused table edits with an active filter to affect the wrong row


Release notes for Self-hosted Retool v2.84. First released on February 16, 2022.


  • Our new component directory ( allows you to quickly browse or search through all of our components, see examples of different configurations in action, and dive into expanded API docs for component properties, methods, and events.
  • Each component has multiple real-world examples to explore different functionality, from labels and captions to validation and styles. Each example also includes the corresponding settings and values if you want to try them out in your own app.
  • As you check out the new component docs, we'd love to hear any feedback from you in our community forum.
  • Added a default value option for the Toggle Link component
  • Improved the ordering of the Table component inspector fields
  • Improved the responsiveness of code editors
  • Fixed the grid visibility toggle–⌘+Shift+G (Ctrl +Shift+G)–so that it persists across sessions
  • Fixed a layout issue for containers in edit mode when using Safari
  • Improved the resources dropdown in the query editor so that you can now also search by resource type
  • Added the "not equal" and "not in" operators to the Firestore query editor
  • Added a new keyword currentColumn that editors can use when building with the Table component
  • Fixed the ability to reorder rows for the Key Value component
  • Added the ability to configure whether Markdown links open in a new tab via the app settings menu
  • Fixed Snowflake queries using OAuth so that they properly prompt for authentication
  • Fixed a bug that caused table edits with an active filter to affect the wrong row


Release notes for Self-hosted Retool v2.83. First released on February 02, 2022.


  • We now have 15 style options so that you can fully customize the look of your table, and we’ve also refreshed the default styles. In the “Style” section of the Table component inspector, there’s plenty more you can do now, like:
    • Configure row color dynamically with any JavaScript condition (e.g. {{ currentRow.sales > 100 ? ‘green’ : ‘red’ }}), rather than setting background colors on each column.
    • Control column border visibility – we’ve updated default styles to remove column borders and reduce visual noise, but their visibility is configurable. (For backwards compatibility, Table components created before this change will have borders on by default.)
    • Quickly set up zebra striping by choosing a color for the “Alternate row background” style.
    • Control header, toolbar, and cell styles with more fine-grained options for text, background, and accent colors. We’ve also revamped our column sorting and edited cell indicators and made their styling configurable.
  • As you style your tables, let us know if you have any feedback or feature requests in our community forum.
  • Improved error messages for when a resource type isn't supported in the form generator
  • Add loading and loaderPosition options to Link component
  • Changes Button loading indicator to a more standard spinner
  • No longer test connections when creating or editing resources
  • We've made it easier to find the most commonly used column types when designing tables
  • Cleaned up styles for empty Table components
  • Display DBCONNECTOR_QUERY_TIMEOUT_MS instead of 120000 on timeout input
  • The Form generator now throws more accurate errors when a resource is not supported
  • OAuth auto-refresh now work with fields using RETOOL_EXPOSED_ variables
  • "Auto" type columns in the Table column editors now have a new icon
  • Users can now modify resource and app permissions for groups when SAML_SYNC_GROUP_CLAIMS is enabled
  • Fixed the rendering order of background colors in the Table component.
  • In-app resource modal no longer closes automatically after save.
  • Table components now correctly show pagination info when the "Show add new row," "Show custom button," or "Show refresh button" options are true and the respective buttons are visible
  • Fixed bug regarding time-based authentication for resources
  • Performance improvements with rendering template strings and sandbox evaluation
  • Autocomplete for non-private properties with underscores
  • Reduces the space between the header and main app content.
  • Certain table column inspector fields will now autocomplete widget properties
  • Improved error messages for the PDF Viewer
  • Added the ability to clear the File Input component
  • Added ability to upgrade the following deprecated components:
    • Time picker
    • Date range picker
    • Multiselect
    • Select
    • Text
  • Deprecated Chart, Statistic, and Upload components can no longer be added to apps. Please use their new counterparts!
  • Fixed endless fetching bug with Plotly component
  • Fixed a bug that caused table edits with an active filter to affect the wrong row


Release notes for Self-hosted Retool v2.82. First released on January 19, 2022.


  • We’re making a ton of improvements to our Table component! First up, the recent changes to our columns inspector:
    • The column list is more compact than before, with better drag and drop so you can easily reorder your columns. Additionally, you can now see all of your column types at a glance.
    • To change whether or not a column is editable, you can now do so directly from the column list—instead of having to manually open each column one by one.
    • The settings for each individual column have also been reorganized, making it easier to find the settings you need and giving you more room to write code.
    • As we continue to make more changes to the Table component, let us know if you have any feedback or new feature requests in our community forum.
  • Introduced accent color styling for Table component cells
  • Introduced vertical column borders as a setting in the Styles section for the Table component, and removed them by default on new Tables
  • Introduced new display behavior for tables with editable columns. If the majority of columns in a Table are view-only, we highlight editable columns with a pencil icon. If the majority of columns are editable, we highlight view-only columns with a lock icon.
  • Added new style editor options to the Button Group component
  • Fixed autocomplete in event handler code editors
  • Fixed Select and Listbox component deselection when items are marked as required
  • Fixed the setValue API for Select components with the "Allow custom value" option enabled
  • Fixed the Date Time component to correctly display times that fall on DST boundaries
  • Fixed documentation in the model browser (left-hand panel)
  • Improved performance when deleting containers with many children
  • Improved performance of the editor when interacting with input components
  • Improved loading of custom components
    • Fixed a bug that caused table edits with an active filter to affect the wrong row
  • Fixed a bug that prevented authentication dialog from appearing upon app load


  • Fixed endless fetching bug with Plotly component


Release notes for Self-hosted Retool v2.80. First released on November 16, 2021.


  • Components can now reference themselves in the inspector using the {{ self }} keyword! Access any component properties using {{ self }}, like the component’s value/values, label/labels, settings like disabled, hidden, readOnly, and validation properties such as maxCount.
    • For example, in a component like Select or Multiselect, you can set the labels to dynamically update to the capitalized values with {{ }} –this will actually be the new default going forward! It also makes dynamic styling much more powerful– for example, you can style the Statistic component’s trend green when {{ self.secondaryValue > 0 }} and red otherwise to indicate upward or downward trends.
  • {{ self }} is available for all components, and works in their event handlers, too! We’ve updated a bunch of our components to use {{ self }} for better defaults–but we’re excited to see what you configure with it. Drop us a note in the community forum with any examples, feature requests, or feedback! This feature is available to all cloud customers, and will be included in the next on-premise release.
  • Added the ability to enable/disable release management across an organization from Advanced Settings
  • Fixed form generation to set labels correctly for checkboxes
  • Fixed unexpected layout shifts in some apps while dragging/resizing
  • Fixed Google Datastore ordering options
  • Fixed the layout for Image components in Firefox
  • Added support for upgrading caret type Toggle components to the new Toggle Link component
  • Fixed unexpected layout shifts in apps with tall dynamic height Text components
  • Fixed SQL schema column types to display as timestamp or timestamptz instead of timezone
  • Added an option to configure text size on the Divider component
  • Added support for an optional label on the File Dropzone component
  • Improved performance when querying the audit log
  • Added support for a focus state for the Editable Text and Editable Number components
  • Fixed query loading indicators in presentation mode
  • Added a transition to the Date and Date Time calendar
  • Fixed the bounding box for Container components with children
  • Fixed the context menu so it closes when you click outside of it
  • Fixed analytics instrumentation triggers for modules
  • Fixed CSRF token validation issue.


Release notes for Self-hosted Retool v2.79. First released on November 10, 2021.


  • You can now view, edit, and create new resources without leaving your Retool app!
    • To create a new resource, select the “create a new resource” option from the top of the resource dropdown in any query. You can configure a connection and immediately query any of our 40+ supported database and API types, including Postgres, MongoDB, and any REST API or GraphQL.
    • To view or edit a resource configuration, click the “edit resource” button from the selected resource in your query. For example, you can view the name of the default bucket of an S3 resource, add staging credentials to a Postgres database, or add a new header to your GraphQL resource—all without leaving your app! Any changes to the resource persist across all Retool apps in your current environment.
    • We’re rolling out this new functionality this week. Share any feedback or suggestions for new resource types in our community forum!
  • We overhauled our Statistic component! Previously, you could only set a single primary value, and we supported limited formatting options. Now, you can also set a secondary value to compare metrics over different time periods (e.g., to show monthly revenue growth). Additionally, the primary and secondary values have the same powerful customization options as our Number Input component, including currency and percent formatting, decimal place control, and more. The new Statistic component supports more features, including the ability to dynamically control positive and negative trend color, set a caption text, control alignment, and more.
    • Like all of our new components, the Statistic component also has expanded style editor support. You can automatically migrate your old Statistic components to this new version, too! As always, post in our community forum if you have feedback on this new component or feature requests.
  • We now offer over 3,000 searchable icons with support for bold and outline styles. You’ll have access to this library anywhere where you can set an icon in Retool. To use any of our old icons, choose the deprecated icon set.
  • Fixed public apps in Incognito mode for Chrome
  • Fixed automatic SQL formatting, which was incorrectly adding additional spaces
  • Fixed the "body query type" toggle for REST API's with custom auth
  • Fixed Image component layout in Firefox
  • Improved performance on page load
  • Fixed Deprecated components inside modules so that they are no longer upgradable inside parent apps
  • Fixed "Reload queries" and resource custom auth so that they do not invalidate Module outputs
  • Fixed label wrapping for Checkbox Group, Radio Group, and Switch Group
  • Fixed how default properties are transferred when switching between certain components
  • SCIM API now accepts emails with uppercase letters
  • Fixed hiding RETOOL_EXPOSED environment variables in REST API query headers
  • Fixed CSRF token validation issue.
  • Fixed an issue with JBDC connections in pools
  • Fixed an issue to allow for text selection for readonly editable targets


Release notes for Self-hosted Retool v2.78. First released on October 27, 2021.


  • We’ve overhauled two of our most popular components: Select and Multiselect. Like our new Input components, they have powerful new functionality including:
    • Expanded style editor support
    • Control over label position, alignment, and wrapping
    • More robust validation (e.g. min/max items for Multiselect)
    • Support for adding text and icons in the prefix and suffix
    • An optional tooltip with GitHub flavored markdown
  • Both components support full keyboard accessibility. For example, you can now use arrow keys to move between individual selected items. These components also have tons of new configuration options including:
    • Overlay height: set the maximum height of the dropdown
    • Combobox mode: set whether or not the component has an input field to support searching by text
    • Selection indicator: control whether the dropdown should show a checkmark on the selected item(s)
    • Empty state: set a message to display when the component has no options provided or when no options match the search term
    • Disabled: provide an array of values that should be rendered disabled or disable the entire component
  • Fixed "body query type" for REST APIs with custom authentication
  • Fixed label wrapping for Checkbox Group, Radio Group, and Switch Group components
  • Added the ability to customize the appearance of the Retool user menu on a per-app basis
  • Fixed the recordUpdates and changeSet attributes of the Table component to only clear when a bulk update is successful
  • Fixed the Calendar component so that custom event properties are not lost when events are modified
  • Added support for sharing JIRA resource credentials between users
  • Added an option to configure text size in Editable Text and Editable Number components
  • Fixed default text color when the canvas has a dark background
  • Fixes CSRF token validation issue
  • Fixed hiding RETOOL_EXPOSED environment variables in REST API query headers


Release notes for Self-hosted Retool v2.77. First released on October 14, 2021.


  • The Table component is now scrollable! Scrollable tables are a great way to allow your users to quickly explore data.
    • To try it out, select the new “Scroll” option in the Table component inspector. "Scroll" supports all of the Table component’s “Pagination” options (e.g. server-side pagination) out of the box. To learn more about working with Tables in Retool, check out our documentation.
    • We’ll be shipping other highly requested Table features and bug fixes in the coming months. Visit our community forum to make a new request or add your support for existing ones.
  • The new Avatar and Avatar Group components allow you to easily represent users in your app.
    • Avatar allows you to display an image with an optional label and caption. The image URL will default to the current user’s profile photo (a new property, {{ current_user.profilePhotoUrl }}) and you can optionally set fallback text for when there isn’t a url available — if that text looks like a user's full name, we’ll render just their initials. Choose from a selection of avatar size options, extra small (16px) to extra large (48px), and customize label, alignment, and more!
    • Avatar Group displays several avatars together. Configure the maximum number of avatars to display, and the last avatar will display “+N” when there are more. Like our new input components, these also offer expanded style editor support.
  • Fixed automatic text color when the canvas has a dark background
  • Fixed the JIRA resource so that it automatically refreshes its token
  • Improved CSV parsing capabilities for File Input components
  • Fixed the minimum height setting for components
  • Fixed "Run when manually triggered" GraphQL queries that were incorrectly switching back to "Run when inputs change"
  • Improved the experience of creating a new folder, switching your context to the newly created folder
  • Added support for multi-line text in Buttons
  • Improved performance for Listbox and MultiselectListbox components when using searchTerm
  • Fixed some cases where code was not autocompleted in the right order. For example, when searching for "next", hasNext would show up before next.
  • Improved validation to skip disabled, readOnly, and hidden components
  • Fixed tree construction for Source Control resulting in appropriate merge conflicts
  • Fixed hiding RETOOL_EXPOSED environment variables in REST API query headers
  • Fixed an issue preventing custom columns in a table in a module from rendering
  • Fixed issue with Analytics instrumentation triggers in editor and preview mode for non-public apps
  • Fixed pgbouncer compatibility issue caused by default values for POSTGRES_STATEMENT_TIMEOUT and POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT


Release notes for Self-hosted Retool v2.76. First released on November 10, 2021.


  • We’ve overhauled Editable Text and added a new Editable Number. Like all of our new inputs, these offer brand new configuration options, built-in and custom validation rules, and expanded style editor support. These components were also built with accessibility and data density in mind.
    • The Editable inputs display static text that can be edited on click. In edit mode, Editable Text has all the same powerful, new functionality of our Text Input component, including: configurable prefix/suffix text, a prefix/suffix icon, read only mode, and more. In addition, Editable Number supports the functionality of the Number Input component, including currency support, percentage formatting, and control over decimal places and padding zeros.
  • All keyboard inputs–like Text Input, Number Input, Editable Text and Number, Currency, and more–can now optionally configure a tooltip that is visible below the input only on focus:
    • Like the regular tooltip, helper text supports GitHub flavored markdown.
  • Added a keyboard shortcut–⌘ + D (CTRL + D)–to duplicate a component on the canvas
  • Added a keyboard shortcut–?–to show a list of all of the other built-in editor shortcuts (like ⌘ + D!)
  • Added a "Hide submit button" option to the JSON Schema Form component
  • Fixed vertical alignment of multiline labels on the Checkbox and Switch components
  • Added a "Row Select Change" event handler for the Table component
  • Adjusted default hover and active colors for Button
  • Fixed automatic text color for components inside of the Header frame
  • Updated read-only input components to hide the optional clear button
  • Simplified the empty state for Container components
  • Fixed a delay with updates to dynamic height components
  • Removed an incorrect error message when selecting components in the same container
  • Fixed an edge case where Text components could be rendered at the wrong height
  • Added support for freezing action button columns to the left or right of the Table component
  • Added the ability to add the currently viewed folder to your favorites list
  • Fixed focus, hover, and disabled styles for the clear button on input components
  • Added support for null values for sliders in the JSON Schema Form component
  • Fixed rendering of short Listbox components with labels
  • Added lastReceivedFromResourceAt attribute to queries to track when the query response was last received from the resource
  • Added the current page index and total number of rows to the footer of the Table component
  • Fixed label width default to be 40% instead of 33%
  • Added a new option, "show top bar," to IFrame which allows you to optionally show a customizable title, and adds two actions: refresh and open in a new tab
  • Fixed Listbox and Multiselect Listbox rendering with duplicate values
  • Added autofill for app names when importing an app
  • Improved the component search experience by autofocusing the search field when opening the Insert pane
  • Improved the loading state for the Table component
  • Fixed an edge case where renaming a component didn't rename references to the component
  • Added workspaces, audit logs, and data editor to the "powered by Retool" menu
  • Updated AWS assume role help text to display the correct backend name
  • Added the POSTGRES_STATEMENT_TIMEOUT environment variable, which defaults to 10 seconds (on-prem only)
  • Enforced a database constraint for analytics integrations to prevent an invalid database state.
  • Fixed tree construction algorithm for Source Control resulting in reduced and accurate merge conflicts
  • Fixed an issue preventing custom columns in a table in a module from rendering
  • Fixed hiding RETOOL_EXPOSED environment variables in REST API query headers


Release notes for Self-hosted Retool v2.75. First released on September 15, 2021.


  • We've added 5 new and improved options for input components in the Inspector (right-hand panel), including:
    • Read only: read only inputs are focusable and selectable but cannot be modified. They look the same as normal inputs.
    • Label width: set the width of the label as a percentage of the component width (%), pixels (px), or grid columns (col).
    • Decimal places: set the maximum number of digits after the decimal, and optionally pad trailing zeros.
    • Allow null value: Number Input components can now have an empty state of null instead of 0.
    • Show clear button: Number Input components can now optionally show a clear button.
    • If you want further configuration options for any of our components, drop us a note at [email protected]!
  • Fixed label width default to be 40% instead of 33%
  • Fixed migrations to respect DATABASE_URL
  • Fixed a regression that would cause the editor to crash when deleting temporary state variables
  • Improved the app homepage search results to show what folders apps are in
  • Updated undo/redo shortcuts copy to be platform-specific
  • Fixed the "hide reset button" switch on the Wizard component
  • Fixed default values and Change events for Range Slider
  • Fixed the editor such that it always shows the most up to date version, even if an earlier release is published
  • Added a new event handler action type to set / clear local storage key/value pairs
  • Added a tooltip to improve readability of long app names for the "Go to app" event handler action type
  • Added a toggle to the Number Input to allow null values
  • Fixed the Tags component so that it can reference other queries/components (e.g. {{ .. }}) when setting tag titles
  • Fixed an issue preventing custom columns in a table in a module from rendering


Release notes for Self-hosted Retool v2.74. First released on September 02, 2021.

  • All admins will now be able to assign two different permission levels for any given resource: (1) "use," which allows an editor to write queries with that resource and (2) "edit," which additionally allows an editor to modify the resource's configuration.
    • Previously, admins had minimal control over permissions to resources — any resource permission granted at a group level would allow members of that group to modify the configuration of the resource. We know configuration for some resources can be sensitive and complex to change, so we've shipped these new permission levels to give admins more control over their user's access.
    • Additionally, to allow editors to create new resources or delete existing ones, admins can assign a group to have “universal access” at the “edit” level. As always, a “viewer” of an app (e.g. no edit permissions) can still view and use an app that leverages a resource for which they do not have explicit permissions granted.
  • When your query succeeds or fails, you can now trigger other queries, control components, call additional APIs, and more–all using event handlers!
  • 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:
    • 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(),, 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.
  • We’re rolling out 9 redesigned and rebuilt components, including fully overhauled, existing components (Button, File Button, Link) and brand new components (Tags, File Input, File Dropzone, Listbox, Multiselect Listbox).
    • Just like the input components we released a few weeks ago, these offer brand new configuration options, built-in and custom validation rules, and expanded style editor support. These components were also built with accessibility in mind.
    • Listbox and Multiselect Listbox allow you to display a list of selectable item(s) to your end users. You can dynamically set the default selected item(s) and/or disabled item(s). There’s also built-in support for fuzzy search on the values or labels, all you have to do is set the search term (e.g. {{ textinput1.value }}).
    • There are plenty more settings you can configure, even down to the empty state when no options match your search term. Additional functionality includes: an optional Tooltip with support for GitHub flavored markdown, custom validation (e.g. min/max items, custom error messages), event handler support, and more!
    • The refreshed Button component and new Outline Button component have lots of new functionality. For example, you can dynamically set the loading state (e.g. {{ query1.isFetching }} ) to show a loading animation and disable interactivity for your users while your query is running.
    • You can switch between a regular, Solid Button and an Outline Button directly in the “Style” section of the Inspector for either component–you’ll also find more advanced style editor support.
    • Lastly, we have a new Link component that supports additional configuration like prefix/suffix icons and an optional Tooltip. You can use the Link component with any event handler, like opening a webpage or another Retool application.
  • We now have 2 new ways for your end users to browse and upload files–File Dropzone and File Input–and we’ve rebuilt and redesigned File Button. All of these now support single or multiple file uploads, and have 3 consistent properties to interact with and reference elsewhere in your app: (1) value: an array of base64 encoded strings for the selected file(s) (2) files: an array of file metadata, like when it was last modified, the file name, type, and size (3) parsedValue: an array of JS objects or arrays that Retool automatically parses from uploaded files (Excel, JSON, CSV, TSV and text files are supported).
    • They also support custom validation (e.g. min/max file size, custom error messages), prefix/suffix text and icons, an optional Tooltip, and so much more functionality.
  • Lastly, we’ve also added a new Tags component, a presentational component typically used in apps for things like categorization. It now has dynamic and automatic height: growing as you add additional tags as well as support for an optional Tooltip.
  • Added the ability to see tables that are related to your query in the query editor's schema browser
  • Added a Front integration
  • 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 support for using self-signed certificates with MongoDB connection string
  • Updated default component IDs to use camelCase (e.g., checkboxGroup1)
  • Added a change event handler to BoundingBox component
  • Added module versioning support behind a feature flag. Contact support ([email protected]) if you would like this enabled for your organization.
  • Fixed previewing apps with multiple versions so that we now support previewing any published release, as well as the current working version
  • 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
  • Fixed the custom header background color so that it doesn’t show unneeded toasts
  • Fixed an issue where you couldn't add widgets to modals that close when clicking outside (not ready yet)
  • Fixed a regression that would cause the editor to crash when deleting temporary state variables
  • Fixed the editor such that it always shows the most up to date version, even if an earlier release is published
  • Fixed an issue where transformers do not run on page load if they depend on disabled queries
  • Fixed local storage dependencies such that values nested inside a third level now trigger updates correctly (e.g. localStorage.values.x.y)
    Add a width field to v2 label editors (still feature flagged)
  • Fixed a rare edge case when deleting Query Library queries would cause apps to throw errors when saving
  • Fixed issue with running migrations on boot when using DATABASE_URL parameter for configuring PostgreSQL connection
  • Fixed an issue with tables with columns set to Allow overflow
  • Fixed an issue where retoolContext.environment didn't update with toggle
  • Snowflake now respects the DBCONNECTOR_QUERY_TIMEOUT_MS environment variable
  • Fixed issue where {{ self }} was being overwritten in table mapped columns
  • Fixed bug with clearing Number Input widget
  • Fixed bug with onboarding getting stuck when saving an SQL query
  • Fixed issue with the label width
  • Fixed bug with some components not rendering the correct height
  • Added an iframe component
  • Fixed bug with event handlers encountered when upgrading from 2.72 or 2.73


Release notes for Self-hosted Retool v2.73. First released on August 15, 2021.


  • 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.
  • 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!
  • Testing is now available in beta! You can add tests to increase confidence in updating and maintaining your Retool apps. See for more info.
  • 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
  • Snowflake now respects the DBCONNECTOR_QUERY_TIMEOUT_MS environment variable
  • Fixed committing changes to apps under Source Control in large repositories
  • 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


Release notes for Self-hosted Retool v2.72. First released on August 05, 2021.


  • We’ve removed the default Retool header from end user mode, giving you full control over your app’s presentation. User-specific actions have moved to a new location, and we’ve introduced a new sticky header frame, along with a Navigation component for building your own custom headers.
    • If you're currently using the Branding feature, read our migration guide to learn how to start using our improved Header frame.
  • The canvas area is now split into two frames: Header and Main. Put any component into the Header — including the new Navigation component — and your app will have a sticky header.
  • The new Navigation component allows you to configure a list of menu items and submenus. Each item can open another app, link to a URL, run a query, and more. You can also add a logo, control alignment of the menu items, and style it all via the Style Editor. With modules, you can even reuse your Navigation across multiple apps.
  • 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.
  • Added additional logging when syncing applications
  • Fixed the "Protect app" modal to properly dismiss on branches other than main
  • Fixed a rare edge case when protecting an already protected app
  • Improved publishing and unpublishing releases
  • Improved performance of evaluating dependencies (e.g. component/query references) in apps
  • Fixed a rendering issue with the user menu for embedded apps
  • Improved performance of component interactions by 2x for applications with a large number of components
  • Improved initial render time for apps with many input components
  • Improved resources page to sort by name
  • Added a OneSignal integration
  • Fixed S3 file downloads of non-binary type files
  • Improved REST API queries to respect the DBCONNECTOR_QUERY_TIMEOUT_MS setting
  • Added the ability to input Redis commands in raw format, similar to redis-cli
  • Added a warning when additional configuration is needed to connect a Google Sheets resource
  • Added the ability to automatically paginate queries to Stripe
  • Added support for Snowflake OAuth at the user level
  • Added the ability to dynamically add a table name in Snowflake query GUI mode
  • Adds more space for current branch in the branch viewer.
  • Added a 'Submit feedback' option to the help menu where you can send product feedback directly to the Retool team
  • Added a keyboard shortcut ⌘+J (CTRL + J) to show/hide the query editor
  • Add a DISABLE_INTERCOM environment variable to disable chat support and enable email support instead
  • Added additional user metadata to the Releases and History modal
  • Added the ability for editors to set a description for module inputs
  • Added the ability to change your first and last name in Account Settings
  • 10+ different design polish improvements
  • Added a tooltip on components to render error messages in context
  • Enabled search by component type in the Event Handlers component dropdown
  • Improved code editors to maintain the cursor position of in-line editors that are popped out
  • Improved error messages on Retool components. No more generic errors!
  • Added a Divider component to create a horizontal rule
  • Fixed transformers and analytics in the query sidebar so that they can be deleted and duplicated
  • Fixed an issue where loading spinners weren't visible for some components
  • Datepicker component min and max now will use UTC time when 'display in local timezone' is not selected
  • Fixed Form's ""clear after submission"" option with new input components
  • Fixed spacing around components inside of a List View
  • Fixed editor keyboard shortcuts when certain input components have focus
  • Fixed event handlers for generated Forms
  • Fixed arrow keys to use the new row height when moving a component up or down
  • Fixed the order of menu items in the Navigation component after using the inspector
  • Fixed CMD+C to copy text in an input component in editor mode
  • Fixed an issue in the inspector when selecting multiple components
  • Fixed NaN value in the Number Input component after manually the current input
  • Added new file utility methods to the JavaScript API: parseXLSX(), parseCSV(), parseJSON()
  • Fixed incorrect links to apps in the Releases and History modal
  • Fixed previewing apps with multiple versions. You can now preview any published release, as well as the current working version.
  • Fixed an issue where syncing many apps under Source Control at once would trigger a secondary GitHub API rate limit.
  • Fixed an issue where URL parameters weren't preserved when navigating to the editor
  • Fixed an issue where deleting a query from the Query Library caused certain applications to hang
  • Fixed an rare crash in applications due to custom authentication
  • Fixed an issue connecting to the internal PostgreSQL database using the DATABASE_URL environment variable.
  • Improved performance for applications using local storage across multiple tabs.
  • Fixed unexpected layout shifts on some apps with multiple Text components
  • Fixed an issue syncing apps under Source Control with similar names
  • Snowflake now respects the DBCONNECTOR_QUERY_TIMEOUT_MS environment variable
  • Fixed committing changes to apps under Source Control in large repositories
  • Fixed issue with running migrations on boot when using DATABASE_URL parameter for configuring PostgreSQL connection


Release notes for Self-hosted Retool v2.71. First released on July 21, 2021.


  • 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’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)
  • 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.
  • Fixed S3 file downloads of non-binary type files
  • Fixed transformers and analytics in the query sidebar so that they can be deleted and duplicated
  • Fixed self-hosted trials that were expiring at the incorrect date
  • Added the ability to ⌘+click (CMD+click) or CTRL+click on a query, component, or state name inside {{ }} to see its value in the model browser
  • Improved load times for a subset of our components
  • Fixed Snowflake queries to correctly estimate their size
  • Improved permissions such that only users with the universal 'write' resource access can create new resources
  • Added a new section to settings for debug info (e.g. environment variables, single sign-on), available on the Enterprise plan
  • Fixed Navigation components so that they can run queries when used inside a Module
  • (Source Control) Improved the commit changes modal to display changes since the last commit vs. from the main branch
  • (Source Control) Fixed the 'protect page' modal to properly dismiss on branches other than 'main'
  • (Source Control) Improve autogenerated PR descriptions
  • Fixed a bug where a JavaScript Query would run repeatedly if it is passed into a module as input and then triggered inside that module.


Release notes for Self-hosted Retool v2.70. First released on June 29, 2021.


  • 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.
  • Added ES2020 support to Retool’s code linter
  • Added the returned value type to inline code evaluation previews
  • Fixed a memory leak issue causing unneeded query results to be retained
  • Fixed undo/redo when renaming components
  • Added support for the insertMany action type for MongoDB queries
  • Adds links to GitHub commits in the History tab for Source Control commits.
  • Added text color settings to the Rich Text Editor component
  • Added support for the style attribute in Text component content
  • Added support for setting the client ID and secret for JIRA resources
  • Added a way to restrict which user groups can run a query via a query's "advanced" tab in the query editor
  • Added a permission group setting to grant access to the audit log for non-admins
  • Added the ability to set a custom content-type on a S3 upload query
  • Added the ability to browse MongoDB collection schemas in the query editor
  • Added more defaults to MongoDB fields in the query editor
  • Added the ability to name Protected App branches before creating them
  • Fixed the distanceMatrix endpoint for the Google Maps integration
  • Added the ability to automatically format JS queries
  • Fixed alignment of profile photos in permissions settings
  • Added 20+ app edit descriptions for the history tab in "Releases and history"
  • Upgrade the Presto JDBC driver to v350; Support the source connection parameter.
  • Fixed a bug where we were incorrectly checking license keys for airgapped deployments
  • Added a new page–Environment Variables–in Settings for debugging (Beta)
  • Fixed visual bug in app protection workflow if using a default branch other than Github default main
  • Removed checkbox for toggling Source Control downward sync


Release notes for Self-hosted Retool v2.69.


  • In this latest stable build, we
    • Added support for Source Control to be compatible w/multi-instance deployments (without Git Syncing!).
    • Added support for creating and managing Releases for apps under Source Control.
    • Enabled editors to reset a protected app to the state of any remote branch, allowing you to preview others’ branches or preview branches where conflicts were resolved offline
    • Made UI improvements across the board, such as naming a branch before creating it. We handled tricky edge cases w/Github API, squashed several bugs, and more! You'll also notice a dedicated "Actions" menu for all source control related options, and clickable commit tags in your app's version history.
    • Added an improved configuration page, that allows you to stop downward "sync" at any time and verify that your Github integration is configured correctly.
  • Be sure to check out our Getting started guide, Recommended Workflow, and how-to on Migrating from Git Syncing!
  • 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.
  • Removed notifications from appearing on every copy and paste operation
  • Updated S3 read queries to return base64 encoded strings for binary/octet-stream content-type payloads
  • Fixed Table's Button column type so that it can evaluate references to other components when setting the "disabled" field
  • Fix a bug where users would be stuck in an authentication loop for certain types of custom auth flows.


Release notes for Self-hosted Retool v2.68.


  • 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(),, 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.
  • 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).
  • Fixed a bug with the Redis resource not closing connections correctly
  • 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
  • Allow application releases to be unpublished, falling back to latest
  • Add environment variable to disable username / password authentication




Upgrade from v2.68.17

We published v2.68.17 as a stable release on June 1st, 2021. However, we found a bug with Redis connections not being closed properly, which was fixed in the next version. We recommend upgrading directly to 2.68.18 instead.


Release notes for Self-hosted Retool v2.67.


  • We've made some great improvements to copying, pasting, and cutting components. Components can now be copied between desktop and mobile view. A component can also be cut from the canvas and pasted elsewhere.
  • Navigating components when editing also just got easier. You can now tab between components on the canvas. Combined with arrow keys to move, CMD+arrow keys to resize, copy/paste, and cut/paste, you can now do quite a bit of layout work with the keyboard alone!
  • We've made a few quality-of-life improvements for Source Control. In addition to admins, owners can now protect an application or a module. When setting up Source Control for the first time, Retool will now correctly handle a repository that has no existing commits.
  • You can now toggle the AWS v4 authentication on an HTTP resource to use the default provider chain to get credentials. If enabled, Retool will check the following places, in order, for AWS configuration values.
    • Environment variables
    • Java system properties
    • Web Identity Token credentials from the environment or container.
    • The default credential profiles file
    • Amazon ECS container credentials.
    • Instance profile credentials
  • Added option to convert a Container into a Tabbed Container
  • Added short cut (CMD+SHIFT+G) to toggle grid on/off in addition to holding down command and dragging a component
  • Split log output for Git Syncing and Source Control
  • Changed select editors to show a "fx" button to switch from the dropdown to a code input.
  • Added release creator and publisher information in Releases modal
  • Added a "does not equal" option to table filters.
  • Added additional logging to the Custom OAuth2 refresh flow
  • Improved load times for apps by caching certain internal Retool data
  • Locked group membership when syncing groups via SAML
  • Added simple drag-and-drop functionality for the navigation component menu so users can re-order their menus as they please.
  • Add utils.exportData to JavaScript queries and transformers
  • Fixed a bug with Git Syncing that affected read-only instances in certain Cloud-hosted environments
  • Fixed Text v2 component to allow HTML class names
  • Ask for confirmation before discarding unsaved transformer changes
  • Fixed Snowflake resources to respect the default timeout
  • Fixed array encoding for Stripe resources
  • Fixed apps under Source Control sometimes not updating the latest synced commit
  • Included correct authentication headers when making a logout request
  • Fixed Table.selectRow to now selects multiple rows



Upgrade to v2.67.14

We published 2.67.13 as a stable release on May 17th, 2021, but detected a bug with Git Syncing for read-only instances in certain Cloud-hosted environments. We recommend upgrading directly to 2.67.14 instead.


Release notes for Self-hosted Retool v2.66.


  • You may have noticed a few changes in our release process for on-premise Retool. We now publish a new release every two weeks on Monday. v2.66.91 was the first version to be released using this new process on May 3rd, 2021.
  • 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.
  • 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.
  • 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.
  • 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 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.
  • A brand new UI and folder-based permissions. Quickly and effortlessly manage access for many users.
  • We’ve added integrations for Jira, Asana, Datadog and BigID, with many more to come!
  • 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.

Did this page help you?