I'm planning to build a SaaS product loosely in the B2B logistics space - it needs to be relatively low cost to build/maintain, look slick and be extensible.
It would be customer facing, meaning each customer would need a login/account (or perhaps many, if a whole team is using our product).
I've looked at Retool and it looks quite epic but it looks like it's designed primarily for internal apps.
Has anybody used, or attempted to use Retool for a production, user-facing app?
Would really appreciate advice, war stories or recommendations.
I've done a large greenfield rebuild before, which was a success - but I will never do that again. It ate my life.
I do have a bootstrapped product already in the market, but this is a second, unrelated product for a different audience....a new project entirely.
First project is Node + React but considering Retool for a v1 for this next project.
Can't speak about Retool but I wouldn't want to go away from standard software development life cycle with version control, release management and testing... And I definitely would want to avoid a proprietary platform. Isn't there an open source alternative?
Retool seems to support basics like version control, release mgt etc but the platform risk of a proprietary platform is certainly a concern.
We evaluated PayloadCMS to drive the backend of a mobile app and eventually settled on Directus because it supported heterogeneous collections which was something we had to have.
Directus also has a template for a multi-tenant app which sounds like something you might need.
What is your exit plan if Retool doesn’t fit your needs otherwise?
Downsides? The app overhead can be bulky. It's not something users are going to quickly open, look at some stats, and close imo. If your use-case is users logging-into the platform and likely keeping the dashboard/whatever open for hours or indefinitely? That's a better fit.
Their support team needs a lot of work. They generally are slow to respond and don't understand their own products or pricing. A lot of what should be simple questions end up taking multiple back and forth emails where you find yourself explaining the nature of your problem/question to the support person. It's extremely frustrating to the point I've thought about abandoning them over how incompetent support is. That said, the CEO is really responsive to direct emails...
It's definitely used by some non-tech companies (think exercise companies, or property management) but not sure it's the typical HN crowd so you might not get war stories
* Plasmic (open source)
* Jet Admin (proprietary)
* Budibase (open source)
* Appsmith (open source)
And a few others. Most had limitations around our need of multi tenancy/team oriented backend, or were too oriented towards internal tools, and I was worried about data lock in with the proprietary ones.
Ultimately I chose to go with Rails with Bullet Train. But this was right before LLMs became kind of the norm to hack stuff together. If I were to choose today, I’d probably pick Plasmic with some LLM hacked together TypeScript backend for a good balance between low effort dev velocity and future proofing, maybe with a BaaS like Supabase+Auth0. All the LLMs seem to be trained on a TypeScript-shaped shallow stack, and static typing gives a bit more protection against LLMs chasing the dragon.
I wouldn’t ship an actual product with heaps of users from windmill but it’s perfectly capable of proving concepts, and the workflows are excellent.
I do have one product I built entirely in windmill but you’d never be able to tell. It isn’t online right now. It was essentially a scheduled script for fetching smoke forecast data from government websites, a react front end, and a tile server which sent map tiles to the client containing the smoke forecast data. The performance was totally fine and the UI was nice, but I built that part mostly by hand rather than exclusively with their WYSIWYG editor.
The saying "it makes hard things easy, and easy things impossible" is fitting, once it feels like you're fighting against the platform, it's time to quit and start writing some code.
From my experience literally yesterday, they were pretty prompt. But we have a private shared Slack channel—something I suspect they’ll set up if you’ve got high user commitments.
(To the OP’s question, though: we’re not doing anything public facing.)
As soon as things get more complex I move things to react. But that is usually pretty easy to do as you know the users pain at this point pretty well.
- The SQL Server plugin is a little halfbaked. It doesn't work properly with failover clustering and I had to punch in the IP address for a specific primary node, which then breaks when the cluster fails over to a different primary node. The "port" field is broken and you have to leave it blank or you get a type conversion error in their connection code. Going through a REST API seems to be the more well-trodden path.
- Google login in the open source edition is clunky, and there's no good way to tell users to use it. There's a separate pair of login/password textboxes on the same page that draws the user's attention; we have to teach users to click on the Google login button which then opens in a new window. In our case we don't even need authentication, but there's no way to remove it and offer a login-free experience.
- You can't really hide that you're running in Budibase. Despite my best efforts, my users call all my apps "Budibase" instead of the actual name that I gave to them. And nobody knows how to pronounce "Budibase"--native speakers tend to come up with "bootybase" instead of "buddybase."
The development experience is delightful. I really like it. I wish I could design all my full-code UIs in Budibase rather than having it attached to a low-code platform.
The ultimate way to go in my situation was to build a library of single-use Streamlit or Gradio code with the aid of an LLM.
Their pricing pretty much kills any chance of margin for a typical SaaS company with a free tier.
Frustrating, because Retool is 80% towards being a perfect low/no code builder for complex-ish user-facing apps.
Happy to answer some questions and show you what we’ve built with Lowdefy - It’s very powerful and easy to get started with and maintain. gvw at lowdefy.com
Retool has a high ceiling for what you can build with it. Generally speaking, most of our external use cases are B2B use cases that focus on productivity and data, not things that require highly differentiated visuals and animations. We call this "Operations software".
To name a few examples:
- Greenly is a B2B climate tech company who built a large portion of its product using Retool. You can see their case study here: https://retool.com/customers/greenly - Ylopo is a real estate tech company that built Retool apps to drive upsell opportunities: https://www.youtube.com/watch?v=nj0_XuRh3G8 - Retool runs its Partner Portal through external-facing Retool apps: https://www.youtube.com/watch?v=Fu7FlG7SsU0
We had to make a lot of platform improvements in Retool's performance and design capabilities to claim that we have first-class support for customer-facing use (it's not as easy as it should be if you're new to Retool, but we're working on it). The bar is simply higher. Pricing and packaging needed to be there as well: we launched external user pricing that gives you a predictable rate at scale, and if you're bootstrapping, you can get up to $60k in credits through our Startup Program, which would cover your Retool bill entirely.
Happy to chat more if you're overwhelmed by all the links - you can email me at antony[at]retool[dot]com.
(Quick plug - we're actually running a webinar on how to build external-facing applications tomorrow! You can sign up on https://events.retool.com/build-external-apps.)
Some PostgreSQL query errors are not handled correctly. It results in a fatal handling which restarts the entire server. It takes up to 30 seconds for the full reload meanwhile users are getting 504s.
The error is benign and totally retriable in the userland. It’s a query timeout. No need to handle it as fatal.