What's new on Retool

Retool news feed and changelog.

November 14, 2019

November 14, 2019 v2.52.16 — Auto-generate apps and table filters

As always please reach out to feedback@retool.com with comments and requests!

Auto-generate Apps


You can now generate a simple app automatically for Postgres and MySQL. Pick a table and a field to filter on, and we’ll build it for you 🙂

BETA — Table filters

You can now filter for values on the Table Component, no config necessary. Let us know what you think!


  • Added option to return raw date strings in MySQL instead of JS objects
  • Fixed a bug where Cassandra, BigQuery, Denodo, Vertica, Snowflake resources could not write
  • Fixed a bug where users couldn’t be invited and added to a group at the same time
  • Fixed a bug where GraphQL resources crashed if they had invalid schemas
emoji negtive reaction emoji neutral reaction emoji positive reaction
Thank you for your feedback.
November 07, 2019

November 6, 2019 v2.52.10 — Reorder query tabs + a new Cascader component


You can now reorder query tabs! Sometimes, it’s the little things 🙂

Cascader Component

When you need a dropdown with nested options, you can use our new Cascader component


  • Table cells have a new type: Modal — Clicking on a cell of this type will open a modal. You can use selectedRow.data to customize your components inside.
  • You can show and hide columns using {{ }} in the Column Settings section

Query Library

  • You can now delete your own queries in the Query Library
  • Query runs are now tracked in the audit log
  • REST resources are now displayed correctly with the base URL


  • Query preview now shows the data after transformation
  • Forms now validate text inputs of type email correctly
  • On-premise users now have git-syncing for resources
  • The MSSQL resource now lets you dynamically override username and password
emoji negtive reaction emoji neutral reaction emoji positive reaction
Thank you for your feedback.
October 29, 2019

October 28, 2019 v2.51.4 — Notes with threads, schema search, and checkout with Braintree

Notes v2

We’ve heard your feedback and built out a version 2 of the Notes component. You can now leave multiple comments, and also see who commented and when!


We spiced up the schema viewer for SQL based resources. You can search by table, field, and collapse and expand columns. We’ve also made scrolling through more responsive.

Braintree component

We added a Braintree component to accept payments — and to keep our Stripe component company 🙂

Query Library!?

The Query Playground is now the Query Library. We want the name to reflect the core functionality we’ve added to to the Library, like reusable queries. We hope this doesn’t stop you from playing around and experimenting though!

You can now pass along links to specific queries in the playground. This should make sharing queries much easier.

Screen Shot 2019-10-30 at 1.59.37 PM.png


  • Table columns are now sorted by the unmapped value. Now, using a mapper on a column won’t affect your sorting.
  • The Create button on the home page is now disabled for users who can’t create apps
  • Fixed SSL connections for legacy versions of Aurora
emoji negtive reaction emoji neutral reaction emoji positive reaction
Thank you for your feedback.
October 15, 2019

October 15, 2019 v2.50.3 — Reusable queries!

You can use the same query in multiple apps with Reusable Queries. Often, you want the same functionality across apps, but don’t want to copy paste a query over and over again. Reusable queries help you avoid code duplication, version control queries, and share queries with your team.


  • Add and edit headers in GraphQL queries
  • Pressing ESC correctly deselects your components
  • Performance fixes around the query editor and autocomplete
emoji negtive reaction emoji neutral reaction emoji positive reaction
Thank you for your feedback.
October 09, 2019

October 9, 2019 v2.49.0 — Note component, shared queries, calculated columns, and new resources

Retool managed notes — beta

If you’ve ever thought, “I wish I could just write a quick note about this user, but don’t want to create a table or add a column for it,” you should try the Note component. The component lets you comment on any row your database. For example, you can write a note (e.g. “duplicate user!”), attach it to userid_42, and retrieve it later. This is still in beta, so we’d love your feedback!

Playground updates: shared queries and variables

You can now share your Playground queries with the rest of the team! Once a query has been shared, all the editors in your team will be able to see, run, and edit the query.

Also new: variables in queries. Use double curly braces {{ }} in your playground queries to define parameters to your queries. To run parameterized queries in the playground, pass in values to variables on the right hand side.

Coming soon — import queries from the playground into your apps, so you can stay DRY and avoid copy/pasting queries 🙂

Calculated table columns

Ever wished you had Javascript in Excel? Now you have Retool! The Table component now lets you add columns populated by calculations (such as ones that reference other values in the table). And, of course, you get the power of JS with the {{ }}.

New resources: OpenAPI + CosmosDB + S3-compatible storage providers

We’ve added three new resources:

  1. API that has an OpenAPI specification (e.g. certain Google Cloud Endpoints)
  2. Azure CosmosDB
  3. You can now pass in a different base URL to the S3 resource to connect to any S3 compatible storage provider (ex: DigitalOcean Spaces or Wasabi)

Revert to an older release

You can now directly revert to an older release in the app editor, without searching through your entire history. (If your end users are not on the latest release, reverting to an older version will not revert their published version.)

Other improvements

  • SAML JIT user provisioning for Okta (if you know, you know)
  • You can now pass in SSL certificates to connect to RethinkDB
  • We added utils.copyToClipboard to let you copy text in Javascript queries
  • We now support various eastern european characters in our font, such as ľščťžřňěůôä for our Czech friends
  • Our MySQL and Postgres resources now accept self signed certificates — this is useful if you’re on GCP
  • Small fixes for containers in mobile mode, the DateTimePicker, and authentication for REST Queries
  • Various performance fixes
emoji negtive reaction emoji neutral reaction emoji positive reaction
Thank you for your feedback.
August 24, 2019

August 25, 2019 – v2.43.0

Improved backend logging

For on-prem customers, we’ve improved backend logging by emitting logs as a JSON object. We include all details (e.g. query response times, whether it succeeded or failed, etc) so you can track what happened across an entire request.

This logging improvement enables you to connect a monitoring service (i.e. Datadog) to read the logs and build reports and alerts around them.

Here’s an example of logs for a successful and unsuccessful query:

// SUCCESS {"requestId":"8aa9df50-78bc-4f95-b1f5-eb798c57888b","email":"yogi@retool.in","organizationId":1,"organizationName":"yogi@retool.in","message":{"type":"REQUEST","method":"POST","url":"/api/pages/uuids/3e9e40fa-ad86-11e9-a2e7-bf5202eb3fb8/query?queryName=query2","hostname":"http://localhost:3000"},"level":"info","timestamp":"2019-07-29T17:47:41.646Z"}{"requestId":"8aa9df50-78bc-4f95-b1f5-eb798c57888b","message":{"type":"QUERY_REQUEST","ipAddress":"::ffff:","userSid":"user_4c424358408e43a2bd4757e4dfce83c9","resourceName":"hammerhead_production","resourceType":"postgresql","environment":"production","isPreview":false},"level":"info","timestamp":"2019-07-29T17:47:41.741Z"}{"requestId":"8aa9df50-78bc-4f95-b1f5-eb798c57888b","email":"yogi@retool.in","organizationId":1,"organizationName":"yogi@retool.in","message":{"type":"QUERY_RESULT","success":true,"isPreview":false,"pageUuid":"3e9e40fa-ad86-11e9-a2e7-bf5202eb3fb8","queryName":"query2","resourceName":"hammerhead_production","resourceType":"postgresql","environment":"production","queryResponseTimeMs":"27.0771"},"level":"info","timestamp":"2019-07-29T17:47:41.771Z"}

