Git Product home page Git Product logo

firestore-ios-sdk-frameworks's Introduction

Firestore iOS SDK

Precompiled Firestore iOS SDK xcframework files extracted from the Firebase iOS SDK repository release downloads, tagged by Firebase iOS SDK version and presented as a consumable podspec.

Why

Currently the Firestore iOS SDK depends on some 500k lines of mostly C++, which when compiling as part of your Xcode build takes a long time - even more so in CI environments.

Related Issues

Before & After

Before and after timing below, timed when running Xcode build (with cache fully cleared) in a project with Firestore.

Mac mini (2018) 6 cores:

Before:    ~ 240s
After:     ~  45s

GitHub Action CI 2 cores:

Before:    ~ 551s
After:     ~ 174s

Usage

Integrating is as simple as adding 1 line to your main target in your projects Podfile. Any dependencies in your project that already consume the Firebase iOS SDK from pods will then automatically source Firestore from these precompiled binaries rather than from source.

  • For Flutter & React Native this file is usually located at ios/Podfile
  • For Flutter the target is usually called Runner and can be added inside the target 'Runner' do block in your podfile.
  • For React Native this would be inside the target that has all your local React-* pods included.
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '7.11.0'

⚠️ Note: where the tag says 7.11.0 this should be changed to the pod version of Firebase/Firestore that you or your dependencies are using - in the format X.X.X, for FlutterFire the version that is being used can be seen here, for React Native Firebase here. If no version is specified on your current Firebase/Firestore pod then you can omit , :tag => '7.11.0' from the line above and use the latest version on master.

The first time you pod install a specific version, CocoaPods will remotely retrieve this git repository at the specifed tag and cache it locally for use as a source for the FirebaseFirestore pod.

⚠️ Note: if you were previously caching iOS builds on CI you may now find that when using precompiled binaries that caching is no longer required and it may actually slow down your build times by several minutes.

Resolving 'leveldb' missing or duplicate symbol errors

The "leveldb" framework is needed by FirebaseFirestore but may be included in other libraries, so it needs to be included or excluded correctly. The podspec here attempts to do that for you automatically by default, by detecting known situations where it should be excluded, but sometimes auto-detection fails.

If your build fails due with duplicate 'leveldb' symbols, pod FirebaseFirestore/WithoutLeveldb as the pod name instead of pod FirebaseFirestore, reinstall pods and try rebuilding.

If your build fails due with missing 'leveldb' symbols, pod FirebaseFirestore/WithLeveldb as the pod name instead of pod FirebaseFirestore, reinstall pods and try rebuilding.

Supported Firebase iOS SDK versions

The below are the currently supported Firebase iOS SDK versions of this repository, this list is updated automatically.

⚠️ Note: if you are looking for a new version that is not listed in the supported versions list, examine the upstream release notes for firebase-ios-sdk carefully. This can happen if the firebase-ios-sdk team issues an interim release to solve some urgent problem, but do not run their full release process. If that happens, don't worry - just wait for the next supported version before moving forward, or temporarily de-integrate this pre-compiled framework if you must use the interim version. 6.31.1 is an example of this, with more details here for why it might happen.

License


Built and maintained by Invertase.

firestore-ios-sdk-frameworks's People

Contributors

salakar avatar mikehardy avatar russellwheatley avatar andersonaddo avatar ichordedionysos avatar ehesp avatar noizycr1cket avatar quentinfarizon avatar

Stargazers

 avatar

Forkers

timefinderapp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.