Scala macros are compile-time. The Scala reflection library (that works at runtime) share most API with macros.
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).