anchor.diff:                  SetLength(FPackageJSFileInfos, Length(FPackageJSFileInfos)+1);
                   FPackageJSFileInfos[High(FPackageJSFileInfos)].Filename := Zip.FileNames[j];
   
  -                // For now, apply JS keyboard to all web and mobile targets
  +                // Apply JS keyboard only to mobile targets, because web is not supported
  +                // in a package. If a package does not support mobile, it should not include
  +                // the .js.
                   // Not using GetKeyboardInfo because that only handles kmx files
  -                FPackageJSFileInfos[High(FPackageJSFileInfos)].Info.Targets := 'web mobile';
  +                FPackageJSFileInfos[High(FPackageJSFileInfos)].Info.Targets := 'mobile';
                 end;
               end;
             end;
  
positive.code:       AddNewPair('windows', 'full');
        AddNewPair('macos', 'full');
        AddNewPair('linux', 'full');
        AddNewPair('desktopWeb', 'full');
        AddNewPair('mobileWeb', 'full');
        AddNewPair('android', 'full');
        AddNewPair('ios', 'full');
      end
  
negative.code:     end;
    end;
  
    // Handle JS file not in kmp. Because it is isolated, we cannot detect
    // whether it supports mobile vs desktop web because that is not included
    // in the .js. So, for now we assume both.
    //
    // We no longer assume that the presence of a .js means support for
    // native mobile apps. These apps now work on the basis of having a
    // .kmp file available
    if (FJsFile <> '') then
    begin
      AddNewPair('desktopWeb', 'full');
      AddNewPair('mobileWeb', 'full');
    end;
  
    json.AddPair('platformSupport', v);
  