Frappe app

Advanced Listview

Replaces Frappe's list view with one you can configure, rendered in place at /app/<doctype>. A list you've switched it on for looks and behaves differently; every other list on the site is untouched.

Why it exists

So the things people used to ask a developer for — coloured status pills, per-row buttons, KPI cards, child-table chips, tabbed presets — are settings rather than a bespoke HTML block. Someone who knows the business builds the view. A developer is only needed when a Server Script has to supply data or perform an action.

What you get

A real tableSticky header, columns you can resize, reorder, freeze and hide, widths in pixels or percent, three densities.
Columns that hold more than a fieldOne column can carry a badge, two buttons and a second line of text, each with its own rules.
Colour that means somethingConditional colour rules per element, automatic colour per value, row edge accents, progress bars.
Editing in placeOpt in per element: double-click, or a real input sitting in the row. Permissions, docstatus and allow_on_submit are all respected.
Grouping with totalsCollapsible groups whose counts and sums are computed over the whole filtered set, not just the page on screen.
Tabs, filters and cardsNamed presets with count badges, a filter bar, and KPI cards fed by a count, a sum, or a Server Script.
An expanded rowClick a row to open a panel of blocks: field sections, child tables, comments, records from another DocType.
Per-device layoutsAny mobile setting overrides its desktop counterpart — width, alignment, label, or hidden entirely.

Safe to try

Installs disabled

Nothing changes until a System Manager opts a specific DocType in. Anything not listed keeps Frappe's stock list.

One switch to undo it

Unticking the master switch restores stock behaviour everywhere, immediately. That's the intended escape hatch.

Extends, doesn't replace

The sidebar, pagination, the count, realtime updates, bulk operations, the Filter dialog and every listview_settings customisation keep working. Only the rendering and column layer are taken over.

Permissions

Every read goes through Frappe's own query layer, never raw SQL, so row-level permissions still apply — including Advanced Permission scopes. Inline edits go through the normal write path.

A button re-checks its roles and its row condition on the server against the freshly loaded document, because a client that hides a button is a client that can be told not to.

Two things the app cannot vouch for, and says so in the builder: a Server Script data source returns its own rows, so the script decides what a reader can see; and a Server Script action does whatever it was written to do.

Full documentation is public

Building a view, columns and elements, filters and drill-down, tabs, the expanded row, buttons and actions, grouping and theme, plus limits and troubleshooting.