Skip to content

Swift Package is very heavy - "Resolving Package Graph" takes ~19sΒ #15649

@wojciech-kulik

Description

@wojciech-kulik

Description

I've identified the Firebase Swift Package as the root cause of significantly slow xcodebuild execution and Xcode project startup times.

Each time I open Xcode or run an xcodebuild command, Xcode attempts to resolve the package graph. Resolving the Firebase package takes a very long time: ~19 seconds in my case, whereas resolution without Firebase completes in about 1 second.

Please note that this issue is not about the initial resolution (which is much longer), but about the one that happens every time a command is run or Xcode project is opened.

There appears to be no way to skip or cache this resolution step, and the delay occurs consistently across Firebase versions 10, 11, and 12.

Please investigate why dependency resolution for the Firebase Swift Package is taking so long, as it has a major impact on development and command line integrations.

Reproducing the issue

Steps to reproduce:

  1. Download & unzip: slowresolve.zip
  2. Open the project in Xcode. Let it resolve dependencies.
  3. Close the project and open again.
  4. Check logs - "Resolving Package Graph" takes a lot of time.
  5. Remove Firebase Swift Package. Let Xcode update dependencies.
  6. Close the project and open again.
  7. Now it should take ~1s to resolve dependencies.

Firebase SDK Version

12.7.0

Xcode Version

26.2

Installation Method

Swift Package Manager

Firebase Product(s)

Analytics

Targeted Platforms

iOS

Relevant Log Output

With Firebase package - 18.5s:
Image

Without Firebase package - 0.5s:
Image

If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet
{
  "originHash" : "40c9c5e824abbf3b8994754547bef6fac8c0a2e03f2e36d7506cfae8ef1eaa0e",
  "pins" : [
    {
      "identity" : "abseil-cpp-binary",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/abseil-cpp-binary.git",
      "state" : {
        "revision" : "bbe8b69694d7873315fd3a4ad41efe043e1c07c5",
        "version" : "1.2024072200.0"
      }
    },
    {
      "identity" : "app-check",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/app-check.git",
      "state" : {
        "revision" : "61b85103a1aeed8218f17c794687781505fbbef5",
        "version" : "11.2.0"
      }
    },
    {
      "identity" : "asn1decoder",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/filom/ASN1Decoder.git",
      "state" : {
        "revision" : "7e1523662c69d019a3299bbfb22fb824141dd1f6",
        "version" : "1.10.0"
      }
    },
    {
      "identity" : "firebase-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/firebase-ios-sdk",
      "state" : {
        "revision" : "45210bd1ea695779e6de016ab00fea8c0b7eb2ef",
        "version" : "12.7.0"
      }
    },
    {
      "identity" : "google-ads-on-device-conversion-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk",
      "state" : {
        "revision" : "35b601a60fbbea2de3ea461f604deaaa4d8bbd0c",
        "version" : "3.2.0"
      }
    },
    {
      "identity" : "googleappmeasurement",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/GoogleAppMeasurement.git",
      "state" : {
        "revision" : "c2d59acf17a8ba7ed80a763593c67c9c7c006ad1",
        "version" : "12.5.0"
      }
    },
    {
      "identity" : "googledatatransport",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/GoogleDataTransport.git",
      "state" : {
        "revision" : "617af071af9aa1d6a091d59a202910ac482128f9",
        "version" : "10.1.0"
      }
    },
    {
      "identity" : "googleutilities",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/GoogleUtilities.git",
      "state" : {
        "revision" : "60da361632d0de02786f709bdc0c4df340f7613e",
        "version" : "8.1.0"
      }
    },
    {
      "identity" : "grpc-binary",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/grpc-binary.git",
      "state" : {
        "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6",
        "version" : "1.69.1"
      }
    },
    {
      "identity" : "gtm-session-fetcher",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/gtm-session-fetcher.git",
      "state" : {
        "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b",
        "version" : "3.5.0"
      }
    },
    {
      "identity" : "interop-ios-for-google-sdks",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/interop-ios-for-google-sdks.git",
      "state" : {
        "revision" : "040d087ac2267d2ddd4cca36c757d1c6a05fdbfe",
        "version" : "101.0.0"
      }
    },
    {
      "identity" : "keychain-swift",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/evgenyneu/keychain-swift",
      "state" : {
        "revision" : "5e1b02b6a9dac2a759a1d5dbc175c86bd192a608",
        "version" : "24.0.0"
      }
    },
    {
      "identity" : "leveldb",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/leveldb.git",
      "state" : {
        "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1",
        "version" : "1.22.5"
      }
    },
    {
      "identity" : "lottie-spm",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/airbnb/lottie-spm/",
      "state" : {
        "revision" : "04f2fd18cc9404a0a0917265a449002674f24ec9",
        "version" : "4.5.2"
      }
    },
    {
      "identity" : "nanopb",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/nanopb.git",
      "state" : {
        "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1",
        "version" : "2.30910.0"
      }
    },
    {
      "identity" : "networkimage",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/gonzalezreal/NetworkImage",
      "state" : {
        "revision" : "2849f5323265386e200484b0d0f896e73c3411b9",
        "version" : "6.0.1"
      }
    },
    {
      "identity" : "promises",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/promises.git",
      "state" : {
        "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac",
        "version" : "2.4.0"
      }
    },
    {
      "identity" : "snapkit",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/SnapKit/SnapKit",
      "state" : {
        "revision" : "2842e6e84e82eb9a8dac0100ca90d9444b0307f4",
        "version" : "5.7.1"
      }
    },
    {
      "identity" : "swift-cmark",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/swiftlang/swift-cmark",
      "state" : {
        "revision" : "5d9bdaa4228b381639fff09403e39a04926e2dbe",
        "version" : "0.7.1"
      }
    },
    {
      "identity" : "swift-markdown-ui",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/gonzalezreal/swift-markdown-ui",
      "state" : {
        "revision" : "5f613358148239d0292c0cef674a3c2314737f9e",
        "version" : "2.4.1"
      }
    },
    {
      "identity" : "swift-protobuf",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/apple/swift-protobuf.git",
      "state" : {
        "revision" : "c169a5744230951031770e27e475ff6eefe51f9d",
        "version" : "1.33.3"
      }
    }
  ],
  "version" : 3
}

If using CocoaPods, the project's Podfile.lock

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions