Technology
Software Development
July 27, 2024
This is a living document - I'll update it over time as I get new thoughts. It's permanently a draft.
Low-code/no-code app builders are an attractive proposition for many companies. They promise to allow non-technical users to build applications without needing to write (much) code. This is can be a huge time and money saver: you don't need expensive developers, less technical people can contribute to the application, and you don't have to manage infrastructure.
Some of the most popular ones are Retool, Bubble, Framer and FlutterFlow. Palantir has Slate and Workshop as their main low-code and no-code offerings.
At Stitch, we started off by working on a low-code app builder. We eventually pivoted away from this idea, but while working on it found quite literally HUNDREDS of these app builders. A couple of these are open source. There are even libraries for building your own app builder!
No-code app builders give less flexibility than low-code since you often cannot write any code. If you end up needing a very custom feature, you have to request for developers to add it to your no-code app builder. Some users may tinker away with whatever is provided to them and find hacky ways to achieve what they want.
Slate provides a "code sandbox" widget which lets you write custom HTML and JavaScript. Framer lets you write React components and convert them into widgets. These act a sort of escape hatch for when you need to do something more custom, but you'll find that they will still have some limitation over just owning the entire codebase yourself. For example, restrictions on libraries you can use, or how you can interact with the rest of the app. A classic example with Slate is that the "code sandbox" is rendered within an iframe, meaning things like custom dialogs/modals are difficult to implement.
A less talked about aspect of there app builders is the skills/learning and the different user groups they cater to. For example, a no-code app builder might be great for a business analyst who wants to automate some of their work, but a developer might find it too restrictive. A low-code app builder might be great for a developer who wants to quickly prototype something, but a business analyst might find it too complex.
Learning the app builder itself can be a significant investment. You might find that you're spending more time learning how to use the app builder than you would have spent just writing the code yourself. This is especially true if you're trying to do something that the app builder wasn't designed for. I have seen some amazing "Slate developers" come about - people who are really good at using Slate to build apps. They know all the ins and outs of the app builder and can build things very quickly. But if you ask them to build the same thing in React, they would struggle.
I think the biggest benefits that these app builders give are the built-in integrations with other services such as databases, auth, versioning and hosting. These are things that you would have to set up yourself if you were building an app from scratch and require you to build up more knowledge than just coding in HTML/CSS/JS. That being said, with Firebase, Vercel and Netlify, these things are becoming easier to set up and manage.
If an organisation decides to go all in on a no-code/low-code app builder, they will find that they are locked in. It's difficult to move away from these app builders once you've built a lot of things on them. You're stuck with their pricing, their features, their bugs, their roadmap. You're also stuck with their limitations. Personally this is why I would never build a product on a no-code/low-code app builder. I would use them for prototyping, but I would always build the final product myself. We came to a similar conclusion at Stitch.
Organisations will also struggle to find developers who are willing to work on these app builders. Developers want to work with the latest and greatest technologies, and no-code/low-code app builders are rarely that. They are also seen as a step back in terms of career progression. If you're working on a no-code/low-code app builder, you're not learning the latest technologies and the technical skills you're building are not as transferable to other jobs.
Unfortunately, an app builder that would try to provide a way to off-ramp from the app builder (i.e. by exporting it as a React app) and provide ways to up-skill the users to become full-fledged developers would just be losing their own users. The users would just export their app and never come back to the app builder.
I think a really interesting idea for an app builder is one that somehow lets you go back and forth between the app builder and the code. This way developers can work on the application by writing custom code, and less-technical users (i.e. designers) can work on the application by using the app builder. This is a really hard problem to solve, but I think it would be a game changer. Maybe AI can help here.
Maintenance is a massive problem. Collaboration is painful. Version control is non-existent. Testing is difficult. Debugging is difficult. These are all things that are solved problems in the world of software development, but are still very much problems in the world of no-code/low-code app builders.