← Retour au blog

Arc ferme. J'ai récupéré sa barre latérale et je l'ai emportée dans Chrome

Le 22 décembre 2026, Arc ne se lancera plus. Pas « ne recevra plus de mises à jour » : il cessera tout simplement de fonctionner. The Browser Company l'a annoncé le 22 octobre et a redirigé tout le monde vers Dia, son navigateur à IA.

Ce n'est pas l'IA que je cherchais dans Arc. C'était la barre latérale : des Spaces, chacun avec ses dossiers et ses onglets épinglés, et chaque favori qui s'ouvre dans son propre onglet au lieu de créer la dixième copie de Jira. En quelques années, j'en étais à 10 Spaces et 834 onglets épinglés. Pendant ce temps, les favoris de Chrome n'ont pas changé d'un pouce.

En une soirée, j'ai construit une extension qui ramène cette barre latérale dans Chrome. Le code est ouvert : github.com/kirsantov/spacessidebar. Ci-dessous : ce qui s'est avéré simple, ce qui ne l'a pas été, et où l'extension se heurte aux limites du navigateur.

Le panneau : Chrome l'a déjà

Pas de fenêtre séparée, pas de bricolage avec un content script. Chrome dispose de la Side Panel API : l'extension déclare side_panel.default_path dans son manifeste, et une page HTML ordinaire vit à côté de n'importe quel onglet. C'est ainsi que fonctionnent les panneaux latéraux des portefeuilles et des traducteurs.

À l'intérieur : une page sans build ni framework. Un seul fichier JS pour l'état, une arborescence de dossiers, du glisser-déposer. L'état est stocké dans chrome.storage.local, rien ne sort de la machine.

Un favori qui se souvient de son onglet

La principale différence entre un onglet épinglé d'Arc et un favori : il n'ouvre pas un nouvel onglet à chaque fois. Le premier clic ouvre la page, le suivant ramène au même onglet.

Il suffit d'une table « favori → id d'onglet ». Au clic : si l'onglet du favori est vivant, on y bascule ; sinon, on cherche dans la fenêtre un onglet avec la même adresse ; à défaut, on en ouvre un nouveau et on le mémorise. La table est stockée dans chrome.storage.session et disparaît avec la session du navigateur, car les id d'onglets changent après un redémarrage.

C'est la première limite honnête : après un redémarrage, un favori ne reconnaît son onglet que par une correspondance exacte de l'adresse. Arc possédait ses onglets et pouvait les garder aussi longtemps qu'il voulait. Une extension ne possède pas les onglets, elle se contente de les observer via chrome.tabs.

Des Spaces par-dessus la barre d'onglets d'un autre

Deuxième limite : une extension ne peut pas masquer la barre d'onglets de Chrome. Dans Arc, changer de Space remplaçait tout l'ensemble d'onglets. Ici, le panneau change, mais en haut restent les mêmes quarante onglets.

La parade, ce sont les groupes d'onglets. En mode « onglets par Spaces », chaque Space a son propre groupe, nommé et coloré comme lui. On change de Space : son groupe se déplie, les autres se replient. On clique sur un onglet d'un autre groupe : le panneau passe tout seul à son Space. On glisse un onglet à la main dans un autre groupe : l'extension considère qu'il a déménagé. Ce n'est pas Arc, mais la barre d'onglets cesse d'être un fourre-tout.

Le mode est désactivé par défaut : une extension qui range mes onglets en groupes sans demander, je la désinstallerais moi-même.

L'import : le format est simple, l'accès au fichier ne l'est pas

Arc stocke sa barre latérale dans un seul fichier, StorableSidebar.json, dans ~/Library/Application Support/Arc. Le format est particulier, mais lisible :

  • sidebar.containers est un tableau ; le bon conteneur est celui qui contient spaces et items ;
  • spaces et items sont des tableaux plats où des chaînes d'identifiants alternent avec des objets ;
  • dans newContainerIDs d'un Space se trouve une paire « marqueur pinned, puis id de conteneur » : c'est la racine de ses onglets épinglés ;
  • ensuite, c'est un arbre classique via childrenIds : un onglet a savedURL et savedTitle dans data.tab, un dossier a data.list.

Mon fichier fait 4,6 Mo et 2 136 éléments. Le parser tient en moins d'une centaine de lignes.

La difficulté est ailleurs. Une extension du store ne peut pas lire un fichier à partir de son chemin : bac à sable. Un native messaging host aurait voulu dire « installez encore un programme », ce qui est excessif pour un import unique. Il reste donc une étape manuelle : glisser le fichier sur le panneau. Le panneau vide affiche le chemin et une commande open -R qui met le fichier en évidence dans le Finder. Les utilisateurs d'Arc sont surtout des développeurs ; une commande dans le terminal ne les arrêtera pas.

Ce qui a mal tourné

Deux choses, toutes deux de mon fait.

La première version de l'import n'a pas fonctionné chez moi, et l'extension n'a rien dit. Le parser n'y était pour rien : sur le même fichier, hors du navigateur, il fonctionnait. J'avais testé la logique sur un bouchon de l'API Chrome, pas dans Chrome. Depuis, l'import est testé dans un vrai navigateur sur un vrai fichier, chaque erreur s'affiche à l'écran, et si le format n'est pas reconnu, l'extension fournit un diagnostic — uniquement la structure du fichier, sans liens ni titres.

La seconde : les icônes. Dans Arc, les icônes des Spaces sont des noms comme star ou construction, et la première version les remplaçait par des emoji. Je ne supporte pas les emoji. Il y a maintenant un jeu d'icônes SVG au trait, sur lequel sont mappés les noms d'Arc.

Ce qui manque

  • La synchronisation entre appareils. Il y a un export et un import JSON.
  • Les onglets non épinglés de Today et les thèmes d'Arc : je ne les ai volontairement pas transférés.
  • Split View : ces onglets arrivent comme des favoris ordinaires.

En résumé

Arc a montré qu'on pouvait utiliser un navigateur autrement. Mais un panneau de favoris n'est pas ce pour quoi il faut un navigateur à part. Il tient dans une extension d'environ mille lignes, sans aucune dépendance.

Si vous aussi quittez Arc avant le 22 décembre, copiez StorableSidebar.json maintenant, tant qu'Arc se lance encore : vérifier l'import est plus simple quand l'original est ouvert à côté.

Cet article a été créé dans un format hybride humain + IA. J'ai fixé la direction et les thèses, l'IA a aidé pour le texte, j'ai édité et vérifié. La responsabilité du contenu m'incombe.

← Retour au blog