Power Apps  

Building a Reusable Functional Component in Power Apps

Introduction

Repeating the same formula across multiple screens, controls, or components in Power Apps can quickly render an application unmanageable. Duplicating logic in multiple places increases maintenance effort and the risk of inconsistencies, whether the logic is used to calculate duration, validate data, format values, or retrieve user details. Updating the same formula everywhere becomes time-consuming and prone to error when business rules shift.

Even a small modification can require edits across several screens, making the app harder to scale and optimise.

A neat and professional solution to this is to create a reusable function component. You can make future updates simpler and more effective by consolidating commonly used logic in a single location, ensuring consistency, reducing redundancy, and improving readability.

Traditional Approach (Repetitive Code)

Screen1

 CountIf(
    AddColumns(
        Sequence(
            DateDiff(StartDate.SelectedDate, EndDate.SelectedDate) + 1
        ),
        "WorkDate",
        DateAdd(StartDate.SelectedDate, Value - 1)
    ),
    Weekday(WorkDate, StartOfWeek.Monday) <= 5
 )

Screen2

 CountIf(
    AddColumns(
        Sequence(
            DateDiff(StartDate.SelectedDate, EndDate.SelectedDate) + 1
        ),
        "WorkDate",
        DateAdd(StartDate.SelectedDate, Value - 1)
    ),
    Weekday(WorkDate, StartOfWeek.Monday) <= 5
 )

Screen3

 CountIf(
    AddColumns(
        Sequence(
            DateDiff(StartDate.SelectedDate, EndDate.SelectedDate) + 1
        ),
        "WorkDate",
        DateAdd(StartDate.SelectedDate, Value - 1)
    ),
    Weekday(WorkDate, StartOfWeek.Monday) <= 5
 )

This approach works well initially, but as the application expands and more screens or controls are added, the repeated logic becomes longer and harder to maintain.

Optimised Approach (Scalable Solution)

Comp

Click New Parametter after choosing Property Type, Function, and Property definition Output.

Screenshot 2026-02-24 130626

In my situation, I require two parameters: the StartDate and the EndDate.

Screenshot 2026-02-24 130702Screenshot 2026-02-24 130831

After selecting "Create," the output property was successfully created.

Screenshot 2026-02-24 135541

Component.DateDiff: write this code

CountIf(
    AddColumns(
        Sequence(
            DateDiff(
                StartDate,//Start Date from Param 
                EndDate// End Date from Param
            ) + 1
        ),
        WorkDate,
        DateAdd(
            StartDate,
            Value - 1
        )
    ),
    Weekday(
        WorkDate,
        StartOfWeek.Monday
    ) <= 5
)

This code is now being updated. After that, the component must be screened and imported.


Screen1

Component1_1.DateDiff(StartDate.SelectedDate, EndDate.SelectedDate)


Screen2

Component1_1.DateDiff(StartDate.SelectedDate, EndDate.SelectedDate)

Screen3

Component1_1.DateDiff(StartDate.SelectedDate, EndDate.SelectedDate)

By reducing the code, you can verify that the optimised version does not have a single line of code, while the conventional approach has more lines

Screenshot 2026-02-24 140046

Conclusion

Your Power Apps solution stays clean, consistent, and scalable by centralising repeated logic into a reusable function component.

You manage it in a single location and can repurpose it whenever necessary, as opposed to maintaining the same formula across multiple screens. Duplication is reduced, updates are made easier, the application is easier to update as requirements change, and its readability is improved. Reusable components ultimately result in improved performance, a simpler architecture, and a more polished app design.