Skip to main content

Changelog

Updates, changes, and improvements at Retool.

Retool now enables you to test your custom single sign-on integration with the click of a button. When you click the Test Connection button on the Single Sign-On (SSO) > Custom SSO settings page, Retool checks that the proper groups are mapped, the right user metadata is sent from your identity provider, and the integration works seamlessly. Testing this connection does not change the current user's permission groups, and you won't be locked out if SSO is misconfigured.

Retool now supports Apache Kafka. You can use the Kafka integration in apps and workflows to produce, consume, or commit messages to a topic. This integration enables you to respond to events as they occur, triggering changes and actions in your workflows or apps.

Subfolders is now available to all users on Retool Cloud and Retool Self-hosted versions 3.93 and later. Subfolders helps you manage and organize your Retool apps, workflows, and resources. To implement proper inheritance for security measures, we also now enforce the following:

  • A child subfolder or app must be at least as permissive as its parent.
  • In order to move an object, you must have Own access to the object (App or Folder) being moved and Edit or Own on its destination.

In making changes to certain groups’ folder permissions, this means some users may no longer create apps inside of folders. Access to any existing apps or modules has changed. You can always update your group settings to enable app creation within folders.

Subfolders is considered a breaking change as you cannot roll back to an earlier version. Before upgrading, be sure to create a backup of your Retool instance.

Dynamic queries enable users to access several different resources from a single query. These queries decrease the maintenance burden for apps that need to query various similar resources.

Some example use cases for dynamic queries include:

  • An app for your support team to interact with customer data when every customer’s data is hosted on a standalone database with unique credentials.
  • An admin panel to measure the health of customers’ deploys when every customer has their own tenant.
  • A generic budget dashboard for client projects when every client has their own database.

A new version of the Scanner component is now available. It is a significant upgrade over the previous version, with new functionality for you to customize the scanning experience. Features include:

  • Use scan events to reference scanned items and the time between scans.
  • Detect duplicate scans.
  • Programmatically pause after each scan or set the time between scans.

You can now connect any AI provider that adheres to the OpenAI, Anthropic, Google, or Cohere schema. This enables you to connect from a wide range of AI providers, such as Mistral, Fireworks AI, Together AI, and OpenRouter.

Organizations with increased security and compliance requirements can also configure custom AI providers if they need to route traffic through their own proxies.

The Comment Thread component enables users to post comments and start discussions directly within your apps. All users who have access to an app that contains Comment Thread can use the component. Each user's comment appears with their name and avatar image.

Comment Thread with comments for the selected table row.

When using Comment Thread, you specify a unique thread ID with which to associate comments. This can be a dynamic value so that comment threads dynamically change based on user interactions. For example, setting the thread ID to {{ table1.selectedRow.id }} would associate comments to whichever row is currently selected.

Comment Thread includes event handler support, action buttons, and granular control over the refresh period. Retool automatically handles comment storage and retrieval so no data source is needed.

If you're currently using the Comment component, you can switch to using Comment Thread without losing previous conversations by using the current Evaluated key value as the thread ID.

Retool released a new version of the List View component in December 2023. The previous version has continued to be available as the Legacy List View component. You can continue to use the Legacy List View component in existing apps but we recommend you switch to using the newer List View component. The newer version of List View is much more performant, has more features, and will receive updates.

Feature comparison

Learn more about the differences between Legacy List View and List View.

FeatureLegacy List ViewList View
Number of instancesSet the instances property value.Automatically generated for each array item in data.
Instance valuesReference nested values using the item index (e.g., textInput1[3].value).Nested components cannot be referenced outside of List View. For form inputs, use instanceValues instead.
Instance keysItem keys.Primary keys.
Auto-heightAutomatically grows with content.Requires a suitable maxHeight value.
Show borderYesNest the List View component within a container and use it to set the border.
Show drop shadowYesNest the List View component within a container and use it to set the drop shadow.
Styles and nested stylesYesNest a container within List View to apply styles and nested styles.

Instance keys and values

Retool recommends using primary keys, a unique identifier, to track and restore instances within the List View.

List View is virtualized and only evaluates and renders items currently visible. This significantly improves performance. However, this also means that you can no longer directly reference nested items as they may not have been evaluated yet. Instead, you can reference instance values for forms and input components.

Appearance settings

List View supports all of the same appearance settings as Legacy List View, with the following exceptions:

  • List View does not support border or drop shadow styles. Instead, nest a container within List View and configure it with a border and drop shadow.
  • A List View with a heightType of auto requires a suitable maxHeight value to maintain performance. The default is 100vh and you can specify a different value to use. You should consider using the container in which List View is nested to avoid unexpected scrollbars.