Javascript

SharePoint Data Handling with PnP Batching Queries

Updating a thousand SharePoint list items one request at a time is slow and burns through API throttling limits fast. PnPjs batching bundles multiple operations into a single HTTP call instead. Here’s the syntax for both the older and current versions of the library, and the real limit worth knowing before you rely on it.

SharePoint Data Handling with PnP Batching Queries Read More »

SPFx: Check if User is an Admin or an Owner is SharePoint

In this post: Introduction · Understanding SharePoint User Roles · Checking If a User Is an Admin in an SPFx WebPart · Checking in an Application Customizer · Alternative: Checking Site Owners Group Membership · The simpler check you probably want first · Pros and Cons of Different Approaches · Related reading Introduction When working

SPFx: Check if User is an Admin or an Owner is SharePoint Read More »

XSLT: Transforming XML with Style

XSLT (Extensible Stylesheet Language Transformations) transforms XML into another format (HTML, plain text, or different XML) using declarative templates and XPath. Worth leading with directly, since it changes the practical calculus around it: native, client-side XSLT support is being removed from every major browser engine, starting with Chrome in November 2026. This post covers how

XSLT: Transforming XML with Style Read More »

How to Export SharePoint Site Users to an Excel Spreadsheet

Worth a direct correction before anything else: neither the classic on-premises COM-automation script nor the “PnP PowerShell” example commonly shown for this actually produces a real Excel file without a caveat. The COM approach genuinely needs Excel installed on the machine running it, and the PnP example usually exports to CSV, not a true `.xlsx`,

How to Export SharePoint Site Users to an Excel Spreadsheet Read More »

Handlebars.js: The Templating Engine You Didn’t Know You Needed

Handlebars.js separates HTML structure from the JavaScript that fills it with data, instead of building markup with string concatenation, you write a template with {{placeholders}} and compile it against a data object. Here’s what it actually looks like, where it fits, and where a real framework is the better call instead. In this post: A

Handlebars.js: The Templating Engine You Didn’t Know You Needed Read More »

Get SharePoint Site Users: Implementations and Use Cases

Knowing who actually has access to a SharePoint site (not who you think has access) is the starting point for any real audit, cleanup, or automation built around user roles. This covers the ways to pull that list programmatically: REST via plain JavaScript or jQuery, PnPjs for SPFx solutions, and PowerShell for admin-scale reporting. In

Get SharePoint Site Users: Implementations and Use Cases Read More »

Understanding SharePoint List Types: A Guide for Developers

SharePoint lists work like a lightweight database (each list is a table, columns are metadata fields) but built for collaborative, permission-aware environments rather than raw relational data. Here’s the built-in list types, the template IDs for creating them programmatically, and how to work with them in code. In this post: Built-in list types · Template

Understanding SharePoint List Types: A Guide for Developers Read More »

ChatGPT vs. GitHub Copilot: Comprehensive Comparison

ChatGPT and GitHub Copilot get compared a lot, but they’re not really competing for the same job. ChatGPT is a general conversational assistant; Copilot is built into a code editor and scoped around software development. Worth noting up front: both products change their pricing and feature set often enough that anything below is a snapshot,

ChatGPT vs. GitHub Copilot: Comprehensive Comparison Read More »

How to Escape Apostrophes in SharePoint REST Queries

An apostrophe in a data value (a name like O’Reilly, a title like Harry’s Adventures) breaks a SharePoint REST `$filter` query, because OData uses single quotes as the string delimiter and has no way to tell a literal apostrophe apart from the end of the string. The fix is one specific, verified rule: double the

How to Escape Apostrophes in SharePoint REST Queries Read More »

Rendering SharePoint List Extensions for Specific List Templates

Command Sets and Application Customizers scope to specific list templates the same way, through `RegistrationType`/`RegistrationId` in `elements.xml`. Field Customizers don’t. They’re registered against a specific column, not a list template, a genuinely different mechanism worth knowing before assuming one pattern covers all three extension types this post touches on. In this post: Scoping a Command

Rendering SharePoint List Extensions for Specific List Templates Read More »