Dash 3.0 complex plugins and app-specific modifications

The new plugin feature looks very interesting. I have a template that I use for the Dash apps that I create. It looks potentially interesting to me to rewrite the template in the plugin framework. However, the template is a bit more complex than simply adding a single component with accompanying callback to the app. I am wondering how the plugin + hook framework plays along with that complexity.

  1. Is it possible to pass an options parameter to hook that can be controlled by the app using the hook? For example:
    1. when defining a base layout but you want to allow the user to control certain styles?
    2. when base layout contains fixed components with app-specific content, i.e. the app will define what to display there?
    3. In callbacks, when defining logic that works with objects defined by the app itself. For example, before loading the app layout, first doing several pre-checks and only when those pass, actually showing the app-defined layout. In this case you don’t know what the app layout it, you only require it to be in a specific place in the app codebase.
  2. How does the layout hook interact with defining the layout as a function?
  3. Is it possible to use a plugin to completely control the app, e.g. instantiate the app = dash.Dash object?
  4. The docs show that it is possible to inject external scripts into the app. What about js files defined in the plugin itself? For example, these are now added to the assets folder and loaded on app startup. I would like to move these to the plugin.

Any extry insight on these more complex topics is much appreciated.