Hacker News new | ask | show | jobs
by cuffe 842 days ago
Hi all, engineer who worked on forms @ Retool here. Excited to get HN’s feedback on a new product I’ve been working on: Retool Forms. There are a ton of form builders out there (e.g. Typeform, Google Forms, Airtable Forms, etc.) and honestly we weren’t really looking to build another one. But as a developer, I wanted my data in my database, not in another SaaS app (which probably has a shoddy API, like every example I listed above). Surprisingly, the only way to build a form on top of my database was by a) building my own backend (probably via node), and b) building my own frontend (probably via React, and then maybe via formik). There was no “one click” form-on-top-of-my-database tool available.

So we decided to build a form builder. It allows you to:

1. Send data directly to your database (Postgres in our case), your data warehouse, or wherever else you want it

2. Write JS almost anywhere on the front-end, including libraries like moment and lodash, for custom validations, conditional logic, and data parsing

3. Run any arbitrary code in form submission (or validation), via our Workflows product

4. Store it in our database (where we give you a connection string), or your own database

5. Self-host it in your own VPC

And it’s free with no arbitrary limits on the number of users, forms or submissions.

I’m hoping to ship a bunch more features like integration to any REST API, more styling options, etc. If you have any feedback please let me know!

7 comments

Congrats on the launch, looks neat!

> and b) building my own frontend (probably via React, and then maybe via formik)

There's also a new technology called HTML. It comes with a <form> tag, <input> field tags, and even a <button> to submit!

Although new, they managed to get all browsers on board to support it.

You will not need to import 150kb of JavaScript, though, which is sad. And it's not shiny to speak about in the interview for your next job.

I guess the pros dont overweight these cons... Yes, "probably via React" is the way!

Let me tell you something about this fancy HTML tag you are talking about.

It has an "action" attribute that points to a server you need to own and run a code you need to code in order to validate the input and store it in the database. If you are comfortable doing this, which no doubt you are, then you are not the target audience of this tool.

Let me tell you something else.

If you read the comment again, you'll see I'm replying to OP's scenario of setting his own server and frontend.

I'm questioning the "probably using React" part of the frontend because... it's an overly complex solution to an already elegantly solved problem?

> It has an "action" attribute that points to a server you need to own and run a code you need to code in order to validate the input and store it in the database

Pure-HTML forms work exactly like React forms; React does the lifting but it doesn’t change anything to the fact that the data eventually needs to be sent to a server to be stored in the database.

> Pure-HTML forms work exactly like React forms

This should probably read "React forms work exactly like pur-HTML forms" seeing as HTML came first and react ultimately spits out either an HTML form or a form request.

The original point still remains though, reaching for react just for forms is really heavy handed. It works fine if everything on the site is react already, though that's an assumption that I wouldn't make and that I hope will die soon enough if devs finally start moving away from massive react apps.

Why do people here commonly imply downloading 150kb of data is an issue in the current year?
From the user perspective, forcing to download 150kb unnecessarily is a bad professional practice. Not everyone has 5G and an iPhone.

From the dev experience perspective, these 150kb of Javascript and the complexity you'll build upon it will come with bugs, security holes, updates, maintenance. Personally I wouldn't want this for me unnecessarily.

Because it is. It can be very frustrating not to be able to fill a form on mobile with a 3G connection just because some random dev decided that downloading 150kb of JS to render a simple form is fine.

I mean it’s a form; we already have all the HTML elements already; why do you need React for? This is why nowadays we end up with Electron apps that take 6GB of RAM to display a chat.

It's really not that simple.

What about complex validation rules? Do you really think it's user friendly to require them to send the whole form just to tell them "sorry no" 10 times over until they get it right?

What about multi-value selects, potentially with rules? E.g. form field like "choose up to 5 locations in the radius of 10km".

What about form fields like "pick a point on a map"?

Etc. Don't act like every form is 5 simple text inputs.

Doing validation in the frontend is a bad idea.

You'll have to do in the server, if you're sane.

I bet Retool Forms does in the server.

You're worried the page will refresh with an empty form, if it fails. It's simple, just collect the data and return the form pre-filled using the value attribute, along with the error message.

If you don't want to refresh the page, you could even use something like htmx, which is a LOT simpler than React, but really not necessary for simple form submission.

Of course you have to validate on the server. That's a given, always.

But you want to provide better UX to the user.

Htmx is not simpler than React. I can't deploy that without a server that knows everything about the frontend. React allows me to decouple. Templates are hell. I lived in it for many years, never again.

> Don't act like every form is 5 simple text inputs.

Well to be honest 99% of forms are 5 simple text inputs with a select. What was the last time you had to implement a "choose up to 5 locations in the radius of 10km", really?

> What about form fields like "pick a point on a map"?

Same thing: of course there are rich forms for which you need JS, but they are the exception, not the rule.

React isn't required for client-side validation or non-spec form inputs.

Doing form validation in event handlers for DOM events works very well, and a simple script tag or custom element is all that's needed to build a multi-value select.

It's not simple. I made multi-page forms with dozens fields where your suggestion would lead to intangible mess of spaghetti code - I know because I worked with the web way before React. Even with the best coding standards and a team of seniors it's just too hard to maintain - and seniors usually don't write forms.

I really don't want to go back to the jQuery days. You do you, but don't say it's easier - it really isn't.

BTW you can just use Preact if you're worried about the bundle size. I do that, it's perfect and just a little performance impact, usually not visible in small apps.

> What about complex validation rules?

I wpould use my server-side form and database library, Bozen[1] to do this.

>

[1]: https://github.com/cabalamat/frambozenapp

So the user would have to submit the form and be met with 10s of errors? I'd rather tell them immediately.
So, you didn’t feel comfortable relying on “another SaaS” app, and then go on to suggest Retool Workflows, which is itself part of another paid SaaS app? All those “shoddy” alternatives also have free tiers.
Not sure that is fair? The difference seems to be the data is squarely in your own DB. You can use their SaaS for validation. You might pay for something (surprise?).
So exactly like Budibase, but closed-source?
It would be pulling in another SaaS, what isn't fair?

It actually sounds like an interesting service in my opinion, but it is another SaaS that is giving me an API for a form handler that I could otherwise host myself.

Personally I wouldn't see the use case of using your own DB as helpful, if you already have your own database the odds that you aren't hosting APIs as well seems low.

Why is it free? And for how long will it be free for? I do not want to start to use another Form builder to find out months later I'm locked with a $50/m charge.
When you say on the website that Amazon uses this product, is Amazon a paying customer or is it simply an engineer (or a few I suppose) are using it?

I’m curious how to interpret the “trusted by” statement here

Amazon pays us more than $1M annually. See also: https://news.ycombinator.com/item?id=37426191
> There was no “one click” form-on-top-of-my-database tool available.

Does this count: https://airforms.com/

Interesting. 'Automatic database diagrams'. How does that work in a db without primary/foreign keys?
In that case you would want to use another tool that is more manual than automatic.
> There was no “one click” form-on-top-of-my-database tool available

When did you start building it? Budibase does exactly this since 2020.

There is no download link, so how can this be self-hosted?
+1, and the "self-hosted" page on their documentation is… empty.

https://docs.retool.com/education/labs/self-hosted

Edit: the right page seems to be https://docs.retool.com/self-hosted but it’s about Retool in general; I doubt you need 8 vCPUs and 16GB of RAM to host forms [1].

[1]: https://docs.retool.com/self-hosted/quickstarts/docker#vm-co...

You can self-host here: https://retool.com/self-hosted. Most people deploy it as a docker container on an EC2 instance but there’s various options