У меня постоянно открыто несколько окон Хрома с множеством табов. В одном - десяток табов с медленными запросами в наш BI-сервис, которые я "вот-вот посмотрю". Во втором - исследование нюансов $lookup и $unwind в MongoDB. В третьем, где больше всего вкладок, - санкт-петербургские правила зачисления в школу, потому что жизнь.
Конечно же, периодически приходит более важная задача и старые окна закрываются... только чтобы через неделю продолжить исследовать те же темы, но я уже не помню, где остановился. Расширения для сохранения табов науке давно известны, но в отзывах регулярно жалуются на потерю данных - и почему же не сделать свой велосипед, заточенный под бэкап? У каждого пользователя Chrome уже есть Google-аккаунт, и чаще всего с включённой синхронизацией. Что если просто сохранять табы туда - без регистраций, серверов и подписок?

Результат - Tab Saver. Один клик - все табы сохранены и бэкапятся в Google-аккаунт.
storage.sync
Chrome предоставляет расширениям API chrome.storage.sync - хранилище, которое автоматически синхронизируется между всеми браузерами пользователя, залогиненными в тот же Google-аккаунт.
Использовать его вот так:
// Сохранить await browser.storage.sync.set({ myData: { tabs: [...], savedAt: new Date().toISOString() } }); // Прочитать const result = await browser.storage.sync.get('myData'); console.log(result.myData);
Как и следует из названия, после browser.storage.sync данные не только бэкапятся, но и волшебным образом появляются на других компьютерах, где залогинен в тот же Google-аккаунт Chrome. Лимиты - так себе, но для синхронизации табов хватит: 100 КБ общего объёма, до 512 ключей, до 8 КБ на элемент.
Всё очень неплохо, однако есть нюанс. Даже несколько.
Нюанс 1: "Синхронизация" не означает "бэкап"
Самый болезненный сюрприз: при удалении расширения Chrome удаляет ВСЕ данные storage.sync.
Если удалить расширение, скажем, для переустановки, то после переустановки - данных нет. Они удалились вместе с расширением. Chrome считает, что данные расширения принадлежат расширению, а не пользователю. Удалил расширение - удалил и данные. Всё, что можно сделать, - разве что предупреждать в UI, что я и делаю. Ну или добавить экспорт-импорт и другие места для бэкапа - это оставим для второй версии.
Нюанс 2: identity API врёт. Ну или предоставляет неточную информацию
Чтобы данные синхронизировались в облако Google, требуется, чтобы пользователь был залогинен и была включена либо синхронизация всего аккаунта, либо синхронизация именно "Apps". Увы, Chrome Identity API позволяет узнать только, включена ли синхронизация всего аккаунта. Ну что ж, можно лишь точно отразить это в UI.
const userInfo = await chrome.identity.getProfileUserInfo({ accountStatus: 'SYNC' }); // Так можно получить только подтверждение, что включена синхронизация всего аккаунта

Нюанс 3: Нужен доступ к email, чтобы просто узнать статус
Чтобы вызвать chrome.identity.getProfileUserInfo(), расширению нужен permission identity.email.
В Chrome Web Store это выглядит как "Read your email address". Это, конечно, неприятно. Для бэкапа табов email-адрес и даром не нужен, но без этого разрешения не узнать статус синхронизации и не получится успокоить меня подтверждением, что табы бэкапятся.
Нюанс 4: Нет подтверждения, что данные синхронизировались
storage.sync.set() возвращает Promise, который резолвится, когда данные записаны локально. Дальше остаётся лишь надеяться, что они таки на самом деле ушли в облако, ну или посмотреть, когда они доедут до Хрома на втором ноутбуке. Конечно, для сохранения адресов ссылок достаточно пары секунд офисного вайфая, но точно - не узнать.
Нет API чтобы узнать:
Синхронизировались ли данные
Когда синхронизировались
Есть ли ошибки синхронизации
Есть и плюсы
Никаких серверов - не нужно поднимать бэкенд
Никакой авторизации - пользователь уже залогинен в Chrome
Бесплатно - Google хостит данные
Кроссплатформенно - работает на всех устройствах с Chrome
Самое главное, конечно, - это отсутствие необходимости заведения любых новых аккаунтов где-либо. Пользуешься Хромом - табы забэкаплены.
А у вас?
Пробовали storage.sync в своих расширениях? Может быть, знаете способ надёжно определить ушли ли данные в облако на самом деле?
P.S.
Изначально опубликовано на моём agilsoftwaredevelopment.com
Комментарии (35)

inkelyad
05.02.2026 12:33Лучше так: писать/читать все это в какой-нибудь Markdown и пускай пользователь как хочет это синхронизирует. Через Google.Disk, OneDrive, Synching и так далее. То же самое, кстати, со всем остальным (закладками, например)
Нужно, разумеется, придумать что делать с конфликтами, но полезность очень увеличится.
artemmarchenko Автор
05.02.2026 12:33Нет редактирования - нет конфликтов.
Вообще, конечно надо отдавать пользователю данные - они так-то его (только я пока склоняюсь к json - они ж больше не для чтения, а для бэкапа).
Хочу ещё сервисов бэкапа добавить - те же OneDrive, Dropbox или даже Яндекс.Диск. Пока что отложил на вторую версию. В текущей главная прелесть для меня лично - это не куда именно бэкапимся, а то что для почти всех пользователей Хрома (кто залогинен в Хром как обычно) работает без единой настройки и регистрации - прямо из коробки!
inkelyad
05.02.2026 12:33Вообще, конечно надо отдавать пользователю данные
Тут идея не в том, что 'Отдавать.'
А в том, что такой Markdown может жить сразу в тех файлах, что к какому-нибудь заметочнику относятся. Вместе с добавленными комментариями, тегами, кросс-сылками и так далее. И отдельной операции переноса данных между заметочником и браузером нет.
А поскольку данные заметочника обычно и так синхронизируются - то средствами браузера этого делать уже не надо. Ну и реализовывать пачку сервисов бакапа в расширении - тоже.

artemmarchenko Автор
05.02.2026 12:33Х-м, не очень могу это себе представить. Типа файл в гуглодрайве и есть хранилище сессий, которой экстеншн читает-пишет? Честно говоря звучит хрупковато (кто его знает что-когда отвалится). Мне кажется, что если уж с гуглодрайвами, то лучше чтобы расширение синхронизировало с ним своё внутреннее состояние (которое всегда быстрое и up to date).

inkelyad
05.02.2026 12:33Типа файл в гуглодрайве
Файл(ы) - где угодно, куда пользователь укажет. Можно и в Google Drive, если очень хочется заморачиваться (как, например, draw.io/app.diagrams.net умеет)
Синхронизируется внешними способами. Или не синхронизируется, если папка сетевая и сразу пачке устройств видна. А расширение эти файлы пишет/читает, держит свои локальные кэши, если надо, разбирается с конфликтами и так далее.

PatakinVVV
05.02.2026 12:33Про лимиты удивлён, думал там вообще всё грустно

artemmarchenko Автор
05.02.2026 12:33Полагаю логика была такой, что надо предоставить достаточно, чтобы типичное приложение могло легко хранить даже большой набор сложных настроек, но не медиафайлы.
Жаль, что нет API, чтобы узнать когда на самом деле данные отправились в облако. Ну или у меня не получилось его найти.

Dandy_the_crocodile
05.02.2026 12:33Edge (кто бы мог подумать, что я пишу это серьезно) так тоже умеет из коробки. 'Рабочие пространства'. Как синхронизируется под капотом — не знаю, но есть и кроссплатформенность, где можно установить браузер. По крайней мере, мак <-> win комп работает. На телефоне всё ещё сижу в хроме.

ex10se
05.02.2026 12:33Вроде интересно, но не сохраняет группы вкладок

artemmarchenko Автор
05.02.2026 12:33Группами вкладок в хроме я не пользуюсь и не подумал о них :/
Спасибо за идею!

delphersf
05.02.2026 12:33Пользуюсь OneTab (и в Firefox-подобных браузерах тоже есть).

artemmarchenko Автор
05.02.2026 12:33А как вы сохраняете свои записи? Мне не удалось найти в OneTab бэкапа, а жалобы на потери сейвов вроде бы были. Как-то эспортируете для сохранения или такие workflow, что долговременного хранения и не требуется?

Habr_Somebody
05.02.2026 12:33Если я правильно понял, что вам нужно, то это кнопка "Экспорт / Импорт URL" справа сверху страницы расширения

Crazy_Father
05.02.2026 12:33А подскажите такое же, но с сохранением в локальной сети?

artemmarchenko Автор
05.02.2026 12:33Этот Tab Saver, собственно тоже работает без интернета и даже бэкапит в гуглоэккаунт (если войти в него пока сеть ещё есть). Как раз одна из трудностей - в том, что
storage.syncне позволяет узнать когда данные на самом деле ушли в облако.
А если надо синхронизировать с локальным файлом - я пожалуй не знаю способов делать это автоматически, да и как-то не очень хорошо было бы разрешать расширению браузера писать куда угодно без явных подтверждений.

AirForceSean
05.02.2026 12:33Возможно я не понял проблему, но зачем при появлении новой задачи закрывать старые окна?

