Scala macros are compile-time. The Scala reflection library (that works at runtime) share most API with macros.<p>Macros should always work, reflection is harder as some information needs to be retained at runtime (either via Java reflection or additional data – which can both be problematic in Scala.js).