summary:
- Quartz 5: rearchitected for extensibility, performance, Obsidian compatibility.
- Upgrade path: Migrating to Quartz 5 from v4.
Plugin Ecosystem
distribution:
- Standalone packages maintained in the quartz-community GitHub organization.
- Installed via git:
npx quartz plugin add github:quartz-community/explorercapabilities:
- independent_versioning:
- Update plugins without upgrading Quartz.
- community_contributions:
- Anyone can publish a Quartz plugin.
- smaller_core:
- Features move into 40+ official plugins.
- registry:
- Discover via
npx quartz tuior the plugin registry.
- Discover via
YAML Configuration
migration:
- From:
quartz.config.ts - To:
quartz.config.yaml
configuration:
pageTitle: My Digital Garden
enableSPA: true
enablePopovers: true
locale: en-US
baseUrl: mysite.github.io
theme:
typography:
header: Schibsted Grotesk
body: Source Sans Pro
code: IBM Plex Mono
plugins:
- source: github:quartz-community/obsidian-flavored-markdown
enabled: true
order: 30
- source: github:quartz-community/explorer
enabled: true
layout:
position: left
priority: 50benefits:
- No TypeScript required.
- JSON Schema validation.
- Per-plugin layouts.
npx quartz createtemplates:defaultobsidianttrpgblog
overrides:
quartz.ts: programmatic control for callbacks and custom components.
Improved Obsidian Compatibility
scope:
- Goal: full Obsidian core-feature compatibility.
- Reference: Obsidian compatibility.
features:
- wikilinks:
- Aliases.
- Headings.
- Block references.
- Escaped pipes in tables.
- callouts:
- Built-in.
- Collapsible.
- Nested.
- highlights:
==highlighted text==
- comments:
%%hidden comments%%- Inline and block.
- tags:
#tag#nested/tag- Tag pages.
- custom_task_characters:
[?],[!], etc.- Preserved as
data-taskattributes.
- mermaid:
- Diagrams render with an expand button.
- embeds:
- YouTube/Tweet via image syntax.
- Video/audio:
mp4webmogvmovmkvaviflacaac- etc.
- block_references:
^block-id- Broad character support.
- canvas_files:
- Interactive, pannable pages via the canvas-page plugin.
- obsidian_uri_links:
- Marked with CSS class for styling.
- footnotes:
- Via GitHub Flavored Markdown plugin.
Page Type System
model:
- Plugins define page rendering.
- Each page type can use a distinct page frame:
- Three-column.
- Full-width.
- Minimal.
- etc.
types:
- content_pages:
- Regular Markdown notes.
- folder_pages:
- Directory listings.
- tag_pages:
- Notes listed by tag.
- canvas_pages:
- Interactive JSON Canvas renderings.
- bases_pages:
- Database-style views.
Layout System
model:
- Declarative layout.
- Plugins declare:
position:left,right,beforeBody,afterBodypriority
plugins:
- source: github:quartz-community/explorer
layout:
position: left
priority: 50
- source: github:quartz-community/graph
layout:
position: right
priority: 10features:
- groups:
- Combine components into flex rows/columns.
- conditional_rendering:
- Show/hide via
condition: not-indexorcondition: has-tags.
- Show/hide via
- display_modifiers:
display: mobile-onlydisplay: desktop-only
- per_page_type_overrides:
- Separate layouts for content, folder, tag, and 404 pages.
Performance
optimizations:
- parallel_processing:
- Worker pool across all CPU cores for Markdown parsing.
- incremental_rebuilds:
- Watch mode re-processes changed files only.
- prebuilt_plugins:
- Community plugins ship compiled
dist/directories. - Build-from-source skipped.
- Community plugins ship compiled
- spa_routing:
- Client-side navigation via
micromorph. - Instant page transitions.
- Client-side navigation via
- cdn_cached_fonts:
- Google Fonts with aggressive caching.
- Self-hosted fonts via
fontOrigin: local.
CLI Improvements
| Command | Description |
|---|---|
npx quartz create | Interactive setup wizard with templates |
npx quartz build --serve | Build and serve with hot reload |
npx quartz sync | Commit and push to GitHub |
npx quartz upgrade | Pull latest Quartz updates |
npx quartz plugin install | Install plugins from lockfile |
npx quartz plugin add <source> | Add a new plugin |
npx quartz plugin list | List installed plugins |
npx quartz plugin prune | Remove unused plugins |
features:
- node_version_check:
- Errors on Node < 22.
- port_conflict_handling:
- Reports port-in-use guidance.
- plugin_lockfile:
quartz.lock.jsonpins versions.
- concurrency_control:
--concurrencyfor memory-constrained environments.
Internationalization
localization:
- Set
locale: ja-JPor another locale in config. - Translates UI strings:
- Search placeholders.
- “Table of contents”.
- Dates.
- etc.
New Plugins
scope:
- Plugins new to v5.
- Not available in v4.
| Plugin | Repository | Description |
|---|---|---|
| BasesPage | quartz-community/bases-page | Renders Obsidian Bases files as database-style views. |
| CanvasPage | quartz-community/canvas-page | Renders JSON Canvas files as interactive, pannable pages. |
| EncryptedPages | quartz-community/encrypted-pages | Password-protected encrypted pages with shadow content index. |
| NoteProperties | quartz-community/note-properties | Displays frontmatter properties in a collapsible panel. |
| ReaderMode | quartz-community/reader-mode | Distraction-free reading mode toggle. |
| Spacer | quartz-community/spacer | Flexible spacer for layout groups. |
| StackedPages | quartz-community/stacked-pages | Andy Matuschak-style stacked sliding panes. |
| UnlistedPages | quartz-community/unlisted-pages | Hides pages from navigation and indexes while still publishing them. |
For Plugin Developers
reference:
- Development model changed significantly.
- Full guide: making plugins.
changes:
- standalone_npm_packages:
- Include
package.json,tsconfig.json, build system.
- Include
- factory_function_pattern:
- Replaces class-based plugins.
- Astro-inspired.
- type_safety:
@quartz-community/types- No Quartz core dependency.
- shared_utilities:
@quartz-community/utils- Path, DOM, language utilities.
- runtime_utilities:
@quartz-community/runtime- Browser runtime utilities.
- extensibility:
- Plugins can ship:
- Components.
- Frames.
- Stylesheets.
- Client scripts.
- Plugins can ship:
- template: