У меня постоянно открыто несколько окон Хрома с множеством табов. В одном - десяток табов с медленными запросами в наш BI-сервис, которые я "вот-вот посмотрю". Во втором - исследование нюансов $lookup и $unwind в MongoDB. В третьем, где больше всего вкладок, - санкт-петербургские правила зачисления в школу, потому что жизнь.

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

Tab Saver demo
Tab Saver demo

Результат - 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)


  1. Shpankov
    05.02.2026 12:33

    На самом дел все эти проблемы уже решены нативно в Vivaldi. Есть сессии, профили, рабочие пространства. И синхронизация, которая не удаляет данные при переустановке или удалении браузера.


    1. artemmarchenko Автор
      05.02.2026 12:33

      Я-то - в хроме чаще работаю, мне для хрома надо было.


      1. Shpankov
        05.02.2026 12:33

        Я на всякий случай - в качестве альтернативы.


      1. pr0l
        05.02.2026 12:33

        Session Buddy - Tab & Bookmark Manager
        с историей, бекапам, автосохранением и т.п.


        1. artemmarchenko Автор
          05.02.2026 12:33

          Именно на такие и смотрел и вот прямо сейчас прям самым первым комментом именно в 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 разве что попроще будет. И в него-то таск менеджер запихнули, но хоть не немедленно бросающимся в глаза образом).

          Идея и была в том, чтобы сделать что-то не только максимально простым, а с бэкапом, работающим из коробки - вообще ничего кликать не надо, бэкап сразу работает.


          1. pr0l
            05.02.2026 12:33

            как пользователь этим плагином более 5 лет, такой проблемы у меня не было. Проблема одна, что редко я потом возвращаюсь к сохраненным вкладкам))


            1. artemmarchenko Автор
              05.02.2026 12:33

              Я - не настоящий аналитик, но прошёл по топу подобных расширений и чуть более чем у всех главная жалоба - потеря сохранений прежде всего при креше браузера.

              Понятно, что это не у всех происходит иначе бы никто ими не пользовался бы, но интересно было сделать такое, где бэкап работает из коробки.


              1. pr0l
                05.02.2026 12:33

                нисколько не принижаю вашу работу, но у конкретного расширения есть автосохранние , от раз в 5 минут до 1 дня и настройкой количество последних временных сохранений от 10 до 2к.
                Думаю просто вы не пользовались и поэтому сразу решили писать свое.


                1. artemmarchenko Автор
                  05.02.2026 12:33

                  Именно в session buddy мне ui прямо со скриншота не понравился, именно его не пробовал, смотрел другие.

                  Любопытно, надо будет посмотреть. Интересно куда Session Buddy шлёт свои бэкапы и пробует ли регистрации.

                  Ну и желание собрать именно свой велосипед и поиграться с Google account api, конечно, тоже присутствовало.


    1. shasoftZ
      05.02.2026 12:33

      Была такая фигня в ЯБраузере. А потом они взяли и отделили рабочий и домашний и синхронизацию отрубили :(


      1. Shpankov
        05.02.2026 12:33

        Это как?


        1. shasoftZ
          05.02.2026 12:33

          Они сделали Яндекс браузер для организаций. И он с обычными браузерами не синхронизируется.


          1. Shpankov
            05.02.2026 12:33

            А, даже так. Забавно.


  1. inkelyad
    05.02.2026 12:33

    Лучше так: писать/читать все это в какой-нибудь Markdown и пускай пользователь как хочет это синхронизирует. Через Google.Disk, OneDrive, Synching и так далее. То же самое, кстати, со всем остальным (закладками, например)

    Нужно, разумеется, придумать что делать с конфликтами, но полезность очень увеличится.


    1. artemmarchenko Автор
      05.02.2026 12:33

      Нет редактирования - нет конфликтов.
      Вообще, конечно надо отдавать пользователю данные - они так-то его (только я пока склоняюсь к json - они ж больше не для чтения, а для бэкапа).

      Хочу ещё сервисов бэкапа добавить - те же OneDrive, Dropbox или даже Яндекс.Диск. Пока что отложил на вторую версию. В текущей главная прелесть для меня лично - это не куда именно бэкапимся, а то что для почти всех пользователей Хрома (кто залогинен в Хром как обычно) работает без единой настройки и регистрации - прямо из коробки!


      1. inkelyad
        05.02.2026 12:33

        Вообще, конечно надо отдавать пользователю данные

        Тут идея не в том, что 'Отдавать.'

        А в том, что такой Markdown может жить сразу в тех файлах, что к какому-нибудь заметочнику относятся. Вместе с добавленными комментариями, тегами, кросс-сылками и так далее. И отдельной операции переноса данных между заметочником и браузером нет.

        А поскольку данные заметочника обычно и так синхронизируются - то средствами браузера этого делать уже не надо. Ну и реализовывать пачку сервисов бакапа в расширении - тоже.


        1. artemmarchenko Автор
          05.02.2026 12:33

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


          1. inkelyad
            05.02.2026 12:33

            Типа файл в гуглодрайве

            Файл(ы) - где угодно, куда пользователь укажет. Можно и в Google Drive, если очень хочется заморачиваться (как, например, draw.io/app.diagrams.net умеет)

            Синхронизируется внешними способами. Или не синхронизируется, если папка сетевая и сразу пачке устройств видна. А расширение эти файлы пишет/читает, держит свои локальные кэши, если надо, разбирается с конфликтами и так далее.


  1. PatakinVVV
    05.02.2026 12:33

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


    1. artemmarchenko Автор
      05.02.2026 12:33

      Полагаю логика была такой, что надо предоставить достаточно, чтобы типичное приложение могло легко хранить даже большой набор сложных настроек, но не медиафайлы.

      Жаль, что нет API, чтобы узнать когда на самом деле данные отправились в облако. Ну или у меня не получилось его найти.


  1. Dandy_the_crocodile
    05.02.2026 12:33

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


  1. ex10se
    05.02.2026 12:33

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


    1. artemmarchenko Автор
      05.02.2026 12:33

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


  1. delphersf
    05.02.2026 12:33

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


    1. artemmarchenko Автор
      05.02.2026 12:33

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


      1. Habr_Somebody
        05.02.2026 12:33

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


  1. Crazy_Father
    05.02.2026 12:33

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


    1. artemmarchenko Автор
      05.02.2026 12:33

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

      А если надо синхронизировать с локальным файлом - я пожалуй не знаю способов делать это автоматически, да и как-то не очень хорошо было бы разрешать расширению браузера писать куда угодно без явных подтверждений.


  1. AirForceSean
    05.02.2026 12:33

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


    1. artemmarchenko Автор
      05.02.2026 12:33

      Идея [в моей голове] была такой, что нажимая кнопку ты как бы "отправляешь" окно в сейв, чтобы продолжить когда-то позже. Для меня это естественный процесс работы: закрываю, чтобы продолжить "когда-нибудь потом.

      Хм-м, может быть стоит добавить опцию не закрывать сразу. Вечная борьба "больше функций и настроек" против "Попроще!" :)


  1. Hoota
    05.02.2026 12:33

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


    1. artemmarchenko Автор
      05.02.2026 12:33

      Для меня это скорее не таск трекер, а скорее "режим работы". Вот например, сейчас отвечаю на вопросы по Tab Saver здесь, на реддите, ну и на product hunt решил запостить и статистикой chrome web store себя поглаживаю.

      Это больше десятка табов, но это ж просто хобби - очень может быть, что вечером отложу и вернусь лишь через несколько дней. Вот тут-то и пригодится возможность переоткрыть всё в один клик.


  1. Forigen
    05.02.2026 12:33

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


    1. artemmarchenko Автор
      05.02.2026 12:33

      Зачем учиться пилить дерево болгаркой, если есть ножовка?

      Не уверен, что готов перейти на новый браузер только ради автоматического бэкапа вкладок. Хотя, конечно, здорово, если в brave есть такое.


      1. Forigen
        05.02.2026 12:33

        Так себе метафора, у брейва иконка оранжевая, а все остальное тоже самое, это хромиум. Вы ж не храните пароли в Гугле?