Skip to main content

Changelog

Updates, changes, and improvements at Retool.

Cloud-hosted Retool has been updated with the following changes. These changes will also be available in a future release of Self-hosted Retool.

Added

  • Added an AI feature that generates Retool Database schemas.
  • Added a new onboarding flow for Retool Workflows.
  • Added plugin hover tooltips to the code editor.
  • Added support for includeDefaultScope to the code editor.
  • Added support for the self context to template string editors.
  • Added support for Zebra scanner devices for Retool Mobile.
  • Added the ability to view SQL schemas in resource blocks for Retool Workflows.

Fixed

  • Fixed an issue where a blank navigation bar was sometimes displayed after loading a Retool Workflow.
  • Fixed an issue where component APIs would sometimes not be displayed in the autocomplete list within the JavaScript Query editor.
  • Fixed an issue where hover tooltip positions for template strings were displayed in the wrong location.
  • Fixed an issue where module outputs stopped functioning after renaming the module.
  • Fixed an issue where protecting a workflow sometimes resulted in an error.
  • Fixed an issue where the default values for enum fields were set incorrectly in Retool Database.
  • Fixed an issue where the popout editor's placeholder does not reflect the editor's value.
  • Fixed an issue where the sign-up link wasn't appearing on the Login page for self-hosted customers.

Improved

  • Improved page load times.
  • Improved the logic that determines column types for columns that use numbers in the Table component.
  • Improved the resource template modal so it's displayed faster.

Changed

  • Updated the billing matrix on the Settings page for Retool Embed.

Cloud-hosted Retool has been updated with the following changes. These changes will also be available in a future release of Self-hosted Retool.

Added

  • Added a maximum session length of 30 days for Retool Embed.
  • Added a Python custom libraries UI with global importing and language server support to Retool Workflows.
  • Added a schema explorer for gRPC resources.
  • Added dynamic icons to the Table component.
  • Added inline validation to resource settings.
  • Added query caching on public apps.
  • Added the ability to disable Retool Embed users from the permissions page.
  • Added the ability to run Retool Workflows queries on Retool Mobile.
  • Added the llama_index library to Retool Workflows.
  • Added the option to disable prepared statements for Databricks resources.

Fixed

  • Fixed an issue where editable tag cells in the Table component were incorrectly highlighted
  • Fixed an issue where passing an integer to externalIdentifier for Retool Embed would cause a server error.
  • Fixed an issue where Table toolbar styling would not match the Table styling.
  • Fixed an issue where template strings were incorrectly highlighted before they were evaluated.
  • Fixed an issue where the Table component would sometimes crash when using the Tag dropdown.
  • Fixed an issue with caption alignment in the Table component.
  • Fixed an issue with Markdown syntax highlighting when using templated strings.
  • Fixed an issue with push notification delivery on Android with Retool Mobile.

Improved

  • Improved gating on Query Library and Home pages to prevent access by users without permissions. Previously, they could not access the contents, but they could see the page.
  • Improved the styling of the Retool logo, header, and tags.

Removed

  • Removed the ability to trigger some keyboard shortcuts within input components, as some keys are reserved for text formatting.

New Table component

We rebuilt the Table component to improve customizability, and scalability for our customers. The new Table is capable of rendering, updating, and scrolling through hundreds of thousands of rows and hundreds of columns with diverse data types fast.

It also features deeper customization options:

  • Data manipulation (filtering, sorting, pagination) works out-of-the-box and can be configured client- or server-side.
  • Advanced filtering and sorting options, such as nested filtering and multi-column sort.
  • Primary key configuration to maintain state (like Row selection, or change set) through complex filters, sorts, and pagination operations.
  • More intuitive Tag (dropdown and multiselect) columns with the option list editor.
  • Column-level event handlers.
  • Toolbar actions for more opportunities to perform action with table data.
  • Redesigned action buttons, more intelligent defaults (including column width and type), cell captions, column header tooltips.
  • Smoother editable cell interactions and improved keyboard shortcuts.

The new Table component is available today and replaces the previous Table component. Existing customers can continue to use the previous version, which is available as the Table (legacy) component.

Check out our docs or the migration guide to get started. To learn more about building a data-driven dashboard with the new Table component, check out the following walkthrough.

Cloud-hosted Retool has been updated with the following changes. These changes will also be available in a future release of Self-hosted Retool.

