SharePoint Customizations
Capabilities Guide

SharePoint Online and its customizations capabilities are continuously evolving and it’s hard to keep track which capabilities you should steer away from and which you can safely use in your solutions.

Rencore’s Customization Guide

The following guide is meant to bring clarity to customizing SharePoint and help you choose technologies that you can safely rely on for the foreseeable future. The intent is to provide our best recommendations regarding current and upcoming customizing practices and to provide some additional insight in our recommendations.

Disclaimer:

This page is based on our experience in customizing SharePoint and we provide no guarantee to its completeness or accuracy.

Last Update: July 12th, 2017

Customization capabilityStatusComments
JS LinkCautionWhile not upgradeable to the modern UI, JS Link is the only way to customize fields for the classic UI. For full support of both the classic and the modern UI needs to be complimented by SharePoint Framework extensions which are currently in developer preview.
Script injection via User Custom ActionsCautionRequired to customize the classic UI. Avoid DOM manipulation as its error-prone and not supported in the modern UI.
Ribbon customization via User Custom ActionsAvoidThere is no Ribbon in the modern UI. Ribbon customizations are not upgradeable and need to be redone from scratch for the modern UI.
Customization through DOM manipulationAvoidNot supported in the modern UI. Unreliable as the DOM in SharePoint Online is prone to frequent changes.
Display TemplatesCautionNecessary to customize the classic SharePoint Search results but not upgradeable to the modern UI. Will likely need to be redone from scratch for the modern UI.
Custom Master PagesAvoidNot supported in the modern UI. Customization is not upgradeable and will likely need to be redone for the modern UI.
Custom Page LayoutsAvoidNot supported in the modern UI. Customization is not upgradeable and will likely need to be redone for the modern UI.
Custom Content TypesDoRequired for ECM scenarios. Avoid declarative provisioning and use remote provisioning instead.
Custom Site ColumnsDoRequired for ECM scenarios. Avoid declarative provisioning and use remote provisioning instead.
Content Query Web Part-based solutionsCautionLimited to a single site collection but often required when you can’t wait on new content to be crawled by search. If search latency is not an issue, consider using Content Search Web Part instead  which is more powerful.
Content Search Web Part-based solutionsCautionNot available in the modern UI. Customization will likely need to be redone from scratch for the modern UI.
Search Query Web Part-based solutionsCautionNot available in the modern UI. Customization will likely need to be redone from scratch for the modern UI.
Content/Script Editor Web Part-based solutionsAvoidHard to govern and manage centrally. Not available in modern UI. Use SharePoint Framework client-side web parts instead.
Single Page Applications hosted in SharePointDoStill a reliable way of building applications for SharePoint Online. No alternative in the SharePoint Framework available at the moment.
Customizing list formsAvoidNot supported in the modern UI. Blocks you from using the modern UI. Use client-side applications or Microsoft PowerApps instead
Adding web parts to list form pagesAvoidNot supported in the modern UI. Blocks you from using the modern UI. Use client-side applications or Microsoft PowerApps instead.
Custom List Templates (Save List as Template)AvoidImpossible to manage. List instances tied to the original list and break when the original list is deleted. Consider using remote provisioning instead.
Custom List DefinitionsAvoidRely on declarative provisioning. List instances tied to the list definition and break when the feature is removed. Consider using remote provisioning instead.
Custom Site TemplatesAvoidRely on declarative provisioning that should be avoided. Consider using PnP provisioning engine and its templates instead.
Sandboxed Solutions with codeAvoidDeprecated, not supported anymore.
SharePoint Designer WorkflowsAvoidDeprecated, use Microsoft Flow or 3rd party solutions instead.
InfoPath FormsAvoidDeprecated, use Microsoft PowerApps or 3rd party solutions instead.
SharePoint-hosted add-insAvoidLimited functionality, consider using SharePoint Framework client-side web parts or provider-hosted add-ins if you need isolation or full-page applications.
Provider-hosted add-insDoStill valid approach for building SharePoint solutions. Consider SharePoint Framework client-side web parts instead unless you require web part isolation.
Design PackagesAvoidRely on no-code Sandboxed Solutions, declarative provisioning and custom Master Pages all of which should be avoided.
Access applicationsAvoidDeprecated. Consider using Microsoft PowerApps instead.
Content Type HubCautionOften required for ECM scenarios but beware of timing issues when creating new sites. Content Types are also not added to new document libraries. Consider using remote provisioning instead.  
Declarative provisioning via no-code Sandboxed SolutionsAvoidBased on declarative provisioning which should be avoided due to its limitations. Use remote provisioning instead.
Microsoft PowerAppsCautionEarly technology. Research its limitations before relying on it for your solution.
Microsoft FlowCautionEarly technology. Research its limitations before relying on it for your solution.
SharePoint Framework client-side web partsDoSupported in both classic and modern UI. Actively developed and invested in.
SharePoint Framework extensionsCautionDeveloper preview only, not supported in production yet. Research for applicability but don't use in production just yet.
JavaScript Object ModelAvoidLimited and not invested in anymore. Consider using REST or SP PnP JS Core instead
Client-Side Object Model (CSOM)DoSimplifies communicating with SharePoint, actively managed. SLA-backed by Microsoft.
SP PnP JS CoreDoSignificantly simplifies communicating with SharePoint in client-side solutions. Keep in mind that it's a community-driven effort with no SLA behind it.
SP PnP CoreDoSignificantly simplifies communicating with SharePoint. Keep in mind that it's a community-driven effort with no SLA behind it.
Publishing SitesCautionThe only way to implement publishing in SharePoint but at the moment has unclear future regarding how publishing will look like on top of the SharePoint Framework and to what extent current customization efforts will be upgradeable. 

Version history:

  • July 12th, 2017: The SharePoint Customizations Capabilities Guide is born