This is a good question: I plan to support auto versioning for v3 by converting the Icon into a package. Package updating currently hasn’t been rolled out but it’s designed this way in hopes it eventually does:
require(MainModuleId) is being removed entirely hence why best to avoid:
require(MainModuleId)