Writing by Peter Hilton

Appsmith review

a builder for dashboards, but not information pages 2024-12-10 #product #review

Web-based information pages, no longer require custom software development. Instead, low-code app builders provide tools for connecting user-interface components to existing data sources. This especially fits for internal tools that don’t need a custom look and feel.

For this review, I started building a project management application using Appsmith’s low-code builder and The Star Wars API.

Example application

I started my example with a ‘projects’ table, which shows the default look and feel.

The ‘Projects’ page – a table of projects

This page also shows what I like most about Appsmith: its data table component. It defaults to client-side search, filter and pagination, and you can configure these to work server side.

Each View project button opens a project details page, showing text (left) and a list (right). The list widget has a fixed size, and built-in pagination.

The ‘Project’ details page – text and a list of project roles

Clicking a list item opens another details page, showing the selected project role:

The ‘Project role’ details page – a properties table

Projects table

To build the projects page, I first added the films API to its queries:

Configuring the API that provides projects data

Next, I configured a table widget’s Table data to use the films API:

Configuring the projects table widget

I like the UI editor’s live data preview, and the Table data data source reference auto-complete.

Configuring the ‘View project’ button widget

For the page navigation, it turned out that you can only configure a Navigate to action on a button widget. Appsmith doesn’t support internal hyperlinks in the text or table widgets!

The View project button’s onClick action uses the API’s url property as a unique project identifier, formatted by a SWAPI helper object that I added to the page’s JS panel. I liked this low-code option to add a few lines of JavaScript to transform the API response, instead of having to change the API to suit Appsmith.

Details pages

The project details page has a layout container for text (left), and a list widget with two text widgets per item (right).

User-interface widgets on the project details page

I found the list widget over-engineered. Each list item gives you a layout container, but you can’t render a plain HTML list.

The role details page also uses absolutely-positioned text labels, in the absence of a properties table widget.

Text widgets on the project role details page

On both details pages, I didn’t like having to size widgets by eye. They use absolute positions and dimensions, but you can’t edit those numbers to make the adjacent widgets the same width. You also don’t have a page grid that helps you make tidy layouts.

You also can’t reduce the built-in padding between widgets. On the details pages, I couldn’t make the list items and properties use any less vertical space.

URL denial

These screen shots don’t show the biggest horror: Appsmith’s URLs. The pages above have URLs like:

https://app.appsmith.com/app/star-wars-projects/projects-6745N0p7fjKzl5aKXQeZt3mS
https://app.appsmith.com/app/star-wars-projects/project-67456pctiVb3i189YawCLH3s?id=films%2F1%2F
https://app.appsmith.com/app/star-wars-projects/role-6745cpT5yzyHcwhDBMimUNby?id=people%2F1%2F

You cannot remove the UUID, which makes page URLs unique across Appsmith tenants, so you can’t use information page URLs like https://app.appsmith.com/app/star-wars/project/4, with your own identifiers.

Meanwhile, my application doesn’t even work properly. Stateful navigation via UI widgets works, but the browser Back button doesn’t. Apparently, I could use application global state to fix that, but tells me that Appsmith doesn’t want to support this use case.

Appsmith targets dashboard-style single-page applications, where details open in a modal dialogue box, and that don’t use hyperlinks. To build information pages, I’ll have to look elsewhere.

Share on BlueskyShare on XShare on LinkedIn