Customizing SharePoint

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 Online infrastructure, Microsoft does not allow the deployment of custom code to its environment. As a result, the concept of customizing SharePoint Online as opposed to deploying custom code is no longer a relevant paradigm. However, it's still helpful to think of ways that SharePoint Online 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 Online environment using modern tools and techniques.

Branding

Modern SharePoint Online 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 Online 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 Online 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 legacy 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.

Page content

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.

Workflows

Microsoft recommends using Microsoft Flow for configuring and executing all workflows in your Office 365 environment, including SharePoint Online. For example, it's possible to create unique approval workflows for content stored in SharePoint. Additionally, it's possible to use Flow 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 Flow.

Forms

PowerApps can be used to create custom forms for use in modern SharePoint sites. There are several ways in which these PowerApps forms can be used in your SharePoint site:

You can embed a PowerApp form in a modern page using the PowerApps web part.

Forms that were previously created using InfoPath and hosted in SharePoint using InfoPath Forms Services should be converted to PowerApps forms, as Microsoft has announced the deprecation of InfoPath.

Microsoft Forms can also be used for easily creating light-weight forms. Like PowerApps, it's possible to embed a Microsoft Form in a page using the Microsoft Forms web part.

Customizing 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 Office 365 CLI, the Microsoft Graph API, the SharePoint Framework and more.

The SharePoint Framework (SPFx) can be used 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 Online sites using the SharePoint App Catalog.

Using third-party add-ins and solutions

Not only can you deploy custom apps (also known as add-ins) to your environment, but you can also purchase add-ins from the SharePoint Store. You can make these add-ins available to all users across the sites in your organization by acquiring licenses for all users in your organization. Or, you can acquire licenses for only those who need to use it, and assign those licenses to the designated users. For more information, see Buy an app from the SharePoint Store and Manage app licenses for a SharePoint Online environment.

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 Online, browse Office 365 apps on Microsoft AppSource. There are also many open-source solutions developed by the collective SharePoint Online community, including Microsoft, MVPs, Partners, and Customers on the Office 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:

Legacy Modern
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 Flow
Customize a SharePoint form using InfoPath Customize a SharePoint form using a PowerApp
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