Thank you for developing this. Iām sure it was months of hard work.
I think the CallbackEnhancements is a powerful development, as it enriches the Callback toolbox, making it easier and quicker to write the callback, with fewer limitations tied to Input/Output location and IDs.
As for the new TemplateLayoutSystem, I donāt think I would use it, for several reasons:
- I have more control over the layout by using dbc.Row and dbc.Col instead of a pre-made template.
- It might be fairly quick and easy to use a pre-made template and create a simple dashboard with a few components, but once there is a need for additional Dash Core components or a desire to customize the layout, it becomes increasingly challenging.
- Adding components to a layout template with
before
, after
, and the role
arguments is less intuitive for me than putting them inside an app layout with dbc.row and dbc.col and letting the callback manage those roles.
Using the Template Layout might allow one to create an app with less code, but learning how to use the TemplateLayoutSystem was more difficult (for me) than learning Dash 1 app.layout - html.Div([...])
.
In addition, I donāt think the TemplateLayoutSystem is conveniently scalable, compared to other Plotly products. Take for example, Plotly Express. PX is incredibly powerful because it offers Plotly users a framework to build many powerful graphs, with little code, bypassing the steep learning curve of Graph Object. And, when the user needs more graph customization and is ready to take advantage of all that Plotly has to offer, they can access Graph Object through fig.update_traces()
or fig.update_layout()
, etc.
This is not the case with the new Template Layout System. For one, Iām not completely sure the learning curve is less steep than the one for dash bootstrap for managing the appās layout. Second, the user might build a very quick app with the template and its component constructs. But as soon as the user needs more control over the layout or component features offered by Dash, I think they are likely to drop the template layout system in favor of Dash Bootstrap as well as drop the component constructs in favor of Dash Core Components (at least, thatās what happened to me).
Once again, I appreciate all the work that has been put into this, and I think TemplateLayoutSystem is promising. Thank you.
p.s. if indeed the templateLayoutSystem could be a building block for larger and more complex apps, then, I would recommend further developing the documentation to make that clearer. When ready, I can create more tutorials on Youtube to help explain this as well.