Skip to content

Reusable React controls for your SharePoint Framework solutions

This repository provides developers with a set of reusable React controls that can be used in SharePoint Framework (SPFx) solutions. The project provides controls for building web parts and extensions.

Placeholder example


In order to migrate to v2 it is adviced to follow this guide: Migrating from V1.

Library Versions

Currently there are 3 active versions of the controls. Please, reference the table below to see what version to use in your project.

Version SPFx minimal dependency Fluent UI (Office UI Fabric React) version SharePoint Version Comments
v3 1.12.0 7.156.0 Online The most current, actively maintained version of the library.
v2 1.11.0 6.214.0 Online The version will be deprecated in May/June timeframe.
We strongly recommend to update to SPFx 1.12 and v3 of Controls.
v1 1.3.0 5.131.0 On-Prem The version is maintained for SharePoint On-Prem 2016 and 2019 implementations. Be aware that the controls might not work in solutions you're building for on-premises. As for on-premises solutions version 1.1.0 will get used.

Getting started


To get started you have to install the following dependency to your project: @pnp/spfx-controls-react.

Enter the following command to install the dependency to your project:

npm install @pnp/spfx-controls-react --save --save-exact



Since v1.4.0 the localized resource path will automatically be configured during the dependency installing.

Once the package is installed, you will have to configure the resource file of the property controls to be used in your project. You can do this by opening the config/config.json and adding the following line to the localizedResources property:

"ControlStrings": "node_modules/@pnp/spfx-controls-react/lib/loc/{locale}.js"


All controls gather telemetry to verify the usage. Only the name of the control and related data gets captured.

More information about the service that we are using for this can be found here: PnP Telemetry Proxy.

Since version 1.17.0 it is possible to opt-out of the telemetry by adding the following code to your web part:

import PnPTelemetry from "@pnp/telemetry-js";
const telemetry = PnPTelemetry.getInstance();

Available controls

The following controls are currently available:

  • AccessibleAccordion (Control to render an accordion. React AccessibleAccourdion-based implementation)
  • Accordion (Control to render an accordion)
  • AnimatedDialog (Animated dialog control)
  • Carousel (Control displays children elements with 'previous/next element' options)
  • Charts (makes it easy to integrate Chart.js charts into web part)
  • ComboBoxListItemPicker (allows to select one or more items from a list)
  • Dashboard (Control to render dashboard in Microsoft Teams)
  • DateTimePicker (DateTime Picker)
  • DragDropFiles (Allow drag and drop of files in selected areas)
  • DynamicForm (Dynamic Form component)
  • FieldCollectionData (control gives you the ability to insert a list / collection data which can be used in your web part / application customizer)
  • FilePicker (control that allows to browse and select a file from various places)
  • FileTypeIcon (Control that shows the icon of a specified file path or application)
  • FolderExplorer (Control that allows to browse the folders and sub-folders from a root folder)
  • FolderPicker (Control that allows to browse and select a folder)
  • GridLayout (control that renders a responsive grid layout for your web parts)
  • IconPicker (control that allows to search and select an icon from office-ui-fabric icons)
  • IFrameDialog (renders a Dialog with an iframe as a content)
  • IFramePanel (renders a Panel with an iframe as a content)
  • ListItemPicker (allows to select one or more items from a list)
  • ListPicker (allows to select one or multiple available lists/libraries of the current site)
  • ListView (List view control)
  • LocationPicker (Location Picker control)
  • Map (renders a map in a web part)
  • MyTeams (My Teams)
  • PeoplePicker (People Picker)
  • Placeholder (shows an initial placeholder if the web part has to be configured)
  • Progress (shows progress of multiple SEQUENTIALLY executed actions)
  • SecurityTrimmedControl (intended to be used when you want to show or hide components based on the user permissions)
  • SiteBreadcrumb (Breadcrumb control)
  • SitePicker (Site Picker control)
  • TaxonomyPicker (Taxonomy Picker)
  • TeamChannelPicker (Team Channel Picker)
  • TeamPicker (Team Picker)
  • Toolbar (Control to render Toolbar in Microsoft Teams)
  • TreeView (Tree View)
  • WebPartTitle (Customizable web part title control)

Field customizer controls:


If you want to use these controls in your solution, first check out the start guide for these controls: using the field controls.