In earlier versions of SharePoint, it was possible to make changes to a SharePoint environment by deploying custom code that would run in the physical SharePoint server environment. Changes made to SharePoint that didn't require the deployment of custom code were referred to as "customizations", because the changes were not fundamentally changing the product's functioning but were rather configuring the existing product in a unique way. Examples of customizing SharePoint Server have included deploying custom branding elements such as master pages and style sheets to a site collection; deploying pre-configured web parts to a web part gallery; creating custom workflows in SharePoint Designer; changing the look and feel of list forms using InfoPath; and more. Because of the shared nature of the SharePoint infrastructure, Microsoft does not allow the deployment of custom code to its environment. As a result, the concept of customizing SharePoint as opposed to deploying custom code is no longer a relevant paradigm. However, it's still helpful to think of ways that SharePoint can be customized, or configured uniquely, in a broader sense of the word.
The purpose of this document is to help you understand how you can customize your SharePoint environment using modern tools and techniques.
Modern SharePoint sites allow you to change the look of the site by modifying elements such as the site logo and the colors used throughout the site. Branding your SharePoint site can help you match a site to a brand as well as help users differentiate between multiple SharePoint sites. While several themes options are available by default, it's also possible to specify unique theme colors by supplying SharePoint with a custom configuration file. Older, "classic" SharePoint sites allow administrators to apply custom branding and page layouts to a SharePoint site by applying a custom master page, applying a custom theme to a site, deploying custom page layouts, and more. Because classic sites are not as fast and mobile-friendly as modern sites, Microsoft recommends using modern sites going forward.
Navigation helps users find the information they need quickly by providing links to pertinent information in a persistent manner. Planning your navigational strategy in modern sites is a critical element in the usability of your SharePoint environment. Modern SharePoint sites provide a streamlined model for adding navigational elements using the browser. The position of the navigation is determined by the kind of site being viewed, the size of a user's screen, and whether the megamenu option has been enabled for the site. Additionally, modern sites can take advantage of hub site navigation.
Note that earlier versions of SharePoint allowed navigational elements to be dynamically generated using the structured navigation and managed metadata navigation providers. These options are no longer available in modern sites. However, if you are using a classic site with modern pages, you can still use these providers and the modern pages will reflect the correct navigational links. In terms of layout, because modern sites do not allow you to customize the site's master page or style sheet, it's not possible to move the position of the navigation elements on the page as could be done in classic SharePoint sites.
Nearly every version of SharePoint has had a way of creating custom layouts for web pages, whether that was by selecting a web part page, a wiki page layout, or a publishing page layout. Modern sites also provide a similar functionality. However, rather than providing a static layout that provides a set number of editable regions on the page, modern pages provide the ability for page editors to "stack" column layouts on a row-by-row basis. Page editors can also choose various options related to how the title region of the page is displayed. Finally, the most fundamentally way to customize a modern page is to place custom content on the page. This can be done by adding modern web parts to the page. Note that web parts used in classic web sites will not work in modern sites. However, it is possible to create and deploy custom ("client-side") web parts that were created using the SharePoint Framework.
We recommend using Power Automate for configuring and executing all workflows in your Microsoft 365 environment, including SharePoint. For example, it's possible to create unique approval workflows for content stored in SharePoint. Additionally, it's possible to use Power Automate as the default workflow engine for approving SharePoint page content, directly from the SharePoint user interface. Flows can be triggered by SharePoint actions (such as when an item is created in a list), or perform actions within SharePoint (such as update a list item). While SharePoint Designer workflows are still supported, new workflows should be created using Power Automate.
Power Apps can be used to create custom forms for use in modern SharePoint sites. There are several ways in which these Power Apps forms can be used in your SharePoint site:
- As a custom SharePoint list form
- As a custom SharePoint list view
- As a stand-alone app that uses a SharePoint as its data source
You can embed a Power App form in a modern page using the Power Apps web part.
Forms that were previously created using InfoPath and hosted in SharePoint using InfoPath Forms Services should be converted to Power Apps forms, as Microsoft has announced the deprecation of InfoPath.
Customize your SharePoint site programmatically
Legacy versions of SharePoint Server relied on solution packages to deploy content and make configuration changes to SharePoint sites. It's still possible to programmatically provision sites as well as customize team sites, lists and libraries, and site pages. There are various methods for making programmatic changes to your SharePoint environment, including using the Office Developer Patterns and Practices APIs, the Microsoft 365 CLI, the Microsoft Graph API, the SharePoint Framework, and more.
Use the SharePoint Framework (SPFx) to render custom web parts on a modern SharePoint page. Additionally, Extensions to the SPFx provide the ability to add scripts to pages, create modified views of data, and surface new commands in the SharePoint user interface. SPFx application packages can be deployed to SharePoint sites using the SharePoint App Catalog.
Use third-party apps and solutions
Not only can you deploy custom apps to your environment, but you can also get apps from the SharePoint Store. For more information, see Use the App site to make custom business apps available for your SharePoint environment and Add an app to a site.
If you want to change the settings for whether or not site users can acquire apps from the SharePoint Store, see Configure settings for the SharePoint Store.
If you are interested in exploring services or applications from Microsoft partners that are available for SharePoint, browse Microsoft 365 apps on Microsoft AppSource. There are also many open-source solutions developed by the collective SharePoint community, including Microsoft, MVPs, Partners, and Customers on the Microsoft 365 Developer Patterns and Practices GitHub site.
Examples of modern customization approaches
The following table gives an example of older methods for customizing sites along with a current recommended approach:
|Implement branding using custom master pages, page layouts, and themes||Use the "apply a look" option to customize branding elements like logo, header, footer and colors|
|Use custom navigation providers such as structured navigation or managed metadata navigation to dynamically generate navigational elements||Manually specify navigational links|
|Create a wiki page and choose a text layout option to modify the layout of the page||Create a modern page and add section layouts to the page to arrange web parts on the page.|
|Create a workflow using SharePoint Designer||Create a workflow using Power Automate|
|Customize a SharePoint form using InfoPath||Customize a SharePoint form using a Power App|
|Deploy a web part to a site using a sandbox solution||Use the SharePoint App Catalog to deploy a client-side web part to a site|