PowerLens
All posts
Power AppsJuly 8, 2025· 4 min read

Replace SharePoint Default Forms with Power Apps Custom Forms: A Complete Guide

J

Juan Carlos Santiago

Replace SharePoint Default Forms with Power Apps Custom Forms: A Complete Guide

Why Replace SharePoint Default Forms?

SharePoint's default forms are functional but limited. They lack customization flexibility, offer poor mobile experiences, and provide minimal control over user workflows. Power Apps custom forms, by contrast, give you complete control over the user interface, business logic, and data validation.

The benefits are substantial:

  • Superior UX: Conditional visibility, dynamic layouts, and intuitive workflows
  • Mobile-First Design: Responsive forms that work seamlessly on any device
  • Advanced Validation: Custom business rules beyond basic required fields
  • Branding Consistency: Match your organization's design system
  • Better Performance: Optimized data retrieval and submission

Step-by-Step: Creating and Deploying Your Custom Form

Step 1: Set Up Your Power App

Start by creating a new canvas app in Power Apps Studio. Connect to your SharePoint list as a data source:

1. Power Apps → Create → Canvas app → Tablet layout
2. Insert → Data → Select your SharePoint list
3. Set app name and save

Step 2: Build Your Form Controls

Instead of using the default form control, build individual controls for better customization:

TextInput_Title.Value = ThisItem.Title
Dropdown_Status.Items = ["New", "In Progress", "Completed"]
DatePicker_DueDate.Value = ThisItem.DueDate

Step 3: Configure Submit and Edit Functions

Create two forms: one for creation and one for editing. Use conditional logic:

// On Create Mode
Button_Submit.OnSelect = Patch(SharePointList, Defaults(SharePointList), {
  Title: TextInput_Title.Value,
  Description: TextInput_Description.Value,
  DueDate: DatePicker_DueDate.Value,
  Status: Dropdown_Status.Value
});

// On Edit Mode
Button_Submit.OnSelect = Patch(SharePointList, ThisItem, {
  Title: TextInput_Title.Value,
  Description: TextInput_Description.Value,
  DueDate: DatePicker_DueDate.Value,
  Status: Dropdown_Status.Value
});

Handling Attachments: The Critical Piece

Attachments require special handling since Power Apps doesn't natively support SharePoint attachments in Patch operations. Use this workaround:

Solution: Attachment Upload Control

  1. Add the Attachments control from the Power Apps controls library
  2. After form submission, use the HTTP connector to upload files:
ForEach(
  Upload_Attachments.Attachments,
  Patch(
    'Attachments for SharePoint',
    Defaults('Attachments for SharePoint'),
    {
      ItemId: varCreatedItemId,
      Attachment: ThisRecord
    }
  )
)

Alternatively, store attachments in OneDrive and link them via a URL column in SharePoint.

Managing Lookup Columns

Lookup columns require dropdown controls populated from related lists:

Dropdown_Department.Items = Sort(
  SharePoint_Departments,
  DepartmentName,
  SortOrder.Ascending
);

Dropdown_Department.Value = If(
  IsBlank(ThisItem.Department),
  First(SharePoint_Departments),
  LookUp(SharePoint_Departments, ID = ThisItem.Department.Value)
);

Pro tip: Use ComboBox for large datasets to enable searching and filtering:

ComboBox_Department.SearchItems = Filter(
  SharePoint_Departments,
  StartsWith(DepartmentName, ComboBox_Department.SearchText)
)

People Pickers: A Common Challenge

Power Apps Office UI Fabric PeoplePicker control simplifies this:

PeoplePicker_Manager.OnChange = Set(
  varSelectedPerson,
  PeoplePicker_Manager.SelectedItems
);

Button_Submit.OnSelect = Patch(
  SharePointList,
  ThisItem,
  {
    Manager: varSelectedPerson.UserPrincipalName
  }
);

Ensure your SharePoint column is configured as "Person or Group" type for proper integration.

Common Gotchas and Solutions

Gotcha 1: Form Doesn't Save

Solution: Check data type mismatches. Use Text() and Value() functions for conversions:

Value(TextInput_Number.Value)  // String to number
Text(DatePicker.Value, "yyyy-mm-dd")  // Date formatting

Gotcha 2: Lookup Filters Not Working

Solution: Verify the lookup column ID matches exactly:

// Wrong:
Filter(List, Department = TextInput.Value)

// Correct:
Filter(List, Department.Value = TextInput.Value)

Gotcha 3: Performance Degradation

Solution: Use delegable functions and limit data retrieval:

ComboBox_Items.Items = Search(
  SharePointList,
  ComboBox_Items.SearchText,
  "Title"
) // Delegable and efficient

Gotcha 4: Authentication Issues

Solution: Ensure the app user has appropriate SharePoint permissions, and test with different user roles.

Pro Tip

Always create a "Form Validation" component that consolidates error checking. This keeps your code DRY and makes maintenance easier:

UpdateContext({
  varFormValid: And(
    Not(IsBlank(TextInput_Title.Value)),
    Not(IsBlank(Dropdown_Status.Value)),
    IsDate(DatePicker_DueDate.Value)
  )
});

Button_Submit.DisplayMode = If(varFormValid, DisplayMode.Edit, DisplayMode.Disabled);

Replace SharePoint forms with Power Apps to unlock a professional, flexible data collection experience that scales with your organization's needs.

#power-apps#sharepoint#custom-forms#canvas-apps#power-platform