From 028fccc81e011984bacab143849f6f44c1791d25 Mon Sep 17 00:00:00 2001 From: Fabian Hutzli Date: Fri, 10 Apr 2026 13:54:55 +0200 Subject: [PATCH] add script to cleanup spfx solution --- scripts/spo-cleanup-spfx-solution/README.md | 81 ++++++++++++++++++ .../assets/example.png | Bin 0 -> 60071 bytes .../assets/sample.json | 52 +++++++++++ 3 files changed, 133 insertions(+) create mode 100644 scripts/spo-cleanup-spfx-solution/README.md create mode 100644 scripts/spo-cleanup-spfx-solution/assets/example.png create mode 100644 scripts/spo-cleanup-spfx-solution/assets/sample.json diff --git a/scripts/spo-cleanup-spfx-solution/README.md b/scripts/spo-cleanup-spfx-solution/README.md new file mode 100644 index 000000000..973668d2d --- /dev/null +++ b/scripts/spo-cleanup-spfx-solution/README.md @@ -0,0 +1,81 @@ +# Cleanup a SPFx Solution from every Site and App Catalog + +## Summary + +This script fully removes a SPFx solution from a SharePoint Online tenant. It iterates over all site collections, uninstalls the app where it is deployed, and clears any leftover entries from the site recycle bins. Finally, it removes the app package from the tenant app catalog and empties the app catalog recycle bin as well — ensuring no traces of the solution remain across the tenant. + +# [PnP PowerShell](#tab/pnpps) + +```powershell +# Set the SharePoint Tenant name +$tenantName = "contoso" +# Set App catalog Url +$appCatalogUrl = "appcatalog" +# Set App name (SPFx solution) +$appName = "my-spfx-solution" + +# Connect to the SharePoint admin center to retrieve tenant-wide app and site data +Connect-PnPOnline -Url "https://$($tenantName)-admin.sharepoint.com" -Interactive + +# Resolve the app ID from the tenant app catalog by matching the title +$app = Get-PnPApp | Where-Object { $_.Title -eq $appName } + +# Get all site collections in the tenant +$sites = Get-PnPTenantSite + +foreach ($site in $sites) { + try { + Connect-PnPOnline -Url $site.Url -Interactive + + # Check if this site has the app listed (not necessarily installed) + $installedApp = Get-PnPApp | Where-Object { $_.Id -eq $app.Id } + + # InstalledVersion is only set when the app is actively deployed on the site + if ($installedApp -and $installedApp.InstalledVersion) { + Write-Host "Removing app from $($site.Url)" + + Uninstall-PnPApp -Identity $installedApp.Id + } + + # After uninstall, the app package moves to the recycle bin — clear it to fully remove it + $recycleItems = Get-PnPRecycleBinItem | Where-Object { + $_.Title -like $appName + } + + foreach ($item in $recycleItems) { + Clear-PnPRecycleBinItem -Identity $item.Id -Force + } + + } catch { + Write-Host "Error on $($site.Url): $_" + } +} + +# Connect to the tenant app catalog site to remove the app package itself +Connect-PnPOnline -Url "https://$($tenantName).sharepoint.com/sites/$($appCatalogUrl)" -Interactive + +# Remove the app package from the app catalog +Remove-PnPApp -Identity $appName -Force + +# Clear the app catalog recycle bin to ensure the package is fully gone +$recycleItems = Get-PnPRecycleBinItem | Where-Object { + $_.Title -like $appName +} + +foreach ($item in $recycleItems) { + Clear-PnPRecycleBinItem -Identity $item.Id -Force +} +``` +[!INCLUDE [More about PnP PowerShell](../../docfx/includes/MORE-PNPPS.md)] + +*** + +## Contributors + +| Author(s) | +|-----------| +| [Fabian Hutzli](https://github.com/fabianhutzli)| + + +[!INCLUDE [DISCLAIMER](../../docfx/includes/DISCLAIMER.md)] + diff --git a/scripts/spo-cleanup-spfx-solution/assets/example.png b/scripts/spo-cleanup-spfx-solution/assets/example.png new file mode 100644 index 0000000000000000000000000000000000000000..72a9255df883fbb2e1b40c31a225e608861aad27 GIT binary patch literal 60071 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 literal 0 HcmV?d00001 diff --git a/scripts/spo-cleanup-spfx-solution/assets/sample.json b/scripts/spo-cleanup-spfx-solution/assets/sample.json new file mode 100644 index 000000000..8ff6729f6 --- /dev/null +++ b/scripts/spo-cleanup-spfx-solution/assets/sample.json @@ -0,0 +1,52 @@ +[ + { + "name": "spo-cleanup-spfx-solution", + "source": "pnp", + "title": "Cleanup a SPFx Solution from every Site and App Catalog", + "shortDescription": "Remove a SPFx Solution from every Site installed, from Recycle bin and from App Catalog. This is needed if you need a complete cleanup or reinstall.", + "url": "https://pnp.github.io/script-samples/spo-cleanup-spfx-solution/README.html", + "longDescription": [ + "" + ], + "creationDateTime": "2026-04-10", + "updateDateTime": "2026-04-10", + "products": [ + "SharePoint" + ], + "metadata": [ + { + "key": "PNP-POWERSHELL", + "value": "3.1.0" + } + ], + "categories": [ + "Deploy" + ], + "tags": [ + "Get-PnPTenantSite", + "Get-PnPApp", + "Uninstall-PnPApp", + "Remove-PnPApp", + "Get-PnPRecycleBinItem", + "Clear-PnPRecycleBinItem" + ], + "thumbnails": [ + { + "type": "image", + "order": 100, + "url": "https://raw.githubusercontent.com/pnp/script-samples/main/scripts/spo-cleanup-spfx-solution/assets/example.png", + "alt": "Preview of the sample Cleanup a SPFx Solution from every Site and App Catalog" + } + ], + "authors": [ + { + "gitHubAccount": "fabianhutzli", + "pictureUrl": "https://github.com/fabianhutzli.png", + "name": "Fabian Hutzli" + } + ], + "references": [ + null + ] + } +]