Frappe Framework v16: Low Code Development Made Easier

Frappe v16: Making low-code development easier than ever

Frappe Framework v16 is here and it’s one of the most awaited updates in the Frappeverse. It is now more secure, faster and most importantly – its now more user friendly.

For the uninitiated, Frappe is a low-code, 100% open-source, Python based framework which allows developers to create high-quality business apps extremely fast. It completely meta-data driven and can be extended as per the requirements. ERPNext – the world’s only 100% open-source ERP is a Frappe Framework app.

Let’s explore the latest features introduced in Frappe Framework v16.

1. Horizontal Scroll in Child Tables + Sticky columns

This feature adds a horizontal scrollbar in child tables, ensuring all columns remain accessible without squeezing or hiding data. It greatly improves readability and editing, especially for documents with many fields. You can also pin (stick) specific columns so they remain visible while scrolling. Compared to earlier versions, this provides a cleaner, more user-friendly experience for data-heavy workflows.

2. Delimiter option in CSV Export

This enhancement lets users choose between comma or dot as the decimal separator while exporting reports. It ensures that downloaded numbers follow local formatting rules, improving accuracy for global teams. Previously, users had to manually adjust values. Now exports are cleaner, universal, and immediately usable in regional tools.

3. Role Replication Page

Role Replication allows System Managers to clone permissions from any role and apply them to a new one with a single click. This eliminates repetitive manual configuration and reduces errors. Earlier versions required rebuilding roles from scratch; now, permission setup is faster, standardized, and far more efficient for administrators.

4. Fixed Headers in User Permission Dialog

With fixed column headers, scrolling through long permission tables becomes easier because labels remain visible. This prevents confusion and speeds up updates, especially when handling complex roles. The headers adapt to light and dark mode, offering clearer visibility compared to older versions where headers disappeared during scrolling.

5. New Hook : extend_doctype_class

This new hook allows developers to inject custom properties or mix-ins into standard DocTypes without overriding core code. It prevents app conflicts and simplifies customization. Earlier approaches required risky overrides; now, multiple apps can extend the same DocType safely, improving maintainability and reducing upgrade issues.

Example:

We want to ensure in our custom Frappe App that Sales Invoice amount never exceeds a credit limit, but another app also adds some custom logic to Sales Invoice. Using extend_doctype_class, both apps can extend the same DocType without conflict.

Sales Invoice now includes our validation plus any logic added by other apps.

6. Multiple Role Profiles per User

Users can now be assigned multiple role profiles, enabling flexible combinations of common and specialized permissions. This prevents the need to duplicate profiles just to achieve mixed access. Previous versions supported only one profile per user, limiting customization. The new model is cleaner and more scalable for diverse teams.  Used the Multiselect option at the place of the link field.

7. Date and Time Arithmetic Support

Frappe now supports expressions like 2024-12-01 +5d or 17:45 -30m, automatically calculating the resulting date or time.Just add or minus the hours, days according to your preference and enter ,time adjusted automatically. This reduces manual calculations and input mistakes. Earlier versions required users to compute values themselves. The new feature improves accuracy and speeds up data entry for scheduling and time-sensitive workflows.

8. Dynamic eval: Filters in Link Fields

With support for eval: expressions, link field options can dynamically update based on other field values—even inside child tables. This reduces custom scripting and ensures smarter form behavior. Previously, dynamic filtering was limited and required JS customization. Now forms adapt naturally, improving user experience and data quality.

9. “Discard” Action for Draft Documents

Instead of deleting drafts, users can now discard them, marking them as inactive while keeping their details for reference. This maintains clean records and helps during audits. Earlier versions forced users to delete drafts, losing context. Discarding offers better document management without removing historical information.

10. Select All / Unselect All in Report Column Picker

The report view now includes quick buttons to select or clear all columns with one click. It also prevents errors when no columns are chosen. Earlier, users had to manually tick every column, which was time-consuming. This upgrade improves efficiency for analysts and enhances report customization.

11. “Copy URL” in File Grid + Image Preview Fixes

The File grid now includes a “Copy URL” button and fixes various preview issues, including those caused by special characters in URLs. This makes file handling more reliable. Previous versions often showed broken previews or required manual copying. The update enhances consistency and user convenience.

12. Permission Change Log

With this permission change logging feature, the administrator can get a clear, traceable history of all permission changes happening across the system. Previously, Frappe did not provide a centralised way to track who modified a user’s roles or updated permissions settings.

The new Permission Log solves this by recording every change related to:

  • User Roles
  • User Permissions

13. Complete User Permission Overview with the New Doctype Permissions Report

Frappe v16 introduces a powerful User Doctype Permissions report that gives a complete summary of a user’s access rights across every DocType — including read, write, create, delete, and other permission levels. It also adds a “View Doctype Permissions” button directly inside the User form, allowing System Managers to open the report instantly for that specific user.

Previously, Frappe offered no built-in way to see all permissions of a user in one place. With this feature, System Managers can now quickly audit and troubleshoot access issues without navigating multiple screens.

14. View Dynamic Related Data with Virtual Child Tables Data Without Storing It

This introduces read-only virtual child tables that generate their data dynamically whenever a form is opened. These tables do not store any information in the database; instead, they calculate and display related data on the fly. This allows users to view summaries, linked records, or computed results directly inside a document without adding actual child table entries. It helps keep documents clean, reduces database load, and improves clarity by presenting useful contextual information inline. Virtual child tables are ideal for reporting, insights, and real-time computed views embedded within forms.

15. Automatic Execution of Tasks on Workflow State Change

This feature enables automatic execution of app-defined tasks, server scripts, or webhooks whenever a document transitions to a new workflow state. It helps automate routine actions such as sending notifications, updating related records, or integrating with external systems. You can choose to run these actions immediately for real-time results or in the background to avoid slowing down user interactions. This provides a flexible, efficient, and reliable way to enforce business rules and streamline workflow-driven processes.

16. Control Visibility of Disabled Records in Tree Views, Tree Views Now Support Hiding Disabled Entries

To give users better control over how data is displayed in tree structures.By default, disabled records remain hidden so the tree stays clean and focused.
If needed, users can enable the Include Disabled option to display inactive items—helpful for auditing, cleanup, or reference, visibility, data management.
This improves clarity, as users no longer need to guess whether disabled items exist; they can toggle visibility whenever required.

Conclusion

With v16, Frappe has now become more user-friendly as well as developer-friendly. The no-code capabilities of the Framework take away 90% of your labour of building controls, layouts, routes, grids, reports and so on. This means that you can build reliable, user-friendly and secure business apps in no time!

Looking for a low-code/no-code development team? CitrusLeaf is a Frappe partner with certified developers on board to build your next business app on Frappe. Reach out today on sales@citrusleaf.in