Shallow Snapshots
Quick Reference
Shallow snapshots are like Git’s shallow clone - maintain current state while removing old history. Essential for privacy compliance, storage optimization, and performance.
Basic Usage
const = new ();
// ... extensive editing history ...
// Regular snapshot - full history
const = .({ : "snapshot" });
// Shallow snapshot - trimmed history
const = .({
: "shallow-snapshot",
: .(),
});
// Typically 70-90% smaller
.(`Size reduction: ${100 - (. / . * 100)}%`);
Content Redaction
const = new ();
const = .("content");
// Sensitive data added
.(0, "SSN: 123-45-6789. ");
.(18, "Public info.");
// Redact sensitive part
.(0, 18);
// Create clean snapshot
const = .({
: "shallow-snapshot",
: .(),
});
// Sensitive data permanently removed from history
Synchronization Limitations
⚠️ Important: Peers can only sync if they have versions after the shallow snapshot point.
Common Patterns
Archive and Trim
async function (: ) {
// 1. Archive full history
const = .({ : "snapshot" });
await ();
// 2. Create shallow for active use
const = .({
: "shallow-snapshot",
: .(),
});
return ;
}
async function (: ) {
// Save to cold storage
}
Privacy-Aware Design
class {
constructor(private : ) {}
async () {
// Delete sensitive content
this..("private").(0, this..("private").);
// Create clean snapshot
return this..({
: "shallow-snapshot",
: this..(),
});
}
}
Best Practices
- Coordinate before trimming: Ensure all peers synchronized
- Archive before deletion: Keep full history backup if needed
Related Documentation
- Encoding - Different export options
- Version Tutorial - Managing document versions
- Event Graph Walker - Algorithm powering shallow snapshots