artemmarchenko Автор
05.02.2026 12:33Идея [в моей голове] была такой, что нажимая кнопку ты как бы "отправляешь" окно в сейв, чтобы продолжить когда-то позже. Для меня это естественный процесс работы: закрываю, чтобы продолжить "когда-нибудь потом.
Хм-м, может быть стоит добавить опцию не закрывать сразу. Вечная борьба "больше функций и настроек" против "Попроще!" :)

Hoota
05.02.2026 12:33Продукт полезный конечно, для тех кто использует открытые вкладки в качестве напоминалок и по сути личного таск-трекера. Я тоже так делал раньше. Но искренне рекомендую всем кто держит десятки табов посмотреть объективно какую задачу вы решаете таким в общем-то доморощенным и очень прожорливым по машинным ресурсам способом? Когда я понял что для меня это просто таск-трекер задач для окон свободного времени, я стал использовать для этого соответствующий софт и стало всё гораздо удобнее, чище и структурированней. А то я помню пытался даже приоритизировать задачи сортировкой вкладок в нужном порядке — понял что это уже шиза.

artemmarchenko Автор
05.02.2026 12:33Для меня это скорее не таск трекер, а скорее "режим работы". Вот например, сейчас отвечаю на вопросы по Tab Saver здесь, на реддите, ну и на product hunt решил запостить и статистикой chrome web store себя поглаживаю.
Это больше десятка табов, но это ж просто хобби - очень может быть, что вечером отложу и вернусь лишь через несколько дней. Вот тут-то и пригодится возможность переоткрыть всё в один клик.

Forigen
05.02.2026 12:33Зачем биться головой об стену когда не можно обойти? Поэксперементируйте, скачайте brave.

artemmarchenko Автор
05.02.2026 12:33Зачем учиться пилить дерево болгаркой, если есть ножовка?
Не уверен, что готов перейти на новый браузер только ради автоматического бэкапа вкладок. Хотя, конечно, здорово, если в brave есть такое.
Forigen
05.02.2026 12:33Так себе метафора, у брейва иконка оранжевая, а все остальное тоже самое, это хромиум. Вы ж не храните пароли в Гугле?
Shpankov
На самом дел все эти проблемы уже решены нативно в Vivaldi. Есть сессии, профили, рабочие пространства. И синхронизация, которая не удаляет данные при переустановке или удалении браузера.
artemmarchenko Автор
Я-то - в хроме чаще работаю, мне для хрома надо было.
Shpankov
Я на всякий случай - в качестве альтернативы.
pr0l
Session Buddy - Tab & Bookmark Manager
с историей, бекапам, автосохранением и т.п.
artemmarchenko Автор
Именно на такие и смотрел и вот прямо сейчас прям самым первым комментом именно в Session Buddy: "...my browser (chrome) crashed and to my surprise all the data inside Session Buddy was also gone. I had years of data saved in it and everything is gone now. "
И в других расширениях подобных комментов хватает потому что кто ж когда думает бэкапиться. Ну и UI почти всех сложноват как на мой вкус (ну OneTab разве что попроще будет. И в него-то таск менеджер запихнули, но хоть не немедленно бросающимся в глаза образом).
Идея и была в том, чтобы сделать что-то не только максимально простым, а с бэкапом, работающим из коробки - вообще ничего кликать не надо, бэкап сразу работает.
pr0l
как пользователь этим плагином более 5 лет, такой проблемы у меня не было. Проблема одна, что редко я потом возвращаюсь к сохраненным вкладкам))
artemmarchenko Автор
Я - не настоящий аналитик, но прошёл по топу подобных расширений и чуть более чем у всех главная жалоба - потеря сохранений прежде всего при креше браузера.
Понятно, что это не у всех происходит иначе бы никто ими не пользовался бы, но интересно было сделать такое, где бэкап работает из коробки.
pr0l
нисколько не принижаю вашу работу, но у конкретного расширения есть автосохранние , от раз в 5 минут до 1 дня и настройкой количество последних временных сохранений от 10 до 2к.
Думаю просто вы не пользовались и поэтому сразу решили писать свое.
artemmarchenko Автор
Именно в session buddy мне ui прямо со скриншота не понравился, именно его не пробовал, смотрел другие.
Любопытно, надо будет посмотреть. Интересно куда Session Buddy шлёт свои бэкапы и пробует ли регистрации.
Ну и желание собрать именно свой велосипед и поиграться с Google account api, конечно, тоже присутствовало.
shasoftZ
Была такая фигня в ЯБраузере. А потом они взяли и отделили рабочий и домашний и синхронизацию отрубили :(
Shpankov
Это как?
shasoftZ
Они сделали Яндекс браузер для организаций. И он с обычными браузерами не синхронизируется.
Shpankov
А, даже так. Забавно.