by Pratiyush Tiwari
Give your notes an Apple-inspired appearance with five themes, a floating outline, bundled icons, and optional editing tools.
Native Notes
An Apple-inspired appearance and editing toolkit for Obsidian, with coordinated theme presets, system typography, consistent block spacing, and a small set of optional features.
Requires Obsidian 1.13.0 or later. Native Notes supports macOS, Windows, Linux, iPhone, and iPad using Obsidian and browser APIs. Native Notes is published in the Obsidian Community Plugins directory, with its independent source repository at PratiyushT/native-notes. Native in-app validation on Windows, Linux, iPhone, and iPad is still outstanding; automated checks and desktop fixtures do not replace device testing.
Add to Obsidian · Installation guide · GitHub releases
What it includes
- A built-in floating outline with searchable headings, collapsible sections, and current-section highlighting.
- A restrained interface with coordinated sidebars, navigation controls, properties, and system fonts.
- Five theme presets with paired light and dark colors, three text sizes, and two sidebar densities.
- Compact lists with hidden indentation guides and optional distinct bullets at different nesting levels.
- Bundled folder and note icons, with open folders for expanded sidebar entries; six optional empty-line symbols visible only while editing.
- Coordinated quotes, callouts, code blocks, math, tables, and Mermaid diagrams.
- Optional code-header editing for compatible Shiki Highlighter frames, with filename and language changes kept in the note's Markdown.
- Eleven optional switches and JSON settings profiles for transferring a configuration to another vault or device.
Open Settings → Native Notes after enabling the plugin. Its palette, navigation, typography, lists, tables, properties, quotes, callouts, code, math, diagrams, block spacing, and hover refinements work together as the core appearance. Styling for compatible optional plugins applies automatically when those plugins are present. The plugin supplies its own styles; no separate Native Notes theme or Style Settings plugin is required. Start with Obsidian's Default theme for the most predictable appearance.
Disable Native Notes under Settings → Community plugins to return to the underlying theme while retaining your preferences.
Settings
All settings appear on one page under Appearance, Optional features, and Profiles. Appearance includes a palette strip showing the selected colors.
| Setting | Choices |
|---|---|
| Color theme | Notes, Ocean, Forest, Rose, or Graphite. Each includes coordinated light and dark colors; Obsidian's Appearance setting selects the active mode. |
| Text size | Small, Default, or Large. |
| Sidebar density | Comfortable or Compact. |
| Optional features | Floating outline, Show heading levels, Empty line marks, Nested bullet shapes, Extra table spacing, Image alignment, Folder and note icons, Show language beside filename, Editable code headers, Translucent navigation, and Hide left ribbon. |
| Empty line symbol | Return arrow, Paragraph mark, Dot, Circle, Dash, or Line break. The existing on/off switch controls visibility. |
| Profiles | Export or import JSON preferences and restore defaults. |
Changes apply immediately. Fonts follow the system, and spacing, readable width, code padding, and block gaps are coordinated by the theme. Core styling is included whenever Native Notes is enabled.
Floating outline
Enable Settings → Native Notes → Optional features → Floating outline, then click the outline icon in the note toolbar. You can also run Native Notes: Toggle floating outline from the command palette.
- Headings form a nested list with collapsible sections and current-section highlighting.
- Show heading levels optionally displays H1–H6 beside each entry. It is off by default.
- Search appears for notes with five or more headings. Selecting a result clears the search and keeps the outline open.
- Heading clicks navigate within the current note in editing and Reading view; they never rewrite note contents.
- Escape, clicking outside, or clicking the toolbar button closes the panel. It does not open on hover.
- Turning the feature off removes its button and panel. The preference transfers with your settings profile.
The outline is built into Native Notes and works without Dynamic Outline. Disable the separate Dynamic Outline plugin to avoid having two outline controls. Native Notes does not automatically change another plugin's enabled state.
Bundled icons and empty-line symbols
Under Optional features, turn on Empty line marks and choose Empty line symbol. A small preview shows the selected SVG. Return arrow is the default; Paragraph mark, Dot, Circle, Dash, and Line break are also available. Your choice is retained when marks are turned off and transfers with your profile. Marks follow actual empty source lines. Obsidian’s empty-looking caret slots around rendered tables are not marked. Marks do not appear in Reading view or print.
With Folder and note icons enabled, expanded sidebar folders show an open-folder icon and collapsed folders show a closed-folder icon. Notes keep a separate document icon. The vault root remains unchanged.
All Native Notes-owned icons, including the floating outline controls, are original SVG vectors bundled in the plugin. No Iconize, icon pack, icon font, remote asset, or separate download is required. System text fonts and Obsidian's own controls use the host platform; Shiki's optional code-header integration remains separate.
Table spacing
Settings → Native Notes → Optional features → Extra table spacing is off by default. Off uses Obsidian's normal table margins; on adds 16px above and 24px below the table. Cell styling stays consistent in either setting. The preference transfers with settings profiles.
Live Preview can show caret space around a rendered table even when no blank source line exists. Native Notes keeps those native editing affordances and does not label them as empty lines. Use Source mode to inspect the actual Markdown. Obsidian requires a blank line between a preceding paragraph and a table, but allows tables immediately after headings. Following plain paragraph text also needs separation so it is not treated as another row. These syntax rules are separate from the visual spacing switch. See Obsidian's table separation requirement, the heading exception, and GFM table parsing.
Image and diagram alignment
Settings → Native Notes → Optional features → Image alignment is on by default. In Live Preview, hover over a standalone image or Mermaid diagram and open Alignment beside Zoom. Choose Left, Center, or Right. Touch devices show the controls without hover. Reading view displays the saved alignment without editing controls.
Alignment is horizontal and applies to each block separately. Full-width media already occupies the available width, so its position will not visibly change. Existing image dimensions and diagram contents stay intact. Changes use normal editor undo and preserve the current scroll position.
The choice is saved in a hidden HTML comment immediately before the image or Mermaid fence, for example <!-- native-notes:align=center -->. It travels with the note; the plugin must be installed and this feature enabled to display the alignment. Turning the switch off removes the controls and custom alignment without deleting saved choices. Source mode shows the comment so it can also be edited or removed manually.
Supported blocks are standalone wiki images, standalone Markdown images, and root-level Mermaid fences. Images embedded inside text, tables, lists, callouts, reference-style images, and ambiguous source ranges are left unchanged.
Code headers
With Shiki Highlighter enabled, compatible rendered code blocks support direct header editing in Live Preview:
- Named blocks show the filename and language side by side. Show language beside filename controls the extra language label and is on by default. Turning it off leaves language-only blocks unchanged.
- With Editable code headers on, clicking a filename opens Filename; clicking its language opens Language. Each changes only its own value.
- A block without a filename opens a Language field. Changing the language does not add a filename.
- Enter or clicking away saves; Escape cancels. Keyboard users can focus a header and press Enter, Space, or F2.
- Saves preserve the editor's viewport and use normal undo history when editing an open note.
- Reading view has static headers and a Copy button. It never exposes filename/language editing or the code-edit button.
The plugin does not install or change Shiki Highlighter. Ordinary code styling works without it; its expressive frames and direct header editing require that optional integration. Frames explicitly marked frame="none" remain hidden. Titles inferred from source comments remain static; their separate language label can be edited when the source block can be identified. If a source block cannot be identified safely, its contents are left unchanged.
Appearance across platforms
Native Notes uses CSS, bundled SVG icons, and fonts available on your device. No Apple frameworks, downloaded fonts, external icon packs, Electron, or Node.js are required at runtime.
| Platform | Appearance and controls |
|---|---|
| macOS | System typography and native window controls. Obsidian's Translucent window preference can provide translucent sidebars where supported. |
| Windows | System typography with Segoe UI fallbacks, solid sidebars, and the standard window controls. |
| Linux | System typography with Noto Sans, Ubuntu, and Cantarell fallbacks, solid sidebars, and the host's window controls. |
| iPhone and iPad | System typography, solid surfaces, and controls that work without hover. |
The Translucent navigation setting can soften desktop popovers; transparent sidebars are limited to macOS. Turning it off uses solid surfaces. Fonts and window materials can vary across operating systems. The layout respects reduced-motion and reduced-transparency preferences where the host exposes them.
Install and move between devices
Open Settings → Community plugins, turn on community plugins if prompted, and select Browse. Search for Native Notes, select Install, then Enable. Open Settings → Native Notes to configure it. You can also use Add to Obsidian on its directory page.
No build tools, separate theme, or BRAT installation are required. Manual installation from a GitHub release remains available in the installation guide. Preserve data.json when updating a manual installation.
For another device, you can synchronize the installation and preferences through Obsidian Sync after enabling community-plugin and plugin-settings synchronization on both devices. To transfer just the settings, use Settings → Native Notes → Profiles → Export → Copy, then Import on the receiving device. If automatic clipboard copying is unavailable, select the JSON and use your device's Copy command. A profile transfers preferences; the plugin must already be installed on the receiving device.
The installation and device-transfer guide also covers manual releases and optional beta installation through BRAT using PratiyushT/native-notes. JSON file export is an additional convenience; its download behavior has not been verified on physical iPhone or iPad hardware.
New exports use profile version 2. Version 1 profiles and saved preferences migrate to the closest theme preset and text-size choice, while retained optional switches and sidebar density carry forward. The new presets supply coordinated colors, system fonts, and spacing rather than preserving individual legacy color, font, and gap values.
Existing customizations
When moving from the earlier local setup, disable Native Code Titles and the native-folder-note-icons snippet, then choose the Default theme before enabling Native Notes. Keep their files as a fallback until you are satisfied with the new setup. Native Notes does not automatically remove other plugins, rewrite their preferences, or change your selected theme.
Privacy and data
Native Notes does not send telemetry or make network requests. Preferences are stored with Obsidian's plugin settings API. Appearance changes do not rewrite note contents. Editing a code header intentionally changes only the corresponding opening fence metadata or language token. Choosing image alignment adds or updates a single hidden comment for that block. Settings profiles contain Native Notes preferences, not the contents of your vault.
Development and release
Use Node.js 24 and run npm ci, npm run lint, npm test, then npm run build. Development and packaging commands are portable across Windows, macOS, and Linux. GitHub Actions runs validation on all three operating systems. The source package includes contribution guidance, testing and release checks, and the community submission checklist.
A matching version tag publishes exactly three runtime assets: main.js, manifest.json, and styles.css. GitHub provides source archives automatically. npm run package creates a verified local install ZIP under release/ for convenience; it is not uploaded as a release asset.
This repository is separate from The NotesHub application. It owns its source, dependencies, assets, issues, and releases, and has no shared build or runtime files with NotesHub. Work from this repository rather than any archived prototype. The source is provided under the MIT license.
Native Notes is an independent project and is not affiliated with Apple or Obsidian.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.