Added

  • Added a control for enabling case sensitive filtering in the Table component, defaulting to case insensitive matching
  • Added a link to the REST API resource page from the resource catalog when there are no search results
  • Added a new Stripe API version, which includes the Payment Links endpoint
  • Added Apps and Workflows options to the Retool logo menu
  • Added a Retool Workflows callout and the option to run a workflow to the query editor
  • Added debugging details for full and partial syncs to the Source Control dashboard
  • Added error handling support to query editor AI
  • Added evaluation highlighting for evaluation template strings
  • Added JavaScript support to query editor AI
  • Added linting to the template string code editors
  • Added Markdown syntax highlighting to the Text component
  • Added support for gRPC binary metadata
  • Added support for pypdf custom library
  • Added the ability to edit Icon and Label properties to Toolbar buttons
  • Added the ability to select multiple services for gRPC queries
  • Added the JDBC resource to Retool Cloud

Fixed

  • Fixed an error when editing JavaScript queries related to the case sensitivity of identifiers
  • Fixed an issue where an application's header flashed when an organization had users redirecting to workspaces
  • Fixed an issue where disabled resource configuration settings appeared to be enabled
  • Fixed an issue where padding around action buttons in the legacy Table component caused rows to extend past their usual height
  • Fixed an issue where some components threw an error when adding them to the canvas
  • Fixed an issue where the Icon component would remain in an error state if given an invalid name
  • Fixed an issue where the table location would jump after refetching a Retool Database table
  • Fixed an issue where you couldn't capitalize table names
  • Fixed JavaScript editor colors

Improved

  • Improved autolayout functionality in Retool Workflows
  • Improved GraphQL formatting by using Prettier, which also prevents comments from being removed when reformatting
  • Improved some resource templates and correctly capitalized some resource names
  • Improved the pop-out code editor layout
  • Improved URL hash behavior so that hashes persist when switching between edit and preview modes

  • Added bottom sheet in Retool Mobile to display screens as an overlay that slides up from the bottom of the app.
  • Added fallback message for code and conditional blocks in Retool Workflows when no results are returned.
  • Added Microsoft Teams integration.
  • Added navigator.selectTab() method and event handler action in Retool Mobile to select screens.
  • Added support for using Retool-exposed environment variables when configuring custom authentication.
  • Added the ability to remove nested arrays and objects from an OpenAPI query.
  • Added the option in Retool Workflows when running a block to also run all previous blocks in the same control flow.
  • Added the option to specify maxPoolSize in MongoDB resources.
  • Added type-coercion details when setting values in the App editor.
  • Fixed an issue in Retool Mobile where the Image Input component's resolution settings may not be enforced.
  • Fixed an issue in Retool Workflows where Query blocks for resources with NoSQL integrations may not autocomplete or execute.
  • Fixed an issue where a user's name may not be saved during signup.
  • Fixed an issue where tooltips may appear to be blank.
  • Fixed an issue where using the Command Palette may cause other modals to appear unexpectedly.
  • Fixed an issue with the Link List component where selecting link color settings my incorrectly display Label settings in the Inspector.
  • Improved app sharing behavior to copy the link when there are no previous releases.
  • Improved block resizing in Retool Workflows.
  • Improved branch naming in Source Control so that whitespace is automatically replaced with -.
  • Improved loading time of Retool Database menu items.
  • Improved the apperance of monospace text, icon design, and footer size in the App editor.
  • Improved the behavior of popovers in the Code editor.
  • Improved the order of settings in the Inspector for the Table component.

  • Added a maximum response size of 100 MB when fetching database schemas.
  • Added an isOnboardingApp property to the app saved event.
  • Added JSON as a Workflows parameters option when running Workflows from apps.
  • Added rtAppSwitcherDrawerItemSettingsHidden and rtAppSwitcherDrawerItemLogoutHidden fields to managed app config in Retool Mobile, which hide settings and logout in mobile app side drawers.
  • Added rtDisableAppSwitcherDrawer to the managed app config in Retool Mobile to disable mobile app side drawers.
  • Added support for cookies in the OpenAPI resource configuration.
  • Added support for Google SSO using organization subdomains, i.e. org-subdomain.retool.com.
  • Fixed an error where JavaScript queries returning Promise.reject() would not terminate when using the latest runtime.
  • Fixed an issue where duplicate application names were created from templates.
  • Fixed an issue where module outputs with dependencies did not work as expected.
  • Fixed an issue where plotly.js would not import when using the latest runtime.
  • Fixed an issue where tooltips for function signatures on some utility methods would show unknown return values.
  • Fixed an issue where workflow parameters were not configurable on event handlers.
  • Improved error messages in the query editor when the schema fails to return.
  • Improved performance when using List View components in the latest runtime.
  • Improved the performance of transformers when using the latest runtime on Google Chrome.

