How to Migrate UI-Based Customizations from ERPNext Testing Site to Frappe Cloud Production Site?

Hello,

I am currently working on an ERPNext project and I have two sites:

  • A local testing site, where I do all my customization work (like creating new Doctypes, changing forms, creating reports, etc.)

  • A production site, hosted on Frappe Cloud, where the company wants all work to be finally deployed.

I want to mention that:

:white_check_mark: I am doing all the customization through the ERPNext UI (not by writing code or using Git).
:x: I do not have direct access to the Frappe Cloud or GitHub repo, only the main admin team has that.

My questions are:

  1. What is the best way to migrate UI-based customizations from my testing site to the Frappe Cloud production site?
  2. Which tools or commands (like export-fixtures, migrate, or others) can help in this?
  3. How can I ensure that customizations do not break when the production site is updated?
  4. Since my company wants to manage everything through the cloud in the future, what is the ideal way to work today so that future migration is easier?

Please guide me with a detailed and beginner-friendly explanation, keeping in mind that I am customizing mostly from the ERPNext UI.

Create a new frappe app in your development environment and enable developer mode, then,

For form (doctype) customizations, client scripts and server scripts you can click on the action menu […] export customizations and choose your app.

For print formats specify your custom app in the app/module field

For default records in your doctypes (and perhaps reports) add your doctypes as fixtures in hooks.py then export them to be part of your app.

Im not sure what other customizations you could have done but these should cover most stuff feasible through UI

For permissions created through Role Permission Manager Im not really sure how to export them but you can add a post install/migrate script which assigns permissions to roles.

Once everything is in your app, push it to github then install it on your frappe cloud bench and site

Regarding the other part of the question, a custom app gives you more control and flexibility.