With HTTP/2, you can send files down independently, without creating a large bundle, so each file can be cached. You couldn’t obfuscate function names across files though unless you made the process deterministic based on module name.
Etags could be used to cause the browser to revalidate the contents without too much overhead since the connection is already establishd, but good point.
Does your hand rolled framework handle minimization and obfuscation? Probably not because any changes would require a rebuild.
Are your assets cached? If they are, I'm curious how you handle the cache busting when a single file gets updated.