// FAILURE {"requestId":"91497c47-22d2-4417-8b8b-ad5bc2054231","email":"yogi@retool.in","organizationId":1,"organizationName":"yogi@retool.in","message":{"type":"REQUEST","method":"POST","url":"/api/pages/uuids/3e9e40fa-ad86-11e9-a2e7-bf5202eb3fb8/query?queryName=query1","hostname":"http://localhost:3000"},"level":"info","timestamp":"2019-07-29T17:47:49.426Z"}{"requestId":"91497c47-22d2-4417-8b8b-ad5bc2054231","message":{"type":"QUERY_REQUEST","ipAddress":"::ffff:","userSid":"user_4c424358408e43a2bd4757e4dfce83c9","resourceName":"hammerhead_production","resourceType":"postgresql","environment":"production","isPreview":false},"level":"info","timestamp":"2019-07-29T17:47:49.482Z"}error: duplicate key value violates unique constraint "blocks_name_organizationId_key" at Connection.parseE (/retool_backend/node_modules/pg/lib/connection.js:601:11) at Connection.parseMessage (/retool_backend/node_modules/pg/lib/connection.js:398:19) at Socket.<anonymous> (/retool_backend/node_modules/pg/lib/connection.js:120:22) at Socket.emit (events.js:189:13) at Socket.EventEmitter.emit (domain.js:441:20) at addChunk (_stream_readable.js:284:12) at readableAddChunk (_stream_readable.js:265:11) at Socket.Readable.push (_stream_readable.js:220:10) at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17){"requestId":"91497c47-22d2-4417-8b8b-ad5bc2054231","email":"yogi@retool.in","organizationId":1,"organizationName":"yogi@retool.in","message":{"type":"QUERY_RESULT","success":false,"isPreview":false,"pageUuid":"3e9e40fa-ad86-11e9-a2e7-bf5202eb3fb8","queryName":"query1","resourceName":"hammerhead_production","resourceType":"postgresql","environment":"production","queryResponseTimeMs":null,"errorMessage":"duplicate key value violates unique constraint \"blocks_name_organizationId_key\""},"level":"info","timestamp":"2019-07-29T17:47:49.491Z"}Error in a microservice { error: true, message: 'duplicate key value violates unique constraint "blocks_name_organizationId_key"' }

Push groups from Okta*, Ping Identity, OneLogin, etc

You can now manage groups in your SSO provider and sync changes to Retool.

  • Assign new users to groups in Retool when you provision their accounts in your SSO provider.
  • Remove users from groups in Retool when you do so in you SSO provider.
  • Create & destroy new groups in Retool when you do so in you SSO provider.

*Okta coming soon! Check our next release notes for an update.

Improved navigation between different elements in Edit Mode

  • Retool now highlights the selected element (e.g., query, component, temporary state, or transformer) in the left-hand panel model browser.
  • Also, each element referenced in a query or text input is hyperlinked to its detail view. For example, if you reference query2.data.name in a transformer, you can click on query2 to navigate to it.

Expose column indexes for faster querying

We now show a ⚡ icon next to column names in the query panel database schema when that column has an index. Queries that use indexed columns often run faster than they otherwise would.

Descriptions for releases

Now you can add a description when creating a new release (aka version) of an app. That way if you have to roll back to an old version, you’ll know which version to pick.

Improved SQL autocomplete

The query editor autocomplete now handles handles camelcase, non-lowercase letters, numbers, and underscores in table names.

New & Improved

  • Added an optional MaxKeys parameter to AWS S3 queries to limit the number of objects returned.
  • Updated Google Sheets integration to read, append, and update beyond 26 columns.
  • Updated Datetime Picker to re-trigger queries after selecting a new date or time.
  • Updated sign in button to read “Sign In” for customers with SSO enabled.
  • Added resource icons to query tabs.
  • Fixed the Bounding Box component to calculate the correct (x,y) coordinates for landmarks.
  • Fixed JSON Schema Forms to respect when form elements have a required flag
  • Form submit buttons now prevent accidental multiple submissions.
  • Improved performance of Javascript queries.
emoji negtive reaction emoji neutral reaction emoji positive reaction
Thank you for your feedback.