Announcement: Legacy Table component officially deprecated

Hi all! We are excited to announce that we have officially deprecated the legacy table component! This has come after lots of work on our new Table component to add feature parity between the original table and the new and improved one. Some new features include adding new rows and new columns like the button column, rating column and image column.

If you haven’t used the new table component yet, here are some docs on how to use it: Table (New) | Retool Component Library.

What happens to existing apps that use Legacy Table?

Nothing! The fact we are deprecating the Legacy Table only impacts your ability to create additional Legacy Tables, not use existing ones. However, we highly encourage you to transition your apps to use the new Table component, as it is much more performant and has many new features.

How to continue having access to Legacy Table

This deprecation of Legacy Table is the culmination of a long series of projects introducing features to the new Table component to make it have parity with the legacy component. That being said, the legacy Table will still be available if you need access to it. If you are still wanting to use the original table, you will need to ask your admin to turn on deprecated components for your organization (to do this, go to Settings -> Beta and search for “deprecated components”). We would also love to hear why you are keeping the legacy table by commenting on this thread or sending me a DM!

Please let us know in this thread if you have any comments/suggestions.

Happy building!

– Darya


Hi Darya,

Believe it or not, I just switched back to the Legacy Table from the new table for a specific use case. The Legacy Table offers straightforward control over the order of columns—an essential feature for my workflows, which the new table seems to lack.

Issues with New Table's Dynamic Columns

To reorder columns in the new table, I need to adjust the order of my data and utilize the Dynamic Columns setting. However, this method has led to multiple issues:

  • There's a glitch where dragging a header of a dynamic column can break the table, and unfortunately, no amount of refreshing resolves this (refer to my last post for more details).
  • I lose the ability to set specific column widths when using the dynamic columns setting.

While I appreciate the flexibility of Dynamic Columns in accommodating a variable number of columns, they don't support my need for dynamically rearranging column order efficiently.

Suggestion for Improvement

I would greatly appreciate it if there were an option in the new table to dynamically control the column order without the need to rearrange my underlying data. This feature would significantly enhance the usability of the new table for use cases similar to mine.

Continuing with Legacy Table

In the meantime, I will continue using the Legacy Table. As the admin, I've enabled access to deprecated components within our organization. I'm curious to hear if others are facing similar challenges or if there are potential workarounds I haven't considered yet.

Looking forward to your thoughts and any upcoming updates that might address these issues.

Best wishes,
(revised by my BFF, chatGPT)

Hey @Greyson_Sawyer ! Thanks for such a thorough message (and thanks to chatGPT haha).

This new table does have a way to reorder columns! You can drag and drop things and re-arrange things in the right side inspector panel:


This should reorder the columns and doesn't require any data modifications! Let me know if this is what you meant.

As to your other point about column widths, we really appreciate this feedback. We have a few things internally we're planning to do to hopefully address some of your concerns here. Will send an update on here once those have been implemented!

-- Darya

Hi Darya,

Dynamic Column Reordering Needed for Automated Layouts

Thanks for your quick response and for the suggestion to manually rearrange columns via the inspector panel. However, for our specific use case, this manual approach isn't feasible.

We utilize a dropdown menu that contains a list of "saved layouts". Selecting a layout from this dropdown automatically reconfigures all of the table columns to reflect the chosen layout. When a different layout is selected, it rearranges the columns again to match the new configuration.

Legacy Table Functionality

In the Legacy Table, we had a feature that allowed for dynamic and automatic reordering of columns directly within the table interface:

It was very simple to reorder the columns

It also allowed dynamic values

Unfortunately, this functionality is missing in the new table, which is crucial for the dynamic nature of our project. That’s the reason I'm still using the Legacy Table. The dynamic columns settings in the new table works differently and seems useful for creating an unspecified number of columns, but doesn't give the same flexibility for the column order as the legacy table.

Request for Feature Implementation

Could there be a possibility to integrate a feature in the new table that allows for dynamic column reordering via code?

Looking forward to potential updates and thanks again for considering our feedback.

Best regards,

Good morning, we have multiple applications in retool, therefore we have no control over how many, or which old ones use this deprecated component, it was working very well and this week began to fail the links in actions to other retool applications, we contacted the support team but they told me they do not have much technical context, so they recommended us to move the problem here.

What we have noticed is that with the deprecated component links they break the browser of anyone who visits them.

have a structure like this,

and when navigating to them attempts to redirect to

but the browser remains blank, I hope something fails with that redirects

If a user navigates to this 2nd url it loads the normal app,

thanks for your help!

@Greyson_Sawyer Sorry for just getting back to you on this. I have submitted this request internally and will update with any changes!

Hey @cejaramillof -- can you expand a bit on what kind of links aren't working? The following links are working for me, is this what you mean?

Hey, thank you very much for your answer,
basically the links to retool applications in the actions of the table component (the old one)

We have a ticket currently open (75994204221927) with this where we attached the examples, and what we discovered, but we were asked to contact us through this forum for more technical support,

@cejaramillof Thanks for the info. We will take a look at this internally and keep you updated!

1 Like

Hi Darya, Any update with this?

Hi @cejaramillof, want to make sure I understand your issue: when you click a Row Action, a new tab opens to a URL in the format https://<orgname>, which then redirects to https://<orgname><some uuid>/folder/appname#hashkey=hashvalue. After the redirect, you're seeing a blank page, but if you refresh, the app loads. Is that right?

On our end, we're observing the redirect, but the app loads successfully. I'm not sure what could be causing the blank screen, and it's tough for us to diagnose without a reproduction - is there any chance you have a simple reproduction of it you'd be able to share in app json export form? You can email me at donald at retool dot com. I'd also recommend upgrading your Legacy Table instances to the newer Table component when you can.

The biggest reason I keep having to use the legacy table is that there seems to be no way to dynamically set column order and visibility. We let our users change the order of their columns as well as which ones show up. In the legacy table I just put an array of the columns I want to show up in the order I want it to show up in. Then I let the user change that array through other components.

I cannot figure out how to do this dynamically in the new table. Ordering manually is not a feasible option for my use case.

Two frustrations with the new table that keep us using legacy tables:

  • The legacy table "just works" out of the box much better; we can just write a query, put it in a legacy table, and all the column names in the legacy table will match those from the query. The new table tries to "helpfully" autoformat every single column name, so whenever using the new table, we need to go back and revert the column names to those from the query. This is especially time-consuming when working with queries that produce 10-40 columns.
  • If we need to go back and add additional columns to a query that's connected to a legacy table, they will appear in the legacy table automatically (which is good), and at most will just need to be re-arranged, which is fast and effortless. By contrast, with the new table, when an additional column is added to a query, it needs to be re-added to the new table manually, renamed, and then rearranged.

We do use new tables in our app, but they're only really viable for smaller (thinner?) queries where we don't need to go back and undo the new table's autoformatting. The legacy table works out of the box and requires significantly less reconfiguration.