Ever found yourself copying the same content across multiple documents — a project brief, a set of guidelines, a pricing table — only to realize you now have five versions that are all slightly out of date?
We've been there too. That's why we built Synced Blocks.
What Are Synced Blocks?
A Synced Block is a live mirror of another page's content embedded directly inside your document. Edit the source page once, and every document that references it reflects the latest version on the next load.
Think of it as a window into another page — you can see everything, but the content lives in one canonical place.
No more copy-paste drift. No more "which version is the real one?" conversations.
How It Works
Inserting a Synced Block
There are two ways to add a synced block:
- Slash command — Type
/sync(or/mirror,/transclusion) anywhere in your document
- Elements panel — Click the Elements button in the left sidebar and select "Synced Block"
Either way, a page picker dialog opens. You'll see your recent pages at the top, followed by your full folder hierarchy. Use the search bar to quickly filter by title.
Select a page, and its content appears inline — right where your cursor was.
The Toolbar
When you click on a synced block, a floating toolbar appears with a few handy actions:
- Alignment — Position the block left, center, or right within your document
- Refresh — Manually pull the latest content from the source page
- Open source — Jump to the source page in a new tab for editing
- Remove — Delete the synced block from your document (the source page is untouched)
Resizing
Drag the side handles to adjust the block's width. Height adapts automatically to fit the content — no manual sizing needed.
What Happens When Things Change?
Synced Blocks are designed to handle real-world scenarios gracefully:
Scenario | What You'll See |
|---|---|
Source page is updated | Hit Refresh to pull the latest content |
Source page is deleted | A clear message: "Source page no longer exists" |
You lose access to the source | A message: "You don't have access to the source page" |
You try to sync a page with itself | Blocked automatically: "Cannot sync a page with itself" |
Network error during fetch | An error message with a Retry link |
No silent failures, no broken layouts — just clear, actionable feedback.
Nested Synced Blocks
Yes, a synced page can itself contain synced blocks. We support up to two levels of nesting, which covers the vast majority of real use cases — like a project hub that syncs a requirements page, which itself syncs a shared glossary.
Beyond two levels, we stop and show a friendly notice: "Nested sync depth limit reached." This prevents runaway recursion if pages happen to reference each other in a cycle.
Synced Blocks in Shared Pages
When you share a page with your team or publish it publicly, synced blocks render seamlessly — no dashed borders, no editing controls, just clean content that reads as part of the page.
Of course, viewers still need access to the source page for the content to appear. If they don't have permission, they'll see a polite access message instead.
What's Stored (and What Isn't)
Here's an important design detail: we don't duplicate content. The synced block only stores a reference to the source page — its ID, cached title, and the last sync timestamp. The actual content is fetched fresh every time you open the document.
This means:
- Your documents stay lightweight
- Content is always up to date (on load or refresh)
- Storage doesn't balloon when you sync the same page in ten places
A Few Things to Know
- Content is read-only within the synced block. To edit, click "Open source" to jump to the original page.
- Refresh is manual for now. When you open a document, synced blocks automatically fetch the latest content. After that, use the Refresh button to pull updates without reloading the page.
- Rich content is fully supported. Tables, images, bookmarks, embeds, diagrams — everything from the source page renders inside the synced block, scaled to fit.
When to Use Synced Blocks
Here are some patterns we've seen work well:
- Company wiki — Sync your brand guidelines into every project brief
- Meeting notes — Embed a living action items page that updates as tasks get completed
- Documentation — Sync a shared API reference into multiple guides without maintaining copies
- Project dashboards — Pull in status pages from different teams into one overview document
- Onboarding docs — Embed the latest policies and procedures, always current for new hires
What's Next
This is V1 of Synced Blocks, and we have ideas for where to take it:
- Real-time sync — Content updates automatically as the source page changes, no manual refresh needed
- Block-level transclusion — Sync specific sections of a page instead of the whole thing
- Sync status indicators — Visual badges showing whether content is fresh or stale
We'd love to hear how you use synced blocks and what would make them even more useful for your workflow.
Synced Blocks are available now for all users. Open any document, type /sync, and give it a try.



