Graphical user interfaces as finite-state machines
Field feedback from the community
[EN] Votre URL est votre état
Ahmad Alfy
Before applying the principle
On délègue encore trop souvent la gestion de l’état à des usines à gaz type Redux ou Context API, alors qu’on a déjà une machine d’état native dispo depuis 30 ans : l’URL.
Mais voilà, beaucoup continuent de mettre tout le state en mémoire (par exemple dans un useState) sans se demander si le navigateur peut pas le gérer à leur place.
Et dès que tu rafraîchis, tu perds tout, le bouton “retour” casse l’expérience, et l’utilisateur se tape des trucs à reconfigurer à la main.
Le pire, c’est que parfois même les URLs sont là, mais c’est du charabia incompréhensible, surchargé ou mal structuré. Bref, l’opacité ou l’amnésie complète de l’UI, tout sauf une machine d’état fiable.
After applying the principle
À l’inverse — ce que décrit cet article — ce qui fonctionne parfaitement avec ce principe, c’est que l’URL est utilisée comme un vrai état sérialisé.
Chaque changement dans l’interface met à jour l’URL, chaque URL représente un état précis de l’appli, et surtout chaque état est réversible, partageable, persistable.
C’est clair, lisible, logique.
La navigation dans l’UI devient équivalente à la navigation dans une machine d’état : chaque segment du path, chaque query param encode une transition.
Tu peux même lire l’URL à froid et savoir dans quel état l’UI va se retrouver, comme si tu lisais un diagramme d’état.
C’est simple, efficace, et ça respecte la promesse initiale du web : back button, partage de lien, bookmark, tout fonctionne.
And you, what’s your field feedback?
If your feedback is validated, it will soon be published on the site.
Other principles
Same vein — click, bounce around.
- Prefer declarative over imperative Development
- Prefer explicit over implicit Development
- Document the rationale Development
- Keep the balance between product and technical vision Product
- Don’t forget to make money Product
- Give the power back to the business Product
- It all comes from the same book. Discover the book →