I use VS Code with Salesforce extensions and connect to my sandbox as explained here:


With my package.xml I fetched apex classes and custom labels from sandbox.

In settings I enabled push-or-deploy-on-save.

On saving and deploying I always get error messages where custom labels are used: "External string does not exist: MY_LABEL":

static final String MY_LABEL = Label.MY_LABEL;

My custom labels exist in the sandbox and in my project, so what causes this error?



2 Answers 2


Shouldn't you use System to call Custom Labels?

static final String MY_LABEL = System.Label.MY_LABEL;
  • no, System.Label gives same error, and code worked before I moved to VS code.
    – Obi_77
    Commented Aug 28, 2019 at 9:35

If the Custom Label is marked as a Protected Component, then you will not be able to access it outside the package in which it managed. As noted in the Salesforce Metadata API Docs, protected:

Indicates whether this component is protected (true) or not (false). Protected components cannot be linked to or referenced by components created in the installing organization.

You will either need to edit the label and uncheck the Protected Component attribute, or push a copy of the label in your namespace to have access to it in Apex.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .