| title | SharePoint Framework v1.14 release notes |
|---|---|
| description | Release notes for the SharePoint Framework v1.14 release |
| ms.date | 03/08/2023 |
| ms.localizationpriority | high |
This release introduces updates across the features around Microsoft Viva, Microsoft Teams and SharePoint.
Released: February 17, 2022
[!INCLUDE spfx-release-notes-common]
In the project's package.json file, identify all SPFx v1.13.1 packages. For each SPFx package:
-
Uninstall the existing v1.13.1 package:
npm uninstall @microsoft/{spfx-package-name}@1.13.1 -
Install the new v1.14 package:
npm install @microsoft/{spfx-package-name}@1.14.0 --save --save-exact
[!INCLUDE spfx-release-upgrade-tip]
Updated Adaptive Card Extensions scaffolding to be more succinct.
BaseAdaptiveCardExtension.navigatorIf the current renderType is Card then returns BaseAdaptiveCardExtension.cardNavigator. If the current renderType is QuickView then returns BaseAdaptiveCardExtension.quickViewNavigator.
BaseListViewCommandSet.raiseOnChange: () => voidUse this method to fire onChange event and initialize a reflow of the ListView.
ListViewAccessor provides expanded state of the current list view. New state properties are listed below.
rows- currently rendered rows in the list view.selectedRows- selected rows in the list view.list- basic information about the list rendered by the list view.view- basic information about the view rendered by the list view.folderInfo- folder information for the list view.appliedFilters- filters applied to the list view.sortField- sort field name.sortAscending- specifies whether the list view is sorted ascending or descending.
ListViewAccessor.listViewStateChangedEvent: SPEvent<ListViewStateChangedEventArgs>This event gets raised every time the list view state changes. The arguments contain type of occured event (see ListViewAccessorStateChanges) and previous state of the list view (see IListViewAccessorState).
Command.disabled: boolean | undefined;PredefinedGroup.Local = '8b7bf6f1-a56a-4aa3-8657-7eb6e7e6af61';The group displays locally debugged web parts.
IClientSideWebPartStatusRenderer.displayLoadingIndicator(domElement: Element, loadingMessage: string, timeout?: number, clearDomElementCallback?: ClearDomElementCallback): void;
IClientSideWebPartStatusRenderer.renderError(domElement: HTMLElement, error: Error | string, clearDomElementCallback?: ClearDomElementCallback);Use clearDomElementCallback to clear the DOM node.
BaseClientSideWebPart.onThemeChanged(theme: IReadonlyTheme | undefined): void;When a theme is initialized or changed on a page, onThemeChanged will be invoked with the new
theme.
Important
render should not be invoked in onThemeChanged. Calling render can lead to unpredicted re-flow of the web part. render will automatically be invoked if needed.
- No Framework, and React templates are updated with new user-friendly UI
- New "Minimal" template is added: allows to start development with the minimal amount of code provisioned.
The next propmts were deprecated in favor to their defaults:
- Solution description
- Environment (SharePoint) version
- Tenant-wide deployment
- Isolated permissions
- Component description
BaseComponentContext.isServedFromLocalhost(): boolean;Any SPFx component can now check if it's currently running from code served locally.
IPropertyPaneGroup.isGroupNameHidden?: boolean;isGroupNameHidden can be used to skip the rendering of the Property Pane group name to avoid an
empty group header being displayed.
The default value of isGroupNameHidden is false.
New property ipAddress has been added to serve.json configuration. This parameter is helpful when using Docker containers. For example, to set the serve host as '0.0.0.0'.
This property will be explicitly used to wind up the server, meaning all debug URLs and webpack configurations will not be affected.
Following features are still in preview status as part of the 1.14 release and should not be used in production. We are looking into releasing them officially as part of the upcoming 1.15 release.
For improved performance, SPFx now supports local caching of your Adaptive Card Extension's Card Views. The cached Card View will be immediately rendered when loading your Adaptive Card Extension. After your Adaptive Card Extension loads, it can optionally update the Card View.
interface ICacheSettings {
/**
* Whether cache is enabled. Default: true
*/
isEnabled: boolean;
/**
* Expiry time in seconds. Default: 86400 seconds (24 hours)
*/
expiryTimeInSeconds: number;
/**
* Returns the Card View used to generate the cached card.
* By default, the currently rendered Card View will be used to cache the card.
*/
cachedCardView?: () => BaseCardView;
}
BaseAdaptiveCardExtension.getCacheSettings(): Partial<ICacheSettings>;By default caching is enabled with default settings. An Adaptive Card Extension can customize its
cache settings by overriding getCacheSettings to return the settings it wants to override.
When the last known Card View shouldn't be cached, you can provide a specific Card View to be
cached and displayed on the next page load through ICacheSettings.cachedCardView. This Card View
doesn't need to have been previously registered.
An Adaptive Card Extension can also locally cache its current state. By default no state is cached.
BaseAdaptiveCardExtension.getCachedState(state: TState): Partial<TState>;If getCachedState is overridden, then the cached values will be provided when the Adaptive Card
Extension is initialized on the next page load.
onInit has a new overload, which passes information about the cached card state. If the card wasn't
loaded from a cached Card View, then cachedLoadParameters will be undefined.
interface ICachedLoadParameters {
state: TState;
}
BaseAdaptiveCardExtension.onInit(cachedLoadParameters?: ICachedLoadParameters): Promise<void>;Your Adaptive Card Extension's initial state can be seeded from the cached state. The cached state can also be used to determine if any further logic needs to be executed.
State caching and the cache expiry time can be used to determine when expensive remote calls need to be made by the Adaptive Card Extension.
Caching can help significantly improve the perceived performance for your Adaptive Card Extension.
BaseView.onActionError(error: IActionErrorArguments): voidOverride this method to handle errors from Adaptive Card actions.
Note
These new actions are only available in the browser currently. Viva Connections desktop and Viva Connections mobile support will be enabled later.
After General Availability the support matrix for actions will look like:
| Action | Viva Connection Desktop | Viva Connections Mobile | Browser |
|---|---|---|---|
| Select Media | Supported | Supported | Supported |
| Get Location | Not Supported | Supported | Supported |
| Show Location | Not Supported | Supported | Supported |
ISPFxAdaptiveCard.actions?: (
| ISubmitAction
| IOpenUrlAction
| IShowCardAction
| ISelectMediaAction // Raise a file picker or native media picker
| IGetLocationAction // Get a location
| IShowLocationAction // Show a location on a map
)[];The SelectMedia and Location action can be configured as shown below:
actions: [
{
type: 'VivaAction.SelectMedia',
id: 'Select File',
parameters: {mediaType: MediaType.Image, allowMultipleCapture: true, maxSizePerFile : 200000, supportedFileFormats: ['jpg']},
title: 'Select File'
},
{
type: 'VivaAction.GetLocation',
id: 'Get Location',
parameters: {chooseLocationOnMap: true}
}
{
type: 'VivaAction.ShowLocation',
id: 'Show Location',
parameters: parameters: {locationCoordinates: {latitude: 40, longitude: 40}}
}
]The actions will be rendered as below
Location Action:
Select Media Action:
The Location Action can be used to get your current location, show your current or a custom location on a map, and choose your current location from a map. In the browser it uses Bing Maps as the mapping interface:
The Select Media Action can be used to select Images from your native device. In the browser it uses the file picker to help access relavant files:
The ImageHelper static class (in @microsoft/sp-image-helper) has been added to allow SPFx developers runtime access to:
- Urls of auto-generated thumbnail images of pages and documents stored in SharePoint
- More optimized Urls to images stored in SharePoint
Learn more: Image Helper API
Important
Any existing solution which is using removed APIs will keep on working without issues. Removal will mean that you cannot created any new solutions which are using these APIs.
- Deprecated APIs from
@microsoft/sp-listview-extensibility:BaseListViewCommandSet.onListViewUpdated
- Deprecated APIs from
@microsoft/sp-core-libraryEnvironmentType.Local
- Removed deprecated APIs from
@microsoft/sp-httpGraphHttpClientGraphHttpClientConfigurationGraphHttpClientResponseIGraphHttpClientConfigurationIGraphHttpClientConfigurationsIGraphHttpClientOptions
- Removed preview APIs from
@microsoft/sp-webpart-baseISDKs.officeIOffice
- #5131 - Theme tokens in SCSS files in SPFx 1.10.0 don't work anymore
- #4808 - SPFX and react-dnd
- #4587 - Will background sections be supported in domain isolated webparts (feature available for spfx 1.8.2 on wards)
- #4550 - Single Part App Page doesn't prevent navigation when there are unsaved changes
- #5098 -
this.context.propertyPane.open()opens within an<iframe>on isolated webparts - #5227 - QuickLaunch navigation (for SinglePageWebParts) fails
- #6779 - Application customizers appear in "Lists" team tab after adding item to the list
- #5787 - Check Fullmask Permission and the Bitwise JS Limit
- #872 - SPFx: Can't view Install Errors
- #6253 -
pageContextdoes not refresh in app customizers on inline navigation - #6102 - Full bleed web part section do not render icons
- #7536 - ACE Teams Deep Link Not Navigating to Specific Tab
- #6343 - Preview is not displayed for web part in a single page mode
- #7079 -
Guid.tryParse()not working - #7558 - Default SPFx v1.13.1 project recommends unnecessary & deprecated VSCode extension
- #6854 - Calling
clearLoadingIndicatorremoves entire WebPart - #3219 - Adding Application Customizer to existing Web Part Project causes web parts to not be deployed
- #3830 - "Specified part does not exist in the package" when provisioning docx in
elementFiles - #3840 - Sorry something went wrong while deploying assets from spfx
- #4294 -
isGroupNameHiddenexcluded from this release type - #4680 - SPFx 1.9.1, office-ui-fabric-react and sp-property-pane
- #6232 - Getting errors about
<div>cannot be nested in<p>when looking at web part data in workbench testing environment - #7386 - Build fails when setting
skipFeatureDeploymentto true - #7691 - 1.13.1 TypeError: Cannot read property 'toJson' of undefined when bundling/serving large project



