How to Remove the "Add" or "Create" Button from a Doctype List View in Frappe

In my case, i want to prevent users from creating new records directly from a Doctype’s list view, but i will create it indirectly from another doctype.

In Frappe, this can be done by disabling the “Add” or “Create” button using a simple client-side script.

image


Step 1: Create the List View JS File

To customize the List View, Frappe looks for a JavaScript file named {doctype}_list.js in the Doctype’s folder.

Example File Path:

apps/your_app/your_app/doctype/your_doctype/your_doctype_list.js

If this file doesn’t exist yet, create it.


Step 2: Add the List View Configuration

Inside the your_doctype_list.js file, add the following code:

frappe.listview_settings['Your Doctype'] = {
    onload(listview) {
        listview.can_create = false;
    }
}
  • Replace 'Your Doctype' with the actual name of your Doctype (case-sensitive).
  • This configuration runs when the list view loads and sets can_create to false, which removes the “Add” button from the UI.
  • After saving the file and reloading the page (or running bench build && bench restart), users will no longer see the “Add” or “New” button on the list view of that Doctype.

Notes

  • This only affects the UI. It does not restrict users from creating records through other means (e.g., APIs or scripts).
  • If you want to fully restrict creation, you should also update the Doctype’s permissions from Role Permissions Manager or add server-side validations.

For more ways to customize the List View, check out the official documentation:

or you can discover by yourself, just print the listview object:

frappe.listview_settings['Your Doctype'] = {
    onload(listview) {
        console.log(listview)
    }
}

If you know any useful tips or customizations not covered in the official docs, feel free to share them here to help the community

you can just enable this in doctype settings.