The JS list is really temporary and will disappear (with all those manual add_javascript_url calls) in favor of a clear list of all fragments to add. The @antoviaque's comment is more related to how the dependencies are loaded on the client side. The issue is that with jquery-xblock, all the dependencies are currently loaded synchronously because some JS files might depends on each other.  A solution could be the addition of something like a FragmentGroup. All Fragments inside a group would be loaded synchronously and all FragmentGroup in a xblock would be loaded asynchronously. That way, we could benefit of asynchronous loading where we can.