Today we announced major changes to our pricing to make Retool more accessible to as many teams as possible. Here’s what we’ve updated:

  • Instead of charging the same price for any user at your company, we now charge different rates for Standard users (people who build apps in Retool) and a significantly lower amount for End users (people who only view or use Retool apps).
  • We’re also adding an annual billing option to our Team and Business plans so that you can pay annually and get an additional 20% discount per user.
  • And, we’re introducing a Self-hosted Business plan for teams that prefer to self-host and need more granular permissions, audit logs, reusable modules, and other security features. To access these new plans, make sure to upgrade your Self-hosted Retool deployment to v2.117 or later. Existing Free, Team, and Business plan customers can switch over to the new plans from your billing page at any time and we expect that many of you will find that the new pricing better meets your team’s needs. If you’d like to stay on your current plan, there’s no action required—your current plan will still be available until the end of 2024 and we’ll provide plenty of notice before then. To learn more, check out our pricing page.

You don't have to upgrade existing apps that use the legacy Table component. You can continue to configure the legacy Table in your existing apps, and then use the new Table component when you have an app to build.

If you want to migrate an existing app to use the new Table component, use this guide to learn more about the differences before migrating.

Column configuration

The new Table no longer supports the Auto column format. Each column must have an explicit format. Each column can contain an optional source key, which maps the column to a field in the data source. If the source key is omitted, the column is effectively a custom column.

Properties

Some commonly used Table properties have been renamed. Anywhere in your app where you reference these properties, you’ll want to update those references to the new property names.

selectedRow

The property to access the Table’s selected row changed from table1.selectedRow.data to table1.selectedRow.

currentRow

currentRow in a column’s mapped values is now currentSourceRow, to make it explicit that it references the underlying source row’s data.

recordUpdates and changeSet

The legacy Table’s edited fields were exposed in recordUpdates and changeSet. These fields are now changesetArray and changesetObject, respectively. These properties no longer contain the entire row’s data, and instead only contain the modified fields.

Pagination controls

Pagination controls are now nested under table1.pagination. This means referencing a table’s pageSize, for example, is done using table1.pagination.pageSize. Pagination is now accessible in the Table’s Add-ons section in the Inspect tab.

Save and cancel buttons

The new Table exposes the built-in save and cancel buttons for bulk editing in the Add-ons section of the Inspect tab.

Sorting controls

The legacy Table exposed several fields to represent the Table’s sorting state: defaultSortDescending, defaultSortByColumn, sortedColumn, sortedDesc. The new Table exposes the sortArray property, which represents the entire sort state of the table.

Filtering controls

The legacy Table did not support nested filtering. The new Table supports nested filters with the filterStack property.

Feature comparison

See below for a feature-by-feature comparison of the legacy Table and the new Table.

Updated approaches to existing features

CategoryFeatureDescription
Column typeAuto columnThe new Table forces explicit column types.
Column typeButton columnThe new Table has redesigned actions for triggering events.
Column typeUser Email columnThe new Table has an Avatar column that serves the same purpose.
Column typeModal columnModal columns are not supported natively in the new Table, but can be implemented by using a Column event handler to trigger a Modal component open.
ActionsAction button columnsThe new Table floats all action buttons to the right edge of the table when you hover over a row.

Legacy features unsupported in the new Table component

CategoryFeatureDescription
Column typeRating columnYou can use a Tag column to represent a rating cell instead.
SortingSort columns by raw valueThe new Table sorts columns by their mapped values.
StylingRow colorRow color is not supported in the new Table.

Retool Mobile now enables you build white-label Retool Mobile apps and launch them in the iOS App Store and Google Play. With a white-labeled app, you can choose your app’s name, icon, and splash screen, and also manage the version of the app available to your users to take full control of what you build. White-labeled apps are available to customers on our Enterprise plans. Contact us to get started or read our white-label app docs to learn more.