Major and Minor Versions
When versioning is enabled on a library, every save creates a new version in the history, numbered either as a simple integer sequence (1, 2, 3) or, if minor versions are enabled, as major.minor pairs like 1.0, 1.1, 1.2, where minor versions represent drafts and a major version (2.0) represents a published, finalized state. Only users with the 'Edit Items' or 'View Drafts' permission can see minor versions; users with only read access see the latest published major version, which makes minor versioning a lightweight way to hide in-progress edits from casual readers without a separate approval workflow.
Cricket analogy: Minor versions of a scorecard draft hidden from spectators until a major 'Final' version is published is like a broadcaster withholding a provisional scorecard until the third umpire confirms the result officially.
Configuring Version History Limits
Library settings let you cap version history with 'Keep the following number of major versions' and, separately, 'Keep drafts for the following number of major versions', which controls how many minor versions are retained per major version before older ones are purged to control storage growth. Version history is visible per-file via the 'Version History' command, showing who edited each version, when, and any check-in comment, and any prior version can be restored, which itself creates a new version rather than truly deleting the versions in between.
Cricket analogy: Capping version history to the last 50 major versions is like a stats archive keeping only the last 50 completed innings scorecards to manage storage, purging the oldest as new matches are added.
Version history counts against a library's overall storage quota. Setting 'Keep the following number of major versions' to a bounded value (e.g. 50) is a common governance practice for high-churn libraries to prevent unbounded storage growth from frequent saves.
Content Approval Workflows
Content Approval, enabled separately from versioning in Library Settings > Versioning Settings, requires every new or edited item to pass through a Pending state before it becomes visible in the default view to users without approval rights; an approver reviews the item and sets its status to Approved or Rejected, optionally with comments, and only Approved items appear to general readers, while Pending and Rejected items remain visible to the author and to anyone with 'Approve Items' permission. This differs from minor versioning in that approval is an explicit human decision gate, whereas minor versions are simply hidden until manually published to major, with no reject state.
Cricket analogy: Content Approval mirrors a third-umpire review: a contentious decision stays 'Pending' on the big screen until the official review confirms Approved (out) or Rejected (not out) before the crowd sees the final call.
Content Approval and Require Check Out can be combined, but enabling Content Approval alone does not stop other editors from co-authoring a Pending item; it only controls visibility to readers. If you need to prevent edits during review, also enable Require Check Out or use a dedicated approval workflow with explicit locking.
# PnP PowerShell: enable versioning with minor versions and content approval on a library
Connect-PnPOnline -Url "https://contoso.sharepoint.com/sites/marketing" -Interactive
Set-PnPList -Identity "Press Releases" `
-EnableVersioning $true -EnableMinorVersions $true `
-MajorVersions 50 -MinorVersions 10 `
-EnableModeration $true
# Approve a pending item
$item = Get-PnPListItem -List "Press Releases" -Id 42
Set-PnPListItem -List "Press Releases" -Identity $item `
-Values @{ "_ModerationStatus" = 0 } # 0 = Approved- Major versions (e.g. 2.0) are published; minor versions (e.g. 1.1) are drafts hidden from read-only users.
- Version history limits (major count, drafts kept per major) control storage growth on high-churn libraries.
- Restoring an older version creates a new version rather than deleting the versions in between.
- Content Approval adds a Pending/Approved/Rejected gate, hiding unapproved items from general readers.
- Approval is a distinct feature from minor versioning: it has an explicit human reject state, versioning does not.
- Approvers need the 'Approve Items' permission level to change an item's moderation status.
- Content Approval alone doesn't lock editing; combine with Require Check Out to also prevent concurrent edits.
Practice what you learned
1. What distinguishes a minor version from a major version in SharePoint library versioning?
2. What happens when you restore an earlier version of a document?
3. What does enabling Content Approval add that minor versioning alone does not provide?
4. Who can see items that are in a Pending approval status?
5. What setting controls how many draft (minor) versions are retained per major version?
Was this page helpful?
You May Also Like
Document Management
Understand core SharePoint document management capabilities: check-out, co-authoring, sharing, retention, and the underlying document lifecycle.
Lists and Libraries
Learn how SharePoint Lists and Document Libraries store structured data and files, and how to configure columns, views, and thresholds effectively.
Metadata and Managed Terms
Learn how Managed Metadata and the Term Store provide a governed, hierarchical taxonomy for tagging content consistently across a SharePoint tenant.
Related Reading
Related Study Notes in Programming
Browse all study notesApache Spark Study Notes
Programming · 30 topics
ProgrammingApache Flink Study Notes
Programming · 30 topics
ProgrammingHadoop Study Notes
Programming · 30 topics
ProgrammingSnowflake Study Notes
Programming · 30 topics
ProgrammingApache Airflow Study Notes
Programming · 30 topics
Programmingdbt (Data Build Tool) Study Notes
Programming · 30 topics