Frappe Technologies
Screenshot 2023-10-25 at 10.48.41 PM.png
Product Updates for July 2025
Engineering at a Democratic Workplace!
author

By

Jannat Patel

·

1 August 2025

·

13

min read

Being an Engineer at a Democratic Workplace means that you decide what you want to work on, you decide your work timing, nobody forces you to work a certain way if you're not okay with it, and nobody hounds you five time a day asking how much progress you have made today.

And what comes out of it? You put your best foot forward each day, you don't restrict yourself as "just an Engineer" and willingly do more. You feel fulfilled and content with your work because you know your product is truly yours.

If this sounds like something you would want to implement in your workplace, you should seriously consider attending our Democracy at Workplace Conference.



Table of Contents

  1. Framework
  2. ERPNext
  3. Frappe HR
  4. Learning
  5. Helpdesk
  6. CRM
  7. Builder
  8. Studio
  9. Drive

Framework is now leaner

We all know how our framework is batteries included, but it also had some appliances included. In this iteration of the cleanup, we have separated four apps from the framework.

  1. Energy Points System
  2. Blog
  3. Newsletter
  4. Offsite Backups
Soham Kulkarni Engineer

We now have a generic full text search framework based on SQLite FTS5 with the following features:

  • DocType driven document indexing with configurable fields
  • Filtering API based on arbitrary metadata fields
  • Permission aware filtering
  • User defined filtering (for e.g., by author, project, etc)
  • Spelling correction using trigram indexing
  • Advanced scoring with recency boosting and title boosting
  • Ability to your own custom scoring functions

Documentation: https://docs.frappe.io/framework/sqlite-search

Gameplan search is powered by this.

Faris Ansari Principal Product Engineer

Faster Receivable / Payable

Accounts Receivable / Payable can now work as an SQL stored procedure for faster processing. This is available as a configurable option in Accounts Settings. Receivable

Preview in Stock Entry

Stock Entry can now show previews for Accounting and Stock Ledger. Contributed by: Prateek KaramChandani

Preview

Australian COA and Tax Templates

ERPNext now has Chart of Accounts and Tax Templates for Australia. Contributed by: Jeba Jebas

Australian Chart Template

Enhanced Cash Flow Report

A new toggle option now adds opening and closing balance rows in the Cash Flow report. Contributed by: Logesh Periyasamy

Cash

Bug Fixes

  • Fixed a bug in Process Deferred Accounting (PDA), where cancelling a PDA marked all GL entries of invoices processed by PDA as cancelled. Contributed by: Lakshit Jain
  • The trial balance and general ledger had a mismatch if foreign currency expense accounts were used. This has been fixed. Contributed by: Venkatesh
  • If a payment entry created through a payment request is unreconciled from an invoice, the outstanding amount field in the request will be updated. Contributed by: Lakshit Jain
Ruthra Kumar Engineer

Prevent self-approval for Expense Claims

All users with an expense approver role could approve expense claims, including their own, which is sometimes not ideal. Approving your applications was fixed for leave applications, now it’s done for expense claims too. Just check Prevent Self-Approval for expense claims in HR settings, and you’re good to go.

HR

Better Half Day Status in the monthly attendance sheet

You probably know from last month’s blog that half days show separate statuses for both halves; now the monthly attendance report shows them as such, too.

Monthly

Minor improvements and bug fixes

  • You can now see the existing shift assignments while manually adjusting Create Shifts After #3347 Exit

  • Leave approver is only set if the field is empty, which would lead to showing different leave approvers in PWA and desk #3313

  • Attendance Calendar events are updated in real-time, so you don't need to restart the app to see the updated attendance status #3395

  • And some other minor things fixed with compensatory requests and salary slips in PWA

Asmita Hase Engineer

Exclude Salary Component Amount From Payroll Accounting Entries

