What is Retool?
Retool is a drag-and-drop no-code editor with a plethora of pre-built components to build internal CRUD (create, read, update, delete) apps as fast as possible. Retool assumes you have a working knowledge of a few topics:
- HTTP requests and how to call APIs with them
- Databases and how to connect to them and query them
- Javascript
If you check all three of those boxes, Retool will catapult your CRUD app productivity into the stratosphere.
Why use Retool?
I discovered Retool around December 2020. I took on a consulting client who needed a tool to manage commission payments. The client had read about Knack, and they suggested it first. Knack prices their plans based on the number of records you store, which wasn’t reasonable for my client’s intended use. I did some research into internal saas no-code tools, and Retool blew me away immediately.
I am incredibly interested in no-code tools and how they have evolved over the years. I cut my teeth as a web developer almost two decades ago, working with Macromedia Dreamweaver. I started out working with its WYSIWYG drag-and-drop web page editor, and its failings pushed me to learn HTML and CSS.
As a consultant, I see software development as a means to an end. The business doesn’t care what tools developers use, just like I don’t care what kind of carjack my mechanic uses. The business just wants something that works.
If I can build a tool ten times faster in Retool and achieve the same effect as a custom-built app, I’m going to choose Retool every time. This commission management app seemed like an excellent opportunity to use Retool and get some experience with it. If Retool didn’t work out, I felt like I could always build a custom React or Vue app as a fallback.
What makes Retool special?
I’ve already mentioned the drag-and-drop editor, but seriously—it’s a game-changer. Most drag-and-drop editors’ default visuals are subpar. Retool apps look professionally designed with zero effort. I don’t even have to bother with mock-ups because I can use Retool for those too.
Retool is built for developers, so it has some nifty modularization features that you might expect even in custom-built apps. If you create a piece of an app that ends up used everywhere, you can save that piece as a module and import it where needed.
Retool also lets you modularize different types of queries. If you use a query on multiple pages of an app, you can store it in a query library instead. Retool’s out-of-the-box query support is excellent. You can use a query builder or write raw queries yourself.
Arguably Retool’s most indispensable feature is its fantastic interop with Javascript. You can slap in some Javascript almost anywhere you can think of, and it provides you with tremendous flexibility and power.
Retool creates a workflow trinity that is flexible and works exceptionally well. You make queries to fetch the data you need. You use javascript to transform the data you fetched. You craft visual components to display the data you transformed.
Imagine all the power of React or Vue componentization but with one-tenth of the code, and you get Retool. Retool handles things like:
- Table pagination
- Table filters and sorting
- Table exports to CSV
- Table selection + multi-selection controls and logic
- Loading spinners and other loading states
- Notifications and other visual alerts
- Transforming query output into JSON
These are things that take time to build correctly, and with Retool, you get them for free.
Alright, what’s the catch?
It wouldn’t be fair if I didn’t take some time to point out the current weaknesses of Retool. The severity of these weaknesses depends on your use case and budget.
Mobile
Retool does have mobile support, but from my personal experience, things are sized poorly on mobile. Thankfully, most internal apps are used on a desktop or tablet resolution, so this isn’t a huge deal.
Just be aware that if you are designing something to be mobile-first, Retool might not be a good fit.
Pricing
Per-user pricing saddens me in general, but a 5x price increase, per user, for some relatively small features sours my opinion on their pricing.
Access controls and audit logs are helpful in any app. They’re probably required in more rigorous use cases like healthcare because of policies like HIPAA. Using access controls in consultancy work to prevent clients from editing their apps would be great, but it’s not worth $40/mo extra per user.
Custom themes and branding are also locked behind the higher price tiers, but that’s a minor issue. Because Retool has an Image
component, you can still include branding logos and images on lower-tiered plans; you just have to do it manually.
I would love to see a flat per-user rate with all features between $10 and $50 per month. Somewhere around the $20-25 mark seems like the sweet spot to me.
I also think that a flat $x/mo
for audit logs, a flat $y/mo
for access controls, or a flat $z/mo
for both makes sense. This flatter “additions” structure, combined with a slightly higher base per-user price, would feel fairer.
Forced Design Decisions
Retool has some forced design decisions that might not work for your use case. The main two that I have encountered are:
- You cannot disable table pagination
- There are max-width page constraints
Table pagination as a default makes sense. It’s pointless to overwhelm users with 500 rows of data when their screen can only display 30 rows at a time. Sometimes though, I would prefer to scroll instead of navigating through pages.
If you have a fixed set of data, you can make the table taller to account for the extra data and prevent it from showing on a second page. However, if you have a dynamic set of data, you will eventually overflow the table’s height in the number of rows, and Retool will push your data into multiple pages.
Max width, again, is a sensible default. I would still love to use extreme wide-screen real estate when available for things like legends or keys.
These things are not deal-killers. They make apps cleaner and easier to use. It encourages you to find ways to display data that don’t involve horizontal scrolling. Retool apps looking professional with no effort is no accident. The developers have put a lot of thought into visual defaults and constraints to help make this a reality.
A Configuration Annoyance
This downside is, among other things, a pretty minor quibble. It would make my life a little better if it got fixed. I wish I could configure defaults for query options.
Inside queries, there are options for notifications on success and failure. I would love to be able to make these more consistent throughout my Retool apps. I want a way to configure a default query response that gets applied when I create new queries.
For javascript queries that run in the background, I rarely want to display any notifications—even on failures. I’d love to configure the “do nothing” behavior as my default for javascript queries, so random notifications don’t sneak into my apps unless I have specifically created them.
Some way to apply this configured default to all current queries in existing apps would be a tremendous boon. As it stands currently, I have to check each query individually in each app to change these options.
Accessibility?
I have no idea how Retool fares in terms of being accessible. I don’t have any disabilities that require me to use accessibility tools. I could test some basic features like screen reader support, but I don’t think I would be a good judge because I don’t use accessibility tools regularly.
If you require accessibility tools and use Retool, I’d love to get your opinion on how well it works for you so I can add it to this post.
Retool’s Niches
Alright, now that we’ve talked about what Retool does, let’s talk about where it fits in a developer’s toolbox.
Internal CRUD
Retool is the king of building internal CRUD apps. If your use case involves simple API calls or Database updates and inserts and is an internal app, Retool can be your entire frontend.
The first example below is what you might call a “dashboard.” The other two examples are simple CRUD apps. Retool is excellent for both types of apps.
- https://retool.com/templates/deal-report
- https://retool.com/templates/promo-code-manager
- https://retool.com/templates/sendgrid-email-sender
Retool recently published a “State of Internal Tools” report. They are very interested in how most developers interact with and maintain custom-built internal tools. You can find the report here:
https://retool.com/blog/state-of-internal-tools-2021/
Consulting
Retool is the perfect tool for a consultant who works to build internal tools for other companies.
Usually, I have a cookie-cutter custom React app that I clone and use to build new projects. For internal apps, logins are almost always a requirement. Therefore some backend will be necessary. Frameworks like Next.js and hosting providers like Netlify or Vercel make using lambda functions an easy option, but it’s still something you will have to set up (and support, and maintain) yourself.
Other things you might deal with per client are:
- Login authentication
- What database they use and how their tables are structured
- What APIs they connect to and use
- Deploying the app
- Deploying updates or rollbacks when things break
- Deploying to test environments to test updates
You will always configure these things per project, and Retool dramatically speeds up this process.
For companies that don’t need on-premises deployment, you get a bunch of stuff out of the box. Retool has authentication built-in. Retool has a bunch of database helpers to get you running queries after a few minutes of setup. Retool also has some standard API helpers to help get you connected as fast as possible. Deployment “just works.” You get multiple environments and rollbacks for free. Changes update your app instantly after an end-user page refresh.
For companies that require on-premises deployment, Retool has excellent documentation about getting that running. They provide a docker container and support to establish git commit history for your apps too.
Setting everything up for a small company as a consultant was a breeze and took me substantially less time than it would have to build something custom. I believe Retool knocks it out of the park for this type of work.
Here are some pictures of what I created in Retool for the client mentioned earlier in this article. I have redacted private information.
Backend Developers
Are you a software developer with a lot of experience building APIs and little to no experience building frontend stuff? Maybe you just hate frontend development? Retool gives you wings.
Prototyping
Because Retool’s (edit -> save changes -> refresh) loop is so fast, Retool is an excellent tool for building prototypes. You could do this on Retool’s free tier.
If you have a client who prefers to be more visual and hands-on, you can build the first draft in Retool and later pivot to building a custom app that gives you the complete control necessary to execute their entire vision.
Conclusion
I don’t feel qualified to comment on no-code tools as a whole, but Retool has dazzled me. I view no-code tools as another tool in my developer toolbox with pros and cons, just like everything else. If I need more control of specific visual elements, Retool isn’t the tool for the job. That’s okay!
From an 80/20 perspective, Retool is my new 80, and my React app is now my 20. Retool handles 80% of my consultant workload exceptionally, and the other 20% requires complete custom control.
Retool has been an absolute pleasure to work with, and my development speed with it is outstanding. I would highly recommend it to anyone who builds internal apps, and especially anyone looking to do freelance or consultancy work.