For example, if you have an Array of string ids, prior to sdk-7 you would have to declare and use it like this:
var strings as Array<Symbol> = [Rez.Strings.S1, Rez.Strings.S2] as Array<Symbol>; var string as String = WatchUi.loadResource(strings[0]) as String;
In other words, the type checker thinks that Rez.Strings.S1 is a Symbol (I've previously submitted a bug showing that it's actually a Number at runtime - but that rarely matters in practice), and loadResource expects to be passed a Symbol.
But in sdk-7.x, Rez.Strings.S1 etc are typed as Lang.ResourceId. This is a new type introduced in sdk-7.x, but the documentation for it incorrectly says it's Api Level 1.0.0. (You can find the docs at .../Sdks/connectiq-sdk-mac-7.0.2.beta-2024-01-10-acc16aead/doc/Toybox/Lang/ResourceId.html).
So this is another breaking change in sdk-7.x. There's no way to rewrite that Array that works both with sdk-6.x and sdk-7.x.
I'm not sure what can be done about that - except to not introduce a new type. If you want to give it a name, why not just "typedef ResourceId as Symbol;"? And then if it really needs to be a new type (why?) do so at a later date (say sdk-8.x). At least at that point, code could be fixed to work with both 7.x and 8.x. It seems like it should be a goal for Garmin that users can write code that works both with the current sdk, and at least one older one.
Regardless the documentation needs updating to say that it's a ciq-5 feature.