AI prompts
base on ⚡ Precompiled Firestore iOS SDKs extracted from the Firebase iOS SDK repository release downloads for faster build times. # Firestore iOS SDK Binary Distribution
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**
- [firebase/firebase-ios-sdk](https://github.com/firebase/firebase-ios-sdk)
- [#4284](https://github.com/firebase/firebase-ios-sdk/issues/4284) `Adding FirebaseFirestore pod dependency adds minutes to build time`
- [FirebaseExtended/flutterfire](https://github.com/FirebaseExtended/flutterfire)
- [#349](https://github.com/FirebaseExtended/flutterfire/issues/349) `[cloud_firestore] Xcode build extremely slow`
### 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**:
```bash
Before: ~ 240s
After: ~ 45s
```
**GitHub Action CI 2 cores**:
```bash
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.
```ruby
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.19.0'
```
> **⚠️ Note:** where the tag says `10.19.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](https://github.com/FirebaseExtended/flutterfire/blob/main/packages/firebase_core/firebase_core/ios/firebase_sdk_version.rb), for React Native Firebase [here](https://github.com/invertase/react-native-firebase/blob/master/packages/app/package.json#L70). If no version is specified on your current `Firebase/Firestore` pod then you can omit `, :tag => '10.19.0'` from the line above and use the latest version on master/main.
The first time you `pod install` a specific version, CocoaPods will remotely retrieve this git repository at the specified 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.
### 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](https://github.com/firebase/firebase-ios-sdk/pull/6368#issuecomment-685030446) for why it might happen.
<!--NEW_VERSION_PLACEHOLDER-->
- [11.6.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.6.0)
- [11.5.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.5.0)
- [11.4.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.4.0)
- [11.3.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.3.0)
- [11.2.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.2.0)
- [11.0.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.0.0)
- [11.0.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.0.0)
- [11.1.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.1.0)
- [11.0.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.0.0)
- [11.0.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.0.0)
- [11.0.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.0.0)
- [11.0.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/11.0.0)
- [10.29.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.29.0)
- [10.28.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.28.0)
- [10.27.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.27.0)
- [10.25.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.25.0)
- [10.24.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.24.0)
- [10.23.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.23.0)
- [10.22.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.22.0)
- [10.21.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.21.0)
- [10.20.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.20.0)
- [10.19.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.19.0)
- [10.18.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.18.0)
- [10.17.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.17.0)
- [10.16.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.16.0)
- [10.15.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.15.0)
- [10.14.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.14.0)
- [10.13.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.13.0)
- [10.12.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.12.0)
- [10.11.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.11.0)
- [10.10.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.10.0)
- [10.9.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.9.0)
- [10.8.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.8.0)
- [10.7.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.7.0)
- [10.6.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.6.0)
- [10.5.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.5.0)
- [10.4.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.4.0)
- [10.3.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.3.0)
- [10.2.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.2.0)
- [10.1.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.1.0)
- [10.0.0](https://github.com/invertase/firestore-ios-sdk-frameworks/releases/tag/10.0.0)
...and [more](https://github.com/invertase/firestore-ios-sdk-frameworks/tags).
## License
- See [LICENSE](/LICENSE)
---
<p align="center">
<a href="https://invertase.io/?utm_source=readme&utm_medium=footer&utm_campaign=firestore-ios-sdk-frameworks">
<img width="75px" src="https://static.invertase.io/assets/invertase/invertase-rounded-avatar.png">
</a>
<p align="center">
Built and maintained by <a href="https://invertase.io/?utm_source=readme&utm_medium=footer&utm_campaign=firestore-ios-sdk-frameworks">Invertase</a>.
</p>
</p>
", Assign "at most 3 tags" to the expected json: {"id":"7395","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"