The motivation behind creating this extension stemmed from my experience using various frontend frameworks. I found it frustrating to juggle multiple extensions, each in a separate tab, with its own layout and UI. This was especially true for a polyglot project (React/Svelte) I was working on.
I wanted a single extension that could provide a unified view of the application state, regardless of the frontend library used. Something that could be easily extended to support new libraries and provide a consistent experience across all of them.
So, I decided to develop a proof-of-concept. As things progressed, it became the basis for my CS Master's thesis and StateViz was born.
... and more to come!
4.0.0
and above.dev
option set to true
.16.0.0
and above.The extension is available on the Chrome Web Store.
Clone the repository:
git clone https://github.com/steciuk/StateViz.git
Move to the extension directory:
cd StateViz/extension
Install dependencies:
npm install
Build the extension:
npm run build
Load the extension in Chrome.
chrome://extensions
.Load unpacked
and select the dist
directory inside the extension
directory.Open the developer tools in any tab that runs a supported frontend library application.
Click on the StateViz tab in the developer tools to start using the extension.
To run the tests, use the following command in the extension
directory:
npm run test
In test-apps
directory, you will find a collection of example applications designed to help you test and explore the capabilities of the extension.
To run any of the example applications, navigate to the desired directory and:
npm install
npm run dev
See the issues tab for planned features and improvements.
This project is licensed under the MIT License - see the LICENSE file for details.
Current extension logo made by Tanvir Islam.
The thesis document can be found here. It provides a detailed overview of the extension, its architecture, and the technologies used to build it. It also includes a comprehensive evaluation of the extension's performance and usability. Unfortunately, the document is only available in Polish, but in the future, I plan to provide an English GPTranslated version.
The thesis was defended with a grade 5.0/5.0 and awarded the distinction on 27th June 2024 at the Faculty of Electronics and Information Technology, Warsaw University of Technology.
This paper delves into the complex realm of integrating developer tools with modern frontend libraries, culminating in the creation of a versatile tool aimed at analyzing structure and data flow between components in web applications.
A thorough examination of existing solutions identified essential features for the new tool, leading to its implementation as a browser extension aligned with established requirements.
By delving into the inner workings of React and Svelte libraries, representing different approaches to state management in web applications, a universal tool architecture was devised, prioritizing performance, flexibility, and extensibility to accommodate additional libraries.
The analysis of React Developer Tools, a prominent browser extension, provided valuable insights into established design practices, patterns, and architecture methodologies. Leveraging these insights, an efficient communication system was implemented, facilitating seamless interaction between the extension's components and web applications.
Overcoming unforeseen challenges during the project led to bug fixes in an open-source unit testing library used for Chrome extensions, as well as the creation and release of a new library enhancing the capabilities of the Vite web application building tool.
Thorough testing and comparison with existing extensions confirmed the developed solution's stability, performance, and adaptability while highlighting areas for further development and enhancement.
This paper offers a comprehensive overview of designing and implementing a browser extension for developer tools, setting the stage for future research and innovation in supporting the web application development process.
Keywords: React, Svelte, developer tools, universal browser extensions, application state analysis, Vite, React Developer Tools, Chrome Extension API
Below you can find a UML diagram from the thesis document, illustrating the communication between the extension components and the inspected web application, as it may be useful for understanding the extension's architecture.