This update introduces a new migration assistant for Obsidian Sync. This tool will allow you to perform migrations for your remote Sync vaults, such as encryption upgrades, and in the future the ability to switch regions.
Obsidian occasionally upgrades Sync encryption to maintain the highest security standards. If an encryption upgrade is available you will see an option titled "Upgrade vault encryption" in Obsidian Settings → Sync.
file.tags.contains() not finding files with parent tags (e.g. a/b should match when looking for "a").Includes all new functionality and bug fixes up to Obsidian Desktop v1.9.10.
Ctrl-Tab and Shift-Ctrl-Tab to switch between tabs on iPad.Introducing Bases, a new core plugin that lets you turn any set of notes into a powerful database. With Bases you can organize everything from projects to travel plans, reading lists, and more.
Bases lets you create custom views to visualize and interact with data in your vault. You can filter your notes by properties and create formulas to derive your own dynamic properties.
All the data in a base is backed by your local Markdown files and properties stored in YAML. To support Bases, we're introducing the .base file format and syntax.
tag, alias, cssclass in favor of tags, aliases and cssclasses. In addition, the values of these properties must be a list. If the current value is a text property, it will no longer be recognized by Obsidian.
In the "Format converter" core plugin, there is a new option to fix any incorrectly formatted aliases, tags, and cssclasses in your vault. It will also migrate your old alias, tag, and cssclass properties to the new format.Command/Ctrl while navigating through files using the arrow keys will now open the file under the cursor.Shift-Enter inside a text property no longer creates an empty input.Ctrl-C.idb has been updated to version 8.0.2.yaml has been updated to version 2.7.0.document.body are now mirrored across all pop-out windows.ButtonComponent now automatically shows a loading spinner if the onClick event is async.window.open(url, '_external').processFrontmatter will no longer create a YAML alias.Includes all new functionality and bug fixes up to Obsidian Desktop v1.9.9.
./link/to/file.png)."text" * 2) in formulas now reports an error.Includes all new functionality and bug fixes up to Obsidian Desktop v1.9.8.
File#hasProperty() function. To check if a file has a property (regardless of value), use file.hasProperty("property"). In the filter menu, "exists" is no longer a valid operator. This was returning incomplete and incorrect results. Instead of "<property> exists", you will need to update your filters to say "file has property <property>".String#reverse and String#repeat functions.+ (e.g. list1 + list2).Command/Ctrl while navigating through files using the arrow keys will now open the file under the cursor..base files.Includes all new functionality and bug fixes up to Obsidian Desktop v1.9.7.
file.backlinks.file:/// path (desktop only).file() and Link.asFile(). You can now also access properties from a file reference.__).null in frontmatter. This behavior is more consistent with text properties.: getting rendered as a link in properties.Includes all new functionality and bug fixes up to Obsidian Desktop v1.9.6.
date > "2025-07-18").a && b).link() not working if URL has spaces.Includes all new functionality and bug fixes up to Obsidian Desktop v1.9.5.
String#icon() has been removed in favor of a new global function: icon().List#filter and List#map functions.file.links now includes embeds.link() now supports non-HTTP URLs.date == datetime. When comparing a date and a datetime, the time component will be ignored.![[file]]).$math$) would highlight the wrong selection.Includes all new functionality and bug fixes up to Obsidian Desktop v1.9.4.
file.embeds property which returns a list of all embeds (i.e. ![[file]]) found in the file.checkbox() function has been removed.image() function for rendering images inline.Date.relative() is now sorted according to time.Includes all new functionality and bug fixes up to Obsidian Desktop v1.9.3.
cssclasses, aliases, and tags properties:
tags: 'my-tag' is no longer marked as invalid. Invalid property values, such as tags: 'tag1, tag2' will now be visible in the property editor and marked as invalid.aliases, tags, and cssclasses in your vault. It will also migrate your old alias, tag, and cssclass properties to the new format.note.release_date - today()).Date#relative() to see when a date was relative to now.date() now handles timestamps in the format YYYYMMDD and YYYYMMDDHHmm.10 / 5 / 2).date > "YYYY-MM-DD")link() can now be used with external links.hasLink() not resolving links with subpaths (e.g. file#heading)Property vs property).group_by has been renamed to groupBy. This is still a placeholder for grouping functionality that will be added later.Includes all new functionality and bug fixes up to Obsidian Desktop v1.9.2.