Teaful DevTools Released!

Very recently, 2 weeks ago, we released Teaful; a tiny, easy and powerful React State management. If you want to know more about Teaful, I recommend this article.

Teaful was well received (+500 GH stars) and one of the most requested features was to implement a devtool to debug the stores. Today we released Teaful DevTools. In this short article I will explain a little about how to use it and its benefits.

How to use it

4 simple steps:

  • Install DevTools extension:
  • Install the bridge: yarn add teaful-devtools
  • Use the bridge: import 'teaful-devtools' (~200 B) Must be the first import.

    import 'teaful-devtools'
    import { render } from 'preact';
    import App from './components/App';
    
    render(<App />, document.getElementById('root'));
    
  • Open the DevTools and try it.

More details in the README.

Debug stores changes

For each store it is possible to view the history of changes that have been made to the store. To debug, we can know WHEN the change was made, WHAT / WHERE was changed, but also WHO / HOW / WHY.

When

There is no secret, the changes have their own timestamp and are sorted by arrival.

What / Where

For each modification, you'll be able to see which part of the store has changed and what's the new value (the diff).

Who / How / Why

You can view the entire stack trace and go to the line in the source file.

Clicking on a file link opens the source devtools tab where you can view the code part to see how the change was produced. To understand more of the context you can also navigate to the function that called this function to see all the code involved. For more context you can put a breakpoint in the source tab to see the value of each variable that caused the change.

Modify the store from Teaful DevTools

From Teaful DevTools you can generate a change to the store and see how the UI reacts.

Dark & light mode

The dark / light theme adapts to your devtools configuration.

View rerenders / performance

It's a feature that has not been implemented in Teaful DevTools because we consider that React DevTools does it very well.

You can use React DevTools to debug the rerenders and the performance.

How to strip devtools from production

Most bundlers allow you strip out code when they detect that a branch inside an if-statement will never be hit. We can use this to only include teaful-devtools during development and save those precious bytes in a production build.

// Must be the first import
if (process.env.NODE_ENV==='development') {
  // Must use require here as import statements are only allowed
  // to exist at top-level.
  require("teaful-devtools");
}

import { render } from 'preact';
import App from './components/App';

render(<App />, document.getElementById('root'));

Make sure to set the NODE_ENV variable to the correct value in your build tool.

Conclusions

We have released Teaful DevTools to debug the changes from the stores: when, what, where, who, how, why. And vice versa, to trigger a change from Teaful DevTools to see how the UI reacts.

At the moment it's only available for Chrome, but in future releases it will also be available for Firefox and Edge.

You can leave any suggestions on GitHub (issue / PR) and it will be taken into account. Remember that Teaful project is still in an early version 0.X and together we'll make it evolve.

17