A new checkbox, Do Not Include In Accounting Entries, has been added to the Salary Component. This enables users to exclude specific salary component amounts(such as ESIC) from being posted in the accrual and bank Journal Entry during payroll processing. #3315

Component

Refactor Half Day Payment Calculation in Payroll Process

Previously, the Half Day was considered for Payment days in the salary slip when the option Consider Unmarked Attendance As was set to Absent in the Payroll Settings. Now the Half Day payment is not dependent on this, and if the Employee’s Half Day attendance is added, then it should be directly considered in the salary slip #3330

Other Fixes

  • Allow users to set custom naming series for Salary Slip #3338
  • Fixed the allocated amount of advances in the expense claim to adjust to the sum of the expense amounts #3317
  • Show Company Currency in all amount rows in Employee Advance Summary report & make company filter mandatory #3417
  • Show rejected expense claim Claimed Amount in the rejected section of the Expense Claim Summary(PWA)
  • In the Expense claim summary, the total claimed amount is now shown in the Rejected section if the claim is rejected (Previously, 0 was shown as the total sanction amount was shown there)
  • In case if the sanction amount is less than the claimed amount, then the remaining balance is also added to the rejected section
  • The title Total Expense Amount is changed to Total Claimed Amount, and in that the total of all the claimed amount is shown

Aysha Hakeem Engineer

Raheel Khan Engineer

Milestone Reached

Frappe HR was trending on GitHub by the end of this month, and we crossed 5k stars. Thank you for all the love 🥳

Course Progress Summary

As an instructor, knowing how much progress students have made in the course helps you understand how close they are to completing it, and also lets you know if your students are struggling.

The desk had a report that showed these numbers. Now you can access this information from the frontend too. You can see the Course Progress Summary report from the Course Details page. Here you will see progress made by individual students who are enrolled in this course, and also the average progress.

progress

Video Watch Time

Most of the content these days is in the form of videos, and making videos is not easy. Knowing how much time your students are spending on the video, and knowing if they are watching the full video, or leaving halfway, or maybe even before, gives feedback to creators on their content.

Learning will now show you how much time your students are spending on the videos of the lessons. Each lesson with videos will have a statistics button on top, which will open up the report for you. This report will tell you the average watch time. You can also check the watch time of each student. This works for videos you uploaded directly to the lesson or embedded from YouTube or Vimeo.

watch

Negative Marking in Quizzes

Most competitive exams have negative marking. Instructors can now enable Negative Marking on quizzes in their learning system. They can also configure how many marks they want to deduct for each wrong answer.

Negative

Course Card Gradient

Selecting the right image for a course can be hard. Additionally, ensuring that the image you select works well with both light and dark modes is even more challenging.

To solve this problem, we are introducing card gradients. You can now choose a color to represent the course instead of an image. This color would go well with both light and dark modes.

card

Manage badges from the Frontend

Badges help acknowledge the milestones of students. It helps keep them motivated in the long run. Previously, there was no way to manage badges from the frontend. Instructors had to visit the desk to manage them.

badge

Now you can create, edit, and assign badges right from the learning system. Just go to settings and check the badge list. Here you can create a new badge, edit an existing badge, or check who the badge has been assigned to.

Assign

Reorder Chapters

You can now reorder chapters in the course outline. Just drag and drop the chapters in the list, and their position gets updated. Contributed by Joedeep Singh

Milestone Achieved

Learning crossed 2k stars on Github this month 🚀

Jannat Patel Product Engineer

Email feedback

We’ve been actively enhancing the Helpdesk to make it more email-friendly. Last month, we introduced email threading to streamline conversations and improve context.

Now, we’re taking it a step further by adding email-based feedback for tickets created via email. With this new feature, your team can effortlessly collect feedback on support performance through a simple web form, making it easier to track customer satisfaction and improve service quality.

You can read more about it from here

rate

Field Dependency

We’re working on making the ticket creation experience more flexible and intuitive. Soon, you’ll be able to customize the ticket form directly from the UI.

Choose which fields to show or hide, set fields as mandatory, and even filter field options based on other fields. All without writing a single line of code.

This feature will be available from next month.

field

Ritvik Sardana Engineer

User Invitation Flow

We're building a smoother way to bring people to your team!

With the new invitation flow, you'll soon be able to easily invite Agents, Managers, or Admins to your system: just invite them, once they accept your invitation, they are in!

All of the utilities needed for this feature were added to the framework. So now other apps can also easily implement the same. Check the Pull Request in framework for more details.

This feature is currently being worked upon and will be available from next month.

invite

Elton Lobo Engineer

Service Level Agreement and Business Holidays

Managing Service Level Agreement and Business Holidays is going to be a lot simpler. You’ll soon be able to handle both directly from the frontend, and no longer have to switch to Desk for this. This feature will be available in august.

Some highlights:

  • Assignment Conditions in SLA will now be added through UI instead of manually writing python expression
  • Adding and removing recurring holidays in Business Holidays list is now simpler and it will be done with just a few clicks
  • A calendar view is added in Business Holidays to easily manage holidays and recurring holidays

sla

holiday

Pratik Badhe Engineer

Customizable Dashboard & Supporting Features

We’ve introduced a new Dashboard in Frappe CRM to provide you with a quick, visual overview of your sales performance, powered by real-time data and featuring fully customizable layouts.

Dashboard

The new dashboard includes built-in charts for core CRM metrics:

  • Active Deals by Stage: View how your deals are distributed across stages.

  • Won Deals over Time: Track deal closures across time periods.

  • Forecasted Revenue: See projected revenue based on deal data.

  • Conversion Rates: Monitor how leads are converting to deals.

    and more…

Filters are available for time range and sales user, so you can easily drill down into the data that matters to you. — Only managers can see this dashboard.

dash

Editable Layout

You can now customize the dashboard layout with:

  • Add / Remove Charts: Only keep what’s relevant to you.

  • Drag-and-Drop Rearrangement: Move charts around to create your layout.

  • Reusable Grid Component: The layout engine is now part of frappe-ui, allowing other apps to reuse it.

dashboard

Supporting Features

To support these visualizations, we introduced a few new features in CRM:

Forecasting

We now compute forecasted revenue using:

  • Expected Deal Value

  • Probability

  • Expected Closure Date

This enables a more accurate and forward-looking revenue view in the dashboard.

forecast

Lost Deal Reasons

When marking a deal as lost, users can now:

  • Select from structured loss reasons (e.g., "Price too high", "Not interested")

  • Add a custom reason under "Other"

This structured data helps identify common blockers in the sales process.

lost

lost

Custom Deal Status Types

Every deal status can now be tagged with a type:

  • Open

  • Ongoing

  • Won

  • Lost

  • On Hold

These types help classify deals meaningfully and power cleaner charts and reports.

Shariq Ansari Product Engineer

Color Variables 🎨

Color variables are important to maintain the consistency of colors throughout the site. Users can now define reusable color variables, and this gets listed as an option while setting any color for the block.
#379

In Action:

State Styles

Builder previously supported setting styles for states like hover, active, and focus via Raw Styles, but the process was manual, and it did not feel first-class.

Before Now
raw bg

One more thing improved after this is that all the state styles can have different values for different breakpoints, which was not possible with Raw Styles.
#377

In action:

Inherited style indicator

Previously, when users attempted to remove a property value that was cascaded from a different breakpoint, the value would remain visible. This led to confusion, as users expected the property to be removed, but it was inherited from elsewhere.

To avoid this confusion, we now indicate the inherited values using a placeholder instead of displaying them as an actual value. This visually differentiates inherited styles from explicitly defined ones, making it clear to users that the value is not directly set at the current breakpoint.
#377

Before Now

Setting dynamic value (a better way)

This again is one of those features that Builder supported but didn’t feel first-class while using them. We had to set the Data Key to map Dynamic Data, and it also had a limitation that only one key could be mapped to one block.

Before: via Data Key Now: Directly from property control
data data

More than one mapping is possible now ⚡️ link

Almost any property/attribute can be made dynamic now!

In Action:

To make binding easier, the key selector popup does the following:

  • It lists only keys of an object with primitive values (and not lists and objects).

  • Flattens the nested object, e.g., userInfo = {name: 'suraj', designation: 'Developer'} will be listed as userInfo.name and userInfo.designation

  • De-structures object keys that are passed down via the Repeater's Collection.

Note: Collections are lists of records (e.g., user information lists).

A Repeater is a component that iterates through a collection, passing individual records to its contained block, creating multiple instances with different data. #378

Suraj Shetty Product Engineer

App-Specific Builds

Previously, the Studio editor and every app created from Studio used to share the same build. The editor has all frappe-ui components globally registered for use, since users can drop any component on the canvas. So, even if your app used 4-5 components, all components were registered in the build. Studio now creates app-specific, performant builds.

Now there are 2 actions on the toolbar - Preview & Publish

Preview

  • The build step is skipped for faster previews

  • Renders on /dev like /dev/app_route/page_route

  • Renders components from your draft_blocks (unpublished). So that you can preview stuff without publishing it on a publicly available link.

Publish

  • Uses the app-specific optimized renderer. Only components used in your app are registered in the build.

  • Renders on /app_route/page_route

  • Renders components from your blocks (published) and makes your app publicly accessible.

Check out the Pull Request if you are interested in what happens behind the scenes.

Export Apps

To all the users who were confused about why Studio Apps still sit in the DB, we are slowly moving towards complete integration with the framework. Just like DocType JSON is exported to the Frappe app; you can now export Studio frontends to existing Frappe apps in developer mode. Studio then syncs apps from all frappe app folders to the site on migration.

App is exported to frappe_app_name/studio. This is the folder structure:

export

Eg: point_of_sale -> erpnext/studio/point_of_sale

sale

Here is the very first app exported from Studio for reference. Check the Pull Request for more details.

Rucha Mahabal Engineering Lead

A new Writer was published this month! We fixed a lot of bugs in it, particularly in the floating comments. A couple of quality of life enhancements too - implicit rename, exporting media, and toggling comments.

Drive received its enhancements too - in particular, smart sort. In some cases, natural sorting isn’t what you want - for example, “File 10” comes before “File 2”, while as humans we’d expect the opposite. Another use case is files with month/day names in them.

Now, you can toggle an option to have smart sorting in your views.

A long-time ask within the company: that Drive’s internal folder structure should “mimic” what you see in the UI. Right now, files are stored flatly, which is fine if you’re only accessing the files through Drive. But customers often use the file system for other purposes.

Now, new sites by default will store files as you see them in the UI. If you want to store flatly, you can go over to Drive Disk Settings and check the option. This is still in beta, so use with care.

Finally, we closed almost 30 issues, making your overall experience more pleasant. As always, give feedback or ask for features in our Telegram channel!

Safwan Samsudeen Trainee Engineer

And that's it 👋

We are only a month away from Frappeverse 2025. If you haven't already, register now.

Also, Frappe School is conducting a Frappe Framework Bootcamp right before the conference. This will be in person, at our office in Mumbai. Do register quickly if you are interested, we have limited seats.

September is going to be all about the community. See you next month (literally)!

Published by

Jannat Patel

on

1 August 2025
0

Share

Add your comment

Success!

Error

Comments

No comments, yet.

Discussion

image7f7d4e.png

Paul Mugambi

·

3 days

ago

Beautiful read, and an insight into an individual I respect and have learned a lot from. Am inspired to trust the process and never give up.

image4c43d6.png

Anna Dane

·

5 days

ago

I must say this is a really amazing post, and for some of my friends who provide Best British Assignment Help, I must recommend this post to them.

Add your comment

Comment