Can you share a screenshot of the Bookmark Manager with both synced and non-synced folders? I have not been able to create both types in the same profile - when I turn sync on, everything gets synced. I was interested to know if there would be duplicated entries in the left panel and/or icons denoting the storage type.
Also, I can't reproduce the expected outcome when following the instructions in the blog post. Specifically, when choosing not to sync, bookmarks do not get saved to the syncing storage.
Hi Lucas,
Thanks for your questions about the new bookmarks model. I wanted to provide more context on the changes: we're enabling many of the account-powered features (including bookmarks) to sign-in rather than requiring sync.
In summary this means:
Signed in - save to account: Users can now save bookmarks to their Google account just by being signed into Chrome. This provides account features (access across devices, recovery) without the user needing to enable sync.
Signed out - save to device: For users who prefer local storage, bookmark saving to their Google Account can be easily toggled off in settings, even when signed in (note this toggle is launching in M142). Alternatively, users can sign out of Chrome to use it locally
I have been publishing a bookmarks syncing app with Chrome extension since the beginning, 2010 or whatever. After executing the bulk migration to the Google Account, I was a bit shocked to see all of my bookmarks disappear upon signing out of Google. But after an hour or or so of testing per the James Lee blog post, spending some time in the garden tying up tomato plants, and a lot of head-scratching, I think I am finally beginning to understand this new bookmarks syncing logic. But I don't quite understand that bookmarks syncing occurs even when I the sync switches are off in my profile. Turn on Sync seems to have become useless. Is it going to be removed in a future version?
Indeed syncing as a user-facing feature will be deprecated in a future version (described in a previous blog post). We’re aligning the sign-in model more closely to what users expect in an app or browser - sign in to get your stuff, sign out to keep it safe. We have implemented several UIs in Chrome to facilitate this transition. On sign in, users will see an in-product-help and the identity pill in the top right will also expand while data is downloaded (note: these are launching with the broader rollout in Q4). On sign out, users will see a confirmation dialog explaining that account data will be removed from the device.
When local-only top-level folders disappear (and reappear) for reasons already mentioned in this thread, the onRemoved (onCreated) events don't seem to fire (though they do for synced top-level folders), is this a bug? I've checked this in version 137.0.7151.119.
The changes require 138.0.7196.0 or later. Your understanding is correct, onRemoved and onCreated events will indeed be fired for the top-level folders. .
Another question: Is this change being made in the open source part of Chromium which may eventually be adopted by Microsoft Edge, Opera, Vivaldi, Brave, Orion, etc.? Currently I use the same code to decode and encode trees from all these browsers, because they have been the same, and I'm wondering if I should subclass or not.
The changes are in the open-source repo. Other Chromium-based browsers are aware but it’s not clear yet whether or not they’ll adopt this same model.
I agree with Shannon Whitley that such a signed_in API would be nice, just because this change seems to have the potential for edge cases and surprises for users which have yet to be discovered. In addition, we may need notifications when that signed_in status changes. Please read on…
For bookmarks management, it is advised to rely on the creation/deletion (onCreated/onRemoved) of the nodes rather than directly relying on the Sign in status. When the user signs in, you will get notified with the additional account bookmark nodes, and when the user signs out, you will be notified with the removal of those nodes. Handling those events should provide you with enough context to react to the user actions in Chrome, in a more accurate and direct way related to Bookmarks. Note that the internal bookmark management relies on the same pattern.
Here is an example edge case: User signs out of Google for some reason, not realizing the consequences. My bookmarks-syncing app sees the deletions and deletes these bookmarks in other web browsers. Or it may not see this until later, because of the missing notification noted by U. Mitaka. I'm not sure if that missing notification is a bug or a feature..
Or the user manually discovers that many or all of their bookmarks have disappeared, as expected by the Chromiu team, but not by them. User panics, uses my app and my extension to restore their "lost" bookmarks. Later, user signs back into Google. When the download occurs after some seconds, they have many duplicate bookmarks.
Concerning the scenarios that you mentioned; note that signing out of Chrome is an explicit user action, where the user has a confirmation dialog that mentions removing their account data (including Bookmarks) from their current Chrome Profile. This cannot happen indirectly or without the user’s knowledge. Similarly, signing in to Chrome would bring back the user’s account data - which is also mentioned as a benefit during the signing in process.
De-duplication, if users do encounter this, would in most cases be resolved through name+URL-based deduping. Users can also resolve this via the batch upload in the Chrome UI, which employs a similar logic to the deduping that occurs via Sync today.
By the way, I think there should be an indication of "Downloading bookmarks, please wait" during those seconds after signing in. It is rather upsetting to see no effect for 10 seconds, wonder what you did wrong, and then BOOM.
This should take no more than a few seconds for ~5k+ bookmarks, so most users shouldn’t observe a noticeable delay. Please let us know if you do. In addition, as mentioned above, users will see an in-product-help notification the first time and the identity pill will expand while data is downloaded (note: these are launching with the broader rollout in Q4).
Also, I hope the roll-out of this is really slow, or even better, consider delaying it beyond tomorrow July 1 2025. I got the email announcing this breaking change only 5 days ago. I admit that I sat on it for two days, but you know developers have other things going on in business and in life. Also, since the affected code is in my macOS native app, I need to push out an update to a native app, which is a more involved than updating an extension.
As initially announced, our roll-out will be careful and progressive . In the next 3 months, we will be launching these changes to only a subset of users (~1-2% of clients) and will monitor metrics. Assuming these look good, our roll-out will then complete in Q4.
The value of the new syncing attribute in user-editable items always matches that of their deepest ancestor (bookmarks_bar syncing=1, other syncing=1, bookmarks_bar syncing=0, other syncing=0). So please tell me why the syncing attribute exists on user-editable items when it seems to be redundant. Is there some case in which it is not redundant? Understanding this may help prevent bugs. Thank you.
This is correct, the `syncing` attribute between any child and parent nodes always matches throughout the tree structure (except for the root node as expected). Having the information present on each is done for consistency and simplicity of access.
The changes require 138.0.7196.0 or later. Your understanding is correct, onRemoved and onCreated events will indeed be fired for the top-level folders.