What even is this?

reflect-metadata

Using decorators you can write encapsulated functionality to be shared among a lot of of code. Sitepoint has a good intro to decorators. Basically they let you define functions like log, immutable, and time which you can apply to classes, functions, and properties.

@log()@immutable()classExample{@time('demo')doSomething(){//}}

core-js

Angular makes use of TypeScript decorators through another metadata implementation, core-js. Core-js is awesome and provides a huge number of other JavaScript polyfills. If you're supporting older browsers and using other core-js polyfills it might make sense to stick with it.

One example is Component that lets us define a class as an Angular Component and configure it's behavior.

@abraham/reflection

@abraham/reflection is a modern, lightweight, ES module rewrite of reflect-metadata. For most use cases you should be able to replace reflect-metadata or core-js/es7/reflect without issue.

Give @abraham/reflection a try and see if it reduces your bundle size. Keep in mind that it's a new library and might have some kinks to work out. It is running in production on pwa.ng though. If you have any problems please file an issue.