Airplane: a complement to Retool for non-CRUD internal workflows

Screenshot of Retool UI

A lot of Airplane users wonder how we're different from Retool–are Airplane and Retool competitors? Complementary? Here's our take.

TLDR: both tools excel in different ways, and plenty of companies use both Retool and Airplane as complements. But there are also a few areas of overlap.

What is Retool?

Retool is a platform for building internal tools. They provide a low-code, drag-and-drop GUI builder that allows you to put together a dashboard that you might provide to a customer support or operations team.

For example, let's say you want to create a dashboard that allows your support team to search through a list of customers, click on a customer's name, and then pull up that customer's account information. In Retool, you could use their WYSIWYG app builder to create a page with a text field for searching through customers, a table that gets displayed with the search results, and another panel that shows the customer's metadata when clicked on. Then, you could hook up these front-end components to database queries or REST endpoints that provide the actual customer data.

Here's a walkthrough from Retool that shows their product in action:

What Airplane can do that Retool can't, and vice-versa

At a glance, Airplane and Retool might seem competitive. Both platforms use phrases like "internal tools" or "internal apps" to illustrate what they should be used for. However, internal tools/apps is a broad category. Both platforms have very different focuses, and as a result, there are many things each one can do that the other can't.

Retool's primary value add is in allowing people to build internal UIs quickly with a drag-and-drop UI. Unless you're an experienced React developer, building a UI in Retool is going to be much faster than code. You'll trade some flexibility and customizability, but for an internal dashboard, it's good enough. However, Retool still depends on you to provide the database queries or API endpoints that it needs to hit in order to make those UIs functional.

By contrast, Airplane does not provide a customizable UI. Airplane's focus isn't on building admin panel-style internal tools. Instead, Airplane is focused on allowing engineers to model internal workflows, especially write-heavy or compute-heavy operations that may not fit cleanly into Retool's CRUD-based model. Long-running operations, multi-step operations, required approvals, and things that are hard to model as REST endpoints are great fits for Airplane and can't easily be handled by Retool.

For example, let's say you have a Python script that you run every time the company needs to do a GDPR-compliant deletion. It's not enough to flip a bit in a database to "soft delete" this record. GDPR means that you have to permanently delete this user from prod DBs, backups, third-party tools, and more.

If you wanted to create a button in your Retool dashboard that lets the support team kick off a GDPR deletion job, this would be quite difficult:

  • This operation can't easily be modeled as a REST request or a simple SQL query.
  • Retool has aggressive timeouts that make it hard to do long-running tasks.
  • There's no notification system that would let you know when this is finished running.
  • If you wanted to put this sensitive operation behind an approval flow from a more senior team member, this is difficult to model in Retool.

Instead, Airplane handles this use case perfectly:

  • You can deploy your GDPR deletion script to Airplane in a few minutes of work.
  • We'll auto-generate a UI that your support team can use to run this task themselves, and automatically take care of audit logging and notifications.
  • Airplane also makes it easy to configure permissions, approval flows, input validation rules, run constraints, and more.

Check out our 3-minute demo video to see how Airplane works:

Airplane handles more than just Python scripts. We're built for maximum developer flexibility and ease of use, so you can specify the logic behind any task as a SQL query, REST endpoint, Node or Python or shell script, Docker image, and more. This can be more flexible than Retool's rigid approach of enforcing that everything is a database query or a REST endpoint.

Who should use Airplane, vs Retool, vs both?

Reasons to use Airplane:

  • You want to optimize for speed: You can create a "task" in Airplane (a single lightweight app) in a few minutes after signing up and have your teammates start using it right away. Retool by contrast takes quite a bit of effort to make your first functional app.
  • You don't have a UI-heavy internal tooling use case: If you just need a bunch of buttons that perform common support operations, and don't need a built-out admin panel, then Airplane can solve all of your internal tooling needs without needing Retool or another UI framework.
  • You have long-running or multi-step operations: Operations that can't easily be modeled as API endpoints, like a script or a long-running job, are use cases that Airplane handles uniquely well.
  • You need granular permissions: Each task in Airplane represents a single, unique operation, and each task can have their own precise set of permissions. Different users or groups can have access to view the task, request a run, execute a run, or edit the task.
  • You need approval flows: If you have a task that needs a second person to approve it before it executes, this is natively-supported functionality in Airplane.
  • You want to run internal tools through Slack: Any task in Airplane can be run as a Slack command, and you can get notified in Slack about task runs or approval requests.

Read our case study with Dover on why they switched from Retool and other alternatives like Django Admin to solely relying on Airplane.

On the other hand, here are some reasons to use Retool:

  • You have a UI-heavy use case: If your use case requires a highly customized UI, then Retool or another UI framework might be necessary. (And if you solely have read-only use cases, then you may want to also consider BI tools like Metabase).
  • It's easy to spin up new API endpoints: If the majority of the work in building your internal tool is UI work, and it's easy to create the backend endpoints that Retool needs to talk to, then Retool may be able to fit most of your needs.

At scale, we've found that most mid-size and larger companies have both needs. They need a Retool-style UI, but also have a long-tail of operations that are hard to model in Retool and are a better fit for Airplane. As a result, many of our larger customers use both platforms in conjunction with each other. Read on to find out how.

How to integrate Airplane with Retool

There is no direct integration between Airplane and Retool, but there are some easy ways to link to your Airplane tasks from within your Retool dashboard (or from anywhere else).

Deep-linking URLs

In any Airplane task, you can add a query string to the link that will auto-fill the parameters of the task when it loads. This means you can dynamically generate links to Airplane tasks and embed these into Retool as links or buttons.

For example, let's say you have a customer dashboard in Retool which shows a customer's metadata when they're selected. You want to add a button there that lets someone add credit to the user's account, but this is a JS script that you've turned into an Airplane task.

You could have the button in Retool link to Airplane, and have the link look something like this. Note the query string at the end of the link:

https://app.airplane.dev/tasks/tsk20210608zfmg32u?user_id=88175&amount=399

You can get this link by selecting the link that's active when you're looking at an Airplane task, and then adding a query string with all the fields you want pre-filled. When the user clicks on that button in Retool, the Airplane task that opens up will look like this:

An Airplane task with pre-filled parameters via the query string

IFrame Component in Retool

Another option is to use a Retool IFrame component to display an Airplane task directly in Retool.

You can specify a pageUrl with parameters similar to the deep-linking example, and you can even update that URL as values change. (You may need to call reload() to have the form update.)

If you're interested in trying out Airplane, either as a complement to Retool or as a replacement, you can read our docs to learn more or sign up today and start using Airplane for free.