Only downside is now you can’t use an alternative template component.
(Most people will have no problem with that, so it’s probably not an issue.)
For the record I mostly solved my “code that runs on every request” needs with:
one or more scripts in site/plugins
adding a few Page methods and one or two methods to the Site class too (rather than having a global controller that sends $customData to each template, I opted for using a $site->customData() method that does the same thing; it’s a nice way to expose utility functions).
Of course a global or init controller is a valid approach too.
Only downside is now you can’t use an alternative template component.
Yes, I know. But this problem will happen to any plugin that is using this component. The component is kind of locked to one plugin. That’s because there is no queue system in Kirby.