Firebase iOS Release Notes
To see release notes for the Firebase console and for other Firebase platforms and related SDKs, see the Firebase Release Notes.
Version 5.17.0 - February 21, 2019
Analytics
- Sessions start immediately when an engagement occurs.
- Added support for extending sessions while app is running in the background.
Cloud Firestore
- Internal improvements to the SDK. These changes do not have any impact on developers using Cloud Firestore.
InstanceID
- InstanceID now updates keychain access control whenever a new keychain is added, to make sure keychain access won't be blocked when device is locked. (#1399).
- Fixed an issue where push notification is not working on release builds. (#2365).
FCM
- Internal code cleanup to improve better unit testing. (#2250).
Version 5.16.0 - January 22, 2019
- The minimum supported Xcode version is now 9.4.1.
- Internal change to add a
registerInternalLibrary
API. Other Firebase libraries can register withFirebaseCore
instead ofFirebaseCore
needing all of its clients' versions built in. Firebase 5.16.0 makes this transition forFirebaseAnalytics
,FirebaseAuth
,FirebaseDatabase
,FirebaseDynamicLinks
,FirebaseFirestore
,FirebaseFunctions
,FirebaseInstanceID
,FirebaseMessaging
, andFirebaseStorage
. This change has no impact on Firebase developers.
InstanceID
- Moved all keychain write operations off the main thread (#1399).
- Made keychain operations asynchronous where possible (given the current APIs).
- Updated the SDK to avoid redundant keychain operations when previously queried and cached.
Cloud Firestore
- Breaking change: The
areTimestampsInSnapshotsEnabled
setting is now enabled by default. Timestamp fields that read from aFIRDocumentSnapshot
are now returned asFIRTimestamp
objects instead ofNSDate
objects. Update any code that expects to receive aNSDate
object. See the reference documentation for more details. - Breaking change:
FIRTransaction.getDocument()
has been changed to return a non-nil FIRDocumentSnapshot with exists equal to false if the document does not exist (instead of returning a nilFIRDocumentSnapshot
). Code that includesif (snapshot) { ... }
must be changed toif (snapshot.exists) { ... }
. - Fixed a crash that could happen when the app is shut down after a write has been sent to the server but before it has been received on a listener (#2237).
- Firestore no longer bundles a copy of the gRPC certificates, now
that the gRPC-C++ CocoaPod includes them. CocoaPods users should be updated
automatically. Carthage users should follow the updated
instructions
to get
gRPCCertificates.bundle
from the correct location.
ML Kit
- Added support for Natural Language and Language Identification. To learn more, read ML Kit for Firebase.
- Breaking change: Unified and enhanced on-device and cloud image-labeling API.
- Added the
ModelManager
class for downloading and managing custom models from the cloud. - Added the
CloudModelSource
andLocalModelSource
classes for defining and registering custom cloud and local models. These classes were previously defined inFirebaseMLModelInterpreter
. - Defined and registered
CloudModelSource
and moved theLocalModelSource
custom models toFirebaseMLCommon
. To use the new API, import theFirebaseMLCommon
module. - Upgraded the TensorFlowLite dependency from 1.10.1 to 1.12.0.
Version 5.15.0 - December 17, 2018
Authentication
- Add support for Game Center sign-in (#2127).
Cloud Firestore
- Offline persistence now properly records schema downgrades. This is a forward-looking change that allows all subsequent versions to safely downgrade to this version. Some other versions might be safe to downgrade to, if you can determine there haven't been any schema migrations between them. For example, downgrading from v0.16.1 to v0.15.0 is safe because there have been no schema changes between these releases.
- Fixed an issue where gRPC would crash if shut down multiple times (#2146).
Performance Monitoring
- Resolved an issue that caused crashes in
FPRScreenTraceTracker
(#1986). - Fixed duplicate symbols issue with
NearbyMessages
CocoaPod (#2094).
Version 5.14.0 - December 4, 2018
Analytics
- Updated names for certain internal events and parameters.
- The FirebaseAnalytics CocoaPod corrects its dependency on the
GoogleAppMeasurement
CocoaPod (#2151).
Authentication
- Add support for custom FDL domain links (#2121).
Dynamic Links
- Introduced a new
componentsWithLink:domainURIPrefix:
and deprecated the existingcomponentsWithLink:domain:
(#1962, #2017, #2078, #2097, #2112).
Cloud Firestore
- Added a garbage collection process to on-disk persistence that
removes older documents. This is enabled by default, and the SDK will attempt
to periodically clean up older, unused documents once the on-disk cache passes
a threshold size (default: 100 MB). This threshold can be configured by
setting
FIRFirestoreSettings.cacheSizeBytes
. It must be set to a minimum of 1 MB. The garbage collection process can be disabled entirely by settingFIRFirestoreSettings.cacheSizeBytes
tokFIRFirestoreCacheSizeUnlimited
.
Version 5.13.0 - November 20, 2018
Cloud Firestore
- Changed how the SDK handles locally updated documents while
syncing those updates with Cloud Firestore servers. This can lead to slight
behavior changes and may affect the
SnapshotMetadata.hasPendingWrites
metadata flag. - Eliminated superfluous update events for locally cached documents that are known to lag behind the server version. Instead, the SDK buffers these events until the client has caught up with the server.
- Moved from Objective-C gRPC framework to gRPC C++. If you're manually tracking dependencies, the gRPC, gRPC-ProtoRPC, and gRPC-RxLibrary frameworks have been replaced with gRPC-C++. (#1968)
Dynamic Links
- Delete deprecated source files. (#2038)
ML Kit
- Face contour detection will only return contours for the most prominent face.
- The face-tracking feature is disabled for contour-only detection
in
.fast
mode. - Resolved open issues with the FirebaseMLModelInterpreter SDK.
Version 5.12.0 - November 6, 2018
- Fixed static analysis warning for improper nil comparison. (#2034)
- Assign the default app before posting notifications. (#2024)
- Remove unnecessary notification flag. (#1993)
- Wrap diagnostics notification in collection flag check. (#1979)
Authentication
- Restore
SafariServices
framework dependency. (#2002)
Performance Monitoring
- Resolved open issues in the Performance Monitoring SDK.
Storage
- Storage operations can now be scheduled and controlled from any thread (#1302, #1388).
- Fixed an issue that prevented uploading of files with semicolons in the filename.
Cloud Firestore
- Fixed compilation in C99 and C++11 modes without GNU extensions.
Version 5.11.0 - October 24, 2018
Analytics
- Added support for dynamic audience evaluation.
Cloud Firestore
- Improvements to the SDK.
Dynamic Links
- Updated the SDK to use c99-compatible
typeof()
operator. (#1982)
InstanceID
FCM
- Fixed an issue where messages failed to be delivered to the recipient's time zone. (#1946)
Performance Monitoring
- You can now deep dive into samples of traces and network requests, or Sessions, in the Firebase console.
- The Performance Monitoring SDK now adds Remote Config as a dependency.
Remote Config
- Internal updates to support Performance Monitoring.
Version 5.10.0 - October 9, 2018
Cloud Firestore
- Some SDK errors that represent common mistakes (such as permission denied or a missing index) will automatically be logged as a warning in addition to being surfaced via the API.
FCM
- Now you can access the message ID of
FIRMessagingRemoteMessage
object. (#1861) - Add a new boolean value
useFIRMessagingDelegateForDirectMessageDelivery
if you want all your direct channel data messages to be delivered inFIRMessagingDelegate
. If you don't use the new flag, for iOS 10 and above, direct channel data messages are delivered inFIRMessagingDelegate messaging:didReceiveMessage:;
for iOS 9 and below, direct channel data messages are delivered in Apple'sAppDelegate application:didReceiveRemoteNotification:fetchCompletionHandler:
. So, if you set theuseFIRMessagingDelegateForDirectMessageDelivery
to true, direct channel data messages are delivered inFIRMessagingDelegate
across all iOS versions. (#1875) - Fixed an issue where callback was not triggered with invalid topic names. (#1880)
ML Kit
- Added support for face contour detection.
- Added synchronous face detection API
resultsInImage:error:
. - Breaking change: Renamed the asynchronous face detection API
from
detectInImage:completion:
toprocessImage:completion:
. - Breaking change: Renamed some properties and enums in
VisionFaceDetectorOptions
. - Breaking change: Removed the constant
VisionFaceDetectionMinSize
inVisionFaceDetectorOptions
. - Upgraded TensorFlowLite dependency from 0.1.7 to 1.10.1.
Remote Config
- Fixed open bugs in the Remote Config SDK.
Version 5.9.0 - September 25, 2018
Analytics
- Fixed duplicate nanopb symbols. (#1832)
Dynamic Links
- Dynamic Links is now open source and delivered as a source pod. (#1842)
Firebase In App Messaging
- Released a new open source SDK called
FirebaseInAppMessagingDisplay
that separates UI functionality out ofFirebaseInAppMessaging
, enabling custom UI implementations. - Respect fetch between wait time returned from API responses.
InstanceID
- Fixed a crash caused by
NSUserDefaults
being called on background thread.
Cloud Firestore
- Fixed an issue where the first
get()
call made after being offline could incorrectly return cached data without attempting to reach the backend. - Changed
get()
to only make 1 attempt to reach the backend before returning cached data, potentially reducing delays while offline. Previously, it would make 2 attempts, to work around a backend bug. - Fixed an issue that caused us to drop empty objects from calls to
setData(..., merge:true)
.
Version 5.8.1 - September 19, 2018
Version 5.8.0 - September 12, 2018
- Resolved most of the Xcode Analyzer issues in Firebase sources.
Analytics
- Resolved open issues with the Analytics SDK.
Cloud Firestore
- Fixed an issue where the first
get()
call made after being offline could incorrectly return cached data without attempting to reach the backend. - Changed
get()
to only make 1 attempt to reach the backend before returning cached data, potentially reducing delays while offline. Previously, it would make 2 attempts, to work around a backend bug.
Version 5.7.0 - August 28, 2018
- Clarified wording in
FirebaseAnalytics not available
log message. (#1653)
FCM
- Ensure
NSUserDefaults
is persisted properly before app close. (#1646) - Internal code cleanup. (#1666)
Storage
- Fixed potential
EXC_BAD_ACCESS
violation in the internal logic for processing finished downloads. (#1565, #1747)
Cloud Firestore
- Fixed an issue where changes to custom authentication claims did not take effect until you did a full sign-out and sign-in. (#1499)
- Improved how Firestore handles idle queries to reduce the cost of re-listening within 30 minutes.
AdMob
- Native ads:
GADNativeAppInstallAd
,GADNativeContentAd
, and associated APIs are deprecated in favor ofGADUnifiedNativeAd
. See the Native Ads Advanced Unified guide for further instructions on using the new APIs. - Native Ads: Added the "Mute This Ad" feature.
- Native Ads: Fixed a bug where AdChoices view was removed when reusing ad views in collection views.
- Added the
requestConfiguration
property toGADMobileAds
, which can be used to specifymaxAdContentRating
andtagForUserOfConsent
parameters for all ad requests. Mediation: Added
maxAdContentRating
andunderAgeOfConsent
properties toGADMediationAdRequest
.
Version 5.6.0 - August 15, 2018
- The minimum supported Xcode version is now 9.2.
Analytics
- Fixed memory leaks. (#1636)
Crash Reporting
- Updates to the SDK documentation to reflect deprecation status.
Cloud Firestore
- Fixed an issue where
get(source:.Cache
) could throw an "unrecognized selector" error if the SDK has previously cached the non-existence of the document. (#1632)
Firebase In App Messaging
- Firebase In App Messaging is now available in the Firebase SDK for iOS. For more information, see the documentation.
InstanceID
- Fixed an issue with checkin not caching properly on app start. (#1561)
Performance Monitoring
- Reduced bandwidth consumption used by the SDK.
Version 5.5.0 - August 2, 2018
- Added a global data collection flag to use when individual product flags are not set. (#1583)
- Renamed the
FirebaseNanoPB
framework toMeasurementNanoPB
. If you use the framework SDK zip, make sure to remove theFirebaseNanoPB
framework folder to prevent duplicate symbols.
Analytics
- Added currency code validation for CURRENCY parameter and numeric value of pre-defined currency-related events.
- Resolved
NSUserDefaults
crashes caused by notifications to the system whenever the values were changed and UI updates initiated by the system in the background. (#1317 and #431)
Authentication
- Adds
FIRAuthErrorCodeMalformedJWT
, which is raised on JWT token parsing failures during auth operations (#1436).
Crash Reporting
- Added conformance to Firebase global data collection switch.
Dynamic Links
- Resolved open issues with Dynamic Links.
InstanceID
- Added support for global Firebase data collection flag. (#1219)
- Improved message tracking sent by server API.
- Fixed an issue with InstanceID not properly compiling in app extensions.
FCM
- Added support for global Firebase data collection flag. (#1219)
- Fixed an issue where FCM wouldn't properly unswizzle swizzled delegate methods. (#1481)
- Resolved an issue with FCM not compiling inside app extensions. (#1503)
Performance Monitoring
- Resolved SDK crashes.
- Added dependency on open-source version of the
GoogleUtilities/Swizzler
library. - Added conformance to Firebase global data collection switch.
Remote Config
- Fixed a memory leak bug. (#488)
Cloud Firestore
- Added
FieldValue.arrayUnion()
andFieldValue.arrayRemove()
to atomically add and remove elements from an array field in a document. - Added
whereField(arrayContains:)
query filter to find documents where an array field contains a specific element. - Fixed compilation with older Xcode versions (#1517).
- Fixed a performance issue where large write batches with hundreds of changes would take a long time to read and write and consume excessive memory. Large write batches should now see no penalty.
- Fixed a performance issue where adding a listener for a large collection (thousands of documents) would take a long time in offline mode (#1477).
- Fixed an issue that could cause deleted documents to momentarily re-appear in the results of a listener, causing a flicker. (#1591)
ML Kit
- This is a breaking change. Unified and enhanced on-device and cloud text recognition API.
- This is a breaking change. Enhanced cloud document scanning API.
Version 5.4.1 - July 20, 2018
Cloud Firestore
- Fixed an issue where queries returned fewer results than they should, caused by documents that were cached as deleted when they should not have been. (#1548).
Version 5.4.0 - June 29, 2018
Authentication
- Resolved an issue with parsing JWT date timestamps correctly.
- Fixed an issue where anonymous accounts weren't correctly promoted to non-anonymous when linked with passwordless email auth accounts.
- Fixed a data race issue caught by the sanitizer.
Cloud Firestore
- Internal improvements.
Cloud Functions for Firebase Client SDK
- Add a constructor to set the region.
- Add a method to set a Cloud Functions emulator origin to use, for testing.
FCM
- Client now properly suspends topic requests when a token is not available and resumes the topic operation when the token is generated.
- Corrected the deprecation warning when subscribing to or unsubscribing from an invalid topic.
- Removed unused heartbeat timestamp tracking.
Realtime Database
- Fixed undefined behavior sanitizer issues.
Version 5.3.0 - Jun 20, 2018
- Fixed a thread sanitizer error (#1390).
- Updated FirebaseCore.podspec so that it works with cocoapods-packager. (#1378).
InstanceID
- Ensure the checkin and tokens are refreshed if the Firebase project changed.
- Resolved an issue that required checkin to be turned off when the
FCM
autoInitEnabled
flag is off.
Cloud Firestore
-
setData
methods takingmergeFields:
arguments can now delete fields usingFieldValue.delete()
. - Firestore will now recover from auth token expiration when the system clock is wrong.
- Fixed compilation with older Xcode versions (#1366).
ML Kit
-
isIdleRequired
inModelDownloadConditions
has been renamed tocanDownloadInBackground
. Its initializer has also been renamed accordingly. - Direct initialization of certain detectors and model interpreter is no longer allowed. Related class methods should be used instead.
- Fixed memory leaks in continuous detection of face, text, barcode, or label.
- Fixed a crash that returned the following error: "Terminating app
due to uncaught exception
NSGenericException
, reason: 'Completion handler blocks are not supported in background sessions. Use a delegate instead.'" - Fixed
VisonBarcodeDetector
signalSIGABRT
while scanning certain QR codes. - Keeping a strong reference of
VisionTextDetector
during detection is no longer necessary.
Performance Monitoring
- Resolved issue with crashing related to screen traces.
- Improved SDK startup time.
- Resolved
AVAssetDownloadTask
crashes.
Version 5.2.0 - Jun 6, 2018
Authentication
- Restore 4.x level of support for extensions.
Instance ID
- Added a new API to fetch InstanceID and Token with a completion handler. The completion handler returns a FIRInstanceIDResult with an instanceID and token properties.
- Deprecated the token method.
- Added support to log a new customized label provided by developer.
Cloud Firestore
- Internal improvements.
FCM
- Added a warning message when subscribing to topics with incorrect name formats.
- Silenced a deprecation warning in FIRMessaging.
Version 5.1.0 - May 29, 2018
Analytics
- Added subscription parameter for autorenewable and non-renewing subscription In-app Purchases.
- Minor bug fixes.
Realtime Database
- Minor bug fixes.
Dynamic Links
- Fixed issue where opens were double counted when using unique match.
Cloud Firestore
- Fixed an issue where FirestoreSettings would accept a concurrent dispatch queue, but this configuration would trigger an assertion failure. Passing a concurrent dispatch queue should now work correctly (#988).
FCM
- Cleaned up some deprecation warnings.
Version 5.0.1 - May 15, 2018
Firebase v5.0.1 contains bugfixes for the Firebase pod and ZIP file.
- Duplicate symbol issue when building with
-all_load
. - Empty
modulemap
for SDKs in the ZIP file.
Version 5.0.0 - May 8, 2018
Firebase v5.0.0 removes support for iOS 7 and building with Xcode 7. Please use
Xcode 8.0 or later and upgrade your app's minimum target to iOS 8 or above, for
example by adding "platform :ios, '8.0'
to your Podfile
. To see the
breakdown of worldwide iOS versions, go to
Apple's App Store support page.
Changes related to CocoaPods:
- Ensure
Firebase/Core
is included in your Podfile. - The minimum CocoaPods version required is now 1.4.0.
- The Authentication, Realtime Database, Core, Cloud Firestore, Cloud Functions for Firebase Client SDK, FCM, and Storage SDKs are now Source Pods. This means you can directly see the source code in your project and see the full call stack while debugging.
Firebase Core
- Removed deprecated methods.
- Removed UIKit import from FIRApp.h.
A/B Testing
- Firebase A/B Testing is now available for managing your experiments. For more information, see the documentation.
Analytics
- Minor bug fixes.
Authentication
- Added support for testing phone number authentication. For more information, see Test with whitelisted phone numbers.
- Added
FIRAuthDataResultCallback
, which returns anAuthDataResult
object instead of aUser
object after sign-in. This replacesFIRAuthResultCallback
for the following methods:signInWithEmail:
,signInwithCredential:
,signInAnonymouslyWithCompletion:
, andcreateUserWithEmail:
. - The following methods have been deprecated:
signAndRetrieveDataWithEmail:
,signInAndRetrieveDataWithCredential:
, andsignInAndRetrieveDataAnonymouslyWithCompletion:
Crash Reporting
- The Crash Reporting APIs are now deprecated. New projects should use the Crashlytics APIs.
Realtime Database
- Minor bug fixes.
Dynamic Links
- The shared instance of
FIRDynamicLinks
is no longer nullable. - Removed deprecated
FIRDynamicLinkMatchConfidence
property. This is replaced byFIRDLMatchType
.
Instance ID
- Removed deprecated method
setAPNSToken:type
defined in FIRInstanceID, please usesetAPNSToken:type
defined in FIRMessaging instead. - Removed deprecated enum
FIRInstanceIDAPNSTokenType
defined in FIRInstanceID, please useFIRMessagingAPNSTokenType
defined in FIRMessaging instead. - Resolved an issue that FCM scheduled messages were not tracked successfully.
FCM
- Removed deprecated delegate property
remoteMessageDelegate
, usedelegate
instead. - Removed deprecated method
messaging:didRefreshRegistrationToken:
defined inFIRMessagingDelegate
protocol, usemessaging:didReceiveRegistrationToken:
instead. - Removed deprecated method
applicationReceivedRemoteMessage:
defined inFIRMessagingDelegate
protocol, usemessaging:didReceiveMessage:
instead. - Resolved an issue that data messages were not tracked successfully.
Performance Monitoring
- Performance Monitoring has exited beta and is now generally available.
- Added automatic screen traces to report on screen rendering performance.
- Added APIs for setting, incrementing, and getting metrics.
- Deprecated the API to increment and decrement counters, use the new metrics API instead.
Remote Config
- Changed the designated initializer for
FIRRemoteConfigSettings
to return a nonnullFIRRemoteConfigSettings
object.
Storage
- Removed
downloadURLs
property on StorageMetadata. UseStorageReference.downloadURL(completion:)
to obtain a current download URL. - The maxOperationRetryTime timeout now applies to calls to StorageReference.getMetadata(completion:) and StorageReference.updateMetadata(completion:). These calls previously used the maxDownloadRetryTime and maxUploadRetryTime timeouts.
Cloud Firestore
- Replaced the
DocumentListenOptions
object with a simple boolean. Instead of callingaddSnapshotListener(options: DocumentListenOptions.includeMetadataChanges(true))
, calladdSnapshotListener(includeMetadataChanges:true)
. - Replaced the
QueryListenOptions
object with simple booleans. Instead of callingaddSnapshotListener(options: QueryListenOptions.includeQueryMetadataChanges(true) .includeDocumentMetadataChanges(true))
, calladdSnapshotListener(includeMetadataChanges:true)
. -
QuerySnapshot.documentChanges()
is now a method which optionally takesincludeMetadataChanges:true
. By default, even when listening to a query withincludeMetadataChanges:true
, metadata-only document changes are suppressed indocumentChanges()
. - Replaced the
SetOptions
object with a simple boolean. Instead of callingsetData(["a": "b"], options: SetOptions.merge())
, callsetData(["a": "b"], merge: true)
. - Replaced the
SnapshotOptions
object with direct use of theFIRServerTimestampBehavior
onDocumentSnapshot
. Instead of callingdata(SnapshotOptions.serverTimestampBehavior(.estimate))
, calldata(serverTimestampBehavior: .estimate)
. - Added ability to control whether
DocumentReference.getDocument()
andQuery.getDocuments()
should fetch from server only, cache only, or attempt server and fall back to the cache (which was the only option previously, and is now the default.) - Added new
mergeFields:(NSArray<id>*)
override forset()
which allows merging of a reduced subset of fields.
Cloud Functions for Firebase Client SDK
- Removed FIR prefix on
FIRFunctionsErrorCode
in Swift.
ML Kit
- ML Kit for Firebase is now available as a public beta. To learn more, read ML Kit for Firebase.
Known Issues
- The -all_load option linker option does not work with Firebase 5.0.0.
- There is an issue preventing the use of bitcode in some of the new ML Kit subspecs.
Version 4.13.0 - April 13, 2018
Authentication
- Resolved a crash which occurred when certain Firebase IDTokens were being parsed.
Analytics
- Added a new public method
resetAnalyticsData
to clear all Analytics data as well as reset App Instance ID. - Improved In-App Purchase report: Analytics can report accurate discounted price for introductory offer purchases.
- Other bug fixes.
Version 4.12.0 - April 10, 2018
Authentication
- Adds
getIDTokenResultWithCompletion:
andgetIDTokenResultForcingRefresh:completion:
APIs which call back with an AuthTokenResult object. The Auth token result object contains the ID token JWT string and other properties associated with the token including the decoded available payload claims. - Adds the
updateCurrentUser:completion:
API which sets the currentUser on the calling Auth instance to the provided user object. - Adds client-side validation to prevent setting
handleCodeInApp
to false when performing email-link authentication. IfhandleCodeInApp
is set to false an invalid argument exception is thrown. - Adds support for passing the deep link (which is embedded in the
sign-in link sent via email) to the
signInWithEmail:link:completion:
andisSignInWithEmailLink:
methods during an email/link sign-in flow.
FCM
- Added new methods that provide completion handlers for topic subscription and unsubscription.
Performance Monitoring
- Resolved a crash caused by a multithreading issue.
Remote Config
- Improved documentation on InstanceIDs for GDPR.
Storage
- Deprecated
downloadURLs
property onStorageMetadata
. UseStorageReference.downloadURLWithCompletion()
to obtain a current download URL.
Cloud Firestore
- Resolved a regression in the Firebase iOS SDK release 4.11.0 that
could cause
getDocument()
requests made while offline to be delayed by up to 10 seconds rather than returning from cache immediately. - Added a new Timestamp class to represent timestamp fields,
currently supporting up to microsecond precision. It can be passed to API
methods anywhere a system Date is currently accepted. To make
DocumentSnapshots read timestamp fields back as Timestamps instead of Dates,
you can set the newly added property
areTimestampsInSnapshotsEnabled
in FirestoreSettings totrue
. Note that the current behavior (DocumentSnapshots returning system Dates) will be removed in a future release. Using Timestamps avoids rounding errors from the system Date being stored as a floating-point value.
Version 4.11.0 - March 20, 2018
Authentication
- Adds new API to determine the sign-in methods associated with an email address.
- Adds new API to allow authentication using only an email link (Passwordless Authentication with email link).
Instance ID
- Improved documentation on InstanceID usage for GDPR.
- Improved the keypair handling during GCM to FCM migration. If you are migrating from GCM to FCM, we encourage you to update to this version and above.
Cloud Firestore
- If the SDK's attempt to connect to the Cloud Firestore backend neither succeeds nor fails within 10 seconds, the SDK will consider itself "offline", causing getDocument() calls to resolve with cached results, rather than continuing to wait.
- Fixed a race condition after calling
enableNetwork()
that could result in a "Mutation batchIDs must be acknowledged in order" assertion crash. - Fixed undefined symbols in the absl namespace.
Cloud Functions for Firebase Client SDK
- This release contains the new Firebase Functions Client SDK, with support for HTTPS Callable Functions. See Call Functions from Your App.
Version 4.10.1 - March 9, 2018
Cloud Firestore
- Fixed a regression in the 4.10.0 Firebase iOS SDK release that prevented the SDK from communicating with the backend until successfully authenticating via Firebase Authentication or after unauthenticating and re-authenticating. All reads and writes were silently executed only locally rather than being sent as unauthenticated requests.
Version 4.10.0 - March 6, 2018
FirebaseCore
- This release includes updates to several services that address
issues with
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods.
Analytics
- Increased user ID max length to 256 characters.
- Added event names
level_start
andlevel_end
. - Added parameter names
level_name
andsuccess
. - Added Audience support for nested event parameters.
- Added lifetime user engagement user property.
- Resolved deadlock in Screen View Reporter.
Authentication
- Addressed
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods. - Improved
FIRUser
documentation with clear message explaining when Authentication attempts to validate users and what happens when an invalidated user is detected.
Realtime Database
- Resolved issue with loss of precision for 64 bit numbers on older 32 bit iOS devices with persistence enabled.
- Addressed
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods.
FCM
- Improved documentation on the usage of the
autoInitEnabled
property.
Performance Monitoring
- Fixed a crash related to redirection requests with
AFNetworking
.
Storage
- Addressed
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods.
Cloud Firestore
- When you delete a
FirebaseApp
, the associated Firestore instances are now also deleted. - Fixed race conditions in streams that could be exposed by rapidly toggling the network from enabled to disabled and back or encountering a failure from the server.
- Addressed
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods.
Version 4.9.0 - February 14, 2018
Authentication
- Added an explicit dependency on
CoreGraphics
from Firebase Auth.
Instance ID
- Improved support for language targeting for FCM service. Server updates happen more efficiently when language changes.
- Improved support for FCM token auto generation enable/disable functions.
FCM
- Added a new property
autoInitEnabled
to enable and disable FCM token auto generation. - Resolved an issue where notification delivery would fail after changing language settings.
Remote Config
- Improved support for language targeting. Simplied Chinese (zh_hans) and Traditional Chinese (Taiwan) (zh_TW) language targeting should be more accurate.
Cloud Firestore
- Fixed a regression in Firebase iOS release 4.8.1 that could in certain cases result in an "OnlineState should not affect limbo documents." assertion crash when the client loses its network connection.
- It's now possible to pass a nil completion block to
WriteBatch.commit
.
Version 4.8.2 - January 27, 2018
Analytics
- Fixed an issue with data collection. We have also removed version 4.8.1 to prevent usage of the SDK with the issue.
Version 4.8.1 - January 18, 2018
Analytics
- Improved the In-App Purchase report. Analytics can now detect subscription restoration or repurchase and non-consumables and can report auto-renewable and non-renewing subscriptions.
Authentication
- Resolved a bug where the
FIRAuthResult
object returned following a phone number authentication always contained a nilFIRAdditionalUserInfo
object. Now, theFIRAdditionalUserInfo
object is never nil and itsnewUser
field is populated correctly.
Realtime Database
- Now community-supported on tvOS.
Dynamic Links
- Resolved an error where fingerprint match fails for some locales.
Performance Monitoring
- Fixed several minor bugs.
Remote Config
- Resolved an issue where throttle rate drops during developer mode.
- Replaced
FIR_SWIFT_NAME
withNS_SWIFT_NAME
.
Storage
- Now community-supported on tvOS.
Cloud Firestore
- Removed the
includeMetadataChanges
property inFIRDocumentListenOptions
to avoid confusion with the factory method of the same name. - Added a commit method that takes no completion handler
to
FIRWriteBatch
. - Queries can now be created from an
NSPredicate
. - Added
SnapshotOptions
API to control howDocumentSnapshots
return unresolved server timestamps. - Added
disableNetwork()
andenableNetwork()
methods toFirestore
class, allowing for explicit network management. - For non-existing documents,
DocumentSnapshot.data()
now returns nil instead of throwing an exception. A non-nullableQueryDocumentSnapshot
is introduced forQueries
to reduce the number of nil-checks in your code. - Snapshot listeners (with the
includeMetadataChanges
option enabled) now receive an event withsnapshot.metadata.isFromCache
set totrue
if the SDK loses its connection to the backend. A new event withsnapshot.metadata.isFromCache
set tofalse
will be raised once the connection is restored and the query is in sync with the backend again. - Multiple offline mutations now properly reflected in retrieved documents. Previously, only the last mutation would be visible.
- Fixed a crash in
closeWithFinaleState:
that could be triggered by signing out when the app didn't have a network connection.
Version 4.8.0 - December 18, 2017
Realtime Database
- Internal cleanup in the firebase-ios-sdk repository. Functionality of the Realtime Database SDK is not affected.
Dynamic Links
- Resolved race condition that could occur while processing server response(s).
Instance ID
- Resolved a crash caused by a reflection call during logging.
- Updated server with the latest parameters and deprecated old ones.
Performance Monitoring
- Added API for tagging traces with custom attributes. For more information, see Monitor Custom Attributes.
- Added API for manually recording network traces. For more information, see the section Add monitoring for specific network requests in the iOS getting started guide.
- Resolved some open issues with Performance Monitoring.
Cloud Firestore
- Firestore no longer has a direct dependency on FirebaseAuth.
- Fixed a crash when using path names with international characters with persistence enabled.
- Addressed race condition during the teardown of idle streams.
Storage
- Internal cleanup in the firebase-ios-sdk repository. Functionality of the Storage SDK is not affected.
Version 4.7.0 - November 30, 2017
- Replaced the
FIR_SWIFT_NAME
macro withNS_SWIFT_NAME
.
Authentication
- Added new APIs that return an
AuthDataResult
object after successfully creating a user with an email and password, signing in anonymously, signing in with email/password credentials, and signing in with custom tokens. TheAuthDataResult
object contains the new user and additional information pertaining to the new user.
Realtime Database
- Addressed a race condition that occurred during initialization of empty snapshots.
Dynamic Links
- Added new confidence type property. See
FIRDLMatchType
(values: Unique, Default, Weak). - Updated the self-diagnostic output.
Instance ID
- Improved identity reset process, ensuring all information is reset during Identity deletion.
Cloud Firestore
- Improved performance when loading documents that match a query.
- Updated SDK to cleanly shut down idle write streams.
Performance Monitoring
- Network requests made using
NSURLConnection
are now instrumented. - Resolved some open issues with Performance Monitoring.
- Added
FirebaseSwizzlingUtilities
for optional method swizzling.
Storage
- Added
md5Hash
toFIRStorageMetadata
.
Version 4.6.0 - November 14, 2017
- Added
-FIRLoggerForceSTDERR
launch argument flag to force STDERR output for all Firebase logging.
Analytics
- Resolved open issues with Google Analytics for Firebase, including a
screen-tracking issue that loaded views of unloaded controllers and an issue
with calling
[UIApplication sharedApplication]
from a background queue.
Authentication
- Improved error handling in both the phone-number linking and reCAPTCHA flows for phone-number sign-in.
- Resolved issue with users remaining anonymous even after being linked to a phone number.
Dynamic Links
- The FDL Builder API now includes a fallback link for users on other platforms.
- Resolved open issues and improved stability in the Dynamic Links SDK.
Instance ID
- Made token refresh weekly.
- Resolved crash that occurred during token operation.
Invites
- Updated API to properly handle links to an app that is already installed.
- Resolved crashes that occurred when a selected Invite recipient had an empty name.
Cloud Firestore
- Firestore now retries requests more often before considering a client offline.
- You can now use
FieldValue.delete()
withSetOptions.merge()
.
Version 4.5.0 - October 30, 2017
- iOS 7 support in the Firebase iOS, C++, and Unity SDKs is now deprecated and will be dropped in a future release. Upgrade your apps to target iOS 8 or above. To see the breakdown of worldwide iOS versions, go to Apple’s App Store support page.
A/B Testing
- A/B Testing offers the ability to run experiments from the Firebase console using Remote Config. Learn more about creating experiments with A/B Testing for Remote Config and FCM.
Authentication
- Resolved open issues with Authentication.
Cloud Firestore
- Improved validation of nested arrays to allow indirect nesting.
Version 4.4.0 - October 17, 2017
- Fixed new warnings that appeared in Xcode 9.
Authentication
- Account creation and last sign-in dates are now provided as user metadata.
- Invalid users are now automatically signed out earlier.
- Resolved an issue with ID token listeners not firing in some cases.
- More descriptive errors for some phone number sign-in error cases.
Realtime Database
- Resolved warnings for callback types with missing argument specifications in XCode 9.
Cloud Firestore
- Changed the names for
FIRSnapshotMetadata
andFIRListenerRegistration
to better reflect Swift naming guidelines for the Swift SDK. - Fixed retain cycle in
FIRDocumentReference getDocumentWithCompletion:
.
FCM
- Improved logging of notification opens, by swizzling additional
UNUserNotificationCenterDelegate
method. - Improved the handling of unimplemented
UNUserNotificationCenterDelegate methods
, when swizzling is enabled.
Instance ID
- Improved support for working in shared Keychain environments.
Version 4.3.0 - October 3, 2017
- The initial public beta release of the Cloud Firestore SDK for iOS is now available. To learn more, see the Cloud Firestore documentation.
Analytics
- Resolved open issues with Analytics.
Authentication
- Resolved a threading issue in phone number auth.
Cloud Firestore
- The initial public beta release of the Cloud Firestore SDK for iOS is now available. To learn more, see the Cloud Firestore documentation or go directly to the Quickstart.
FCM
- Resolved issues with FCM token associations to APNs device tokens.
- The FCM direct channel is now properly established on the first start 24 hours after being opened.
Performance Monitoring
- Added infrastructure to more easily diagnose issues.
Realtime Database
- Added multi-resource support.
Version 4.2.0 - September 20, 2017
- Resolved duplicate logging issue in the Xcode console.
AdMob
- Resolved issue with banner ads loading beyond the viewable area on iOS 11.
Authentication
- Provided reCAPTCHA as an alternative verification method for phone number auth.
Crash Reporting
- Optimized power consumption.
Realtime Database
- Fixed a regression in v4.0.2 that affected the storage location of the offline cache. This caused v4.0.2 to not see data written with previous versions.
- Fixed a crash in
FIRApp deleteApp
for apps that did not have active database instances.
Instance ID
- Resolved a race condition where a token was not being generated on first start when FCM was included and the app didn’t register for remote notifications.
FCM
- Additional error code logging for errors thrown when creating or opening an internal database file.
Performance Monitoring
- Resolved symbol collisions with GoogleMobileVision.
- Resolved crash when also using Crittercism.
- Now enforcing safety limits on the number of events dispatched over a period of time.
Remote Config
- Resolved an issue with config values not updating correctly when targeted by a user property condition.
Storage
- Clear custom
FIRStorageMetadata
by setting individual properties to 'nil'.
Version 4.1.1 - August 30, 2017
AdMob
- Mediation adapters now get notified via
mediatedNativeAd:didUntrackView:
when a native ad is deallocated.
Authentication
- Improved comments on some methods in the header files.
Realtime Database
- If you try to retrieve a Realtime Database instance for a specific
FirebaseApp
on an app that was deleted, Realtime Database no longer returns a stale instance. - For unindexed queries, the error message now references bandwidth usage.
Instance ID
- Removed a call that blocked the main thread during app startup.
Cloud Messaging
- Removed logic that saved the SDK version to
NSUserDefaults
.
Performance Monitoring
- Resolved open issues with Performance Monitoring.
- Increased character name limits for traces and counters from 32 to 100. Traces and counters that exceed the name limit are not created.
Version 4.1.0 - August 14, 2017
- Incorrectly configured bundle IDs now result in error messages instead of info messages.
Analytics
- Improved startup time.
- Resolved an issue with campaign reporting that occurred when apps were opened through deep links on cold starts.
Authentication
- Apps can now handle deep links natively and set language codes, for example, for password reset emails.
- Users’ phone numbers now persist properly on clients.
- Recovery emails are now reported as the correct action code type.
- Improved app startup time by moving initialization off of the main thread.
- Improved error for missing emails during new user creation.
- Improved logging levels for Firebase Authentication to provide consistency across Firebase iOS products.
Crash Reporting
- Resolved open issues with Firebase Crash Reporting.
Realtime Database
- Realtime Database now purges the local cache if it can’t be loaded.
- Removed implicit number-type conversion for some integers that were represented as doubles after round-tripping through the server.
- Realtime Database no longer crashes when messages are sent to closed WebSocket connections.
Dynamic Links
- Added basic self-diagnostic method to identify issues in Firebase
Dynamic Links configurations:
FIRDynamicLinks performDiagnosticsWithCompletion
. - Improved
FIRDynamicLinkShortenerCompletion
warnings in the iOS Builder API.
Instance ID
- Token and app identifier are now accessible when the device is locked.
- InstanceID no longer crashes if the bundle identifier is nil.
- Fixed a small memory leak that occurred when fetching a new token.
- Improved and simplified both the token storage system and the queuing system for token fetches and deletes.
Cloud Messaging
- Fixed an issue where setting
shouldEstablishDirectChannel
in a background thread was triggering a Main Thread Sanitizer warning in Xcode 9. - Included additional error logging for method swizzling.
Remote Config
- Resolved crashes caused when an app’s main bundle ID is missing and added an error notification to alert developers of the issue.
Storage
- Fixed crash in
FIRStorageDownloadTask
that occurred whenever callbacks that are no longer active are invoked. - Added
size
to the NSDictionary representation ofFIRStorageMetadata
.
Version 4.0.4 - July 12, 2017
- Optimized nanoPB dependency.
Version 4.0.3 - June 29, 2017
- Resolved warnings in Xcode 9.
AdMob
- For interstitial ad units served on platforms that opt-out of
video ads, the interstitial ads now have an immediate close option, even if
an MRAID creative calls the
useCustomClose()
method. - Added text on the debug menu to indicate whether the creative preview or troubleshooting modes are active.
Analytics
- Fixed issues with automatic screen reporting.
Remote Config
- A warning now appears if the
plist
file you set default values from can’t be found.
Version 4.0.2 - June 08, 2017
- Fixed issues with Analytics and Performance Monitoring.
Version 4.0.1 - June 06, 2017
- Improved diagnostic messages for the Swift SDK.
Performance Monitoring
- Removed dependency on farmhash to prevent symbol collisions.
- If an exception is thrown when you create a Trace, the Trace’s name will now be printed.
Version 4.0.0 - May 17, 2017
-
FIROptions
now has a simpler constructor and mutable properties.
AdMob
- Removed the in-app purchase ad format.
- Removed support for the ARMv7s architecture.
Analytics
- Fixed an issue where
user_engagement
andsession_start
events were logged when apps were launched in the background. This addresses the related issues with inflated user engagement and session metrics.
Authentication
- Added Phone Number Authentication. To learn more, see Authenticate with Firebase on iOS using a Phone Number.
- Added methods that return additional user data from identity providers if available when authenticating users.
- Improved session management by automatically refreshing tokens when possible and signing out users if the session is invalid, for example, after the user changes their password or deletes their account from another device.
- Fixed an issue where reauthentication created new user accounts if the user credential is valid but does not match the currently signed-in user.
- Switched the
ERROR_EMAIL_ALREADY_IN_USE
notification toERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL
when the email account used in thesignInWithCredential()
method call is already in use by another account. - The
FIREmailPasswordAuthProvider()
method is now deprecated in favor of theFIREmailAuthProvider()
method. - The
getTokenWithCompletion()
method is now deprecated in favor of thegetIDTokenWithCompletion()
method.
Crash Reporting
- Added the ability to disable the Crash Reporting SDK by setting
the
crashCollectionEnabled
setting toNO
in your app'sInfo.plist
file.
Realtime Database
- Now using the external CocoaPod LevelDB library as a dependency.
Dynamic Links
- Improved pending link retrieval process, especially when custom URL schemes are not set up correctly.
Cloud Messaging
- Introduced an improved interface for Swift 3 developers.
- Added new properties and methods to simplify FCM token management.
- Added the
APNSToken
property to simplify APNs token management. - Added new delegate method to be notified of FCM token refreshes.
- Added new
shouldEstablishDirectChannel
property to simplify connecting directly to FCM.
Performance Monitoring
- The initial public beta release of the Firebase Performance Monitoring SDK for iOS is now available. To get started with this SDK, see Get Started with Firebase Performance Monitoring for iOS.
Remote Config
- The error message that was generated when getting the InstanceID has been replaced by a debug message.
Version 3.17.0 - April 25, 2017
Analytics
- Traffic sourced from Apple Search Ads is now properly attributed.
App Indexing
-
FIRAppIndexing
has been removed. To index public content in your iOS app for Google Search, follow the steps in the Firebase App Indexing documentation for iOS.
Invites
- Removed
setDescription
method fromFIRInviteBuilder
.
Dynamic Links
- Developers can now create long and short Dynamic Links programmatically with the iOS Builder API.
Version 3.16.0 - April 12, 2017
- Warnings in Xcode 8.3 no longer appearing (see Analytics).
AdMob
- Correct ad size is now forwarded to mediation networks for smart banner mediation.
Analytics
- Compiler warnings about NanoPb in Xcode 8.3 are no longer appearing.
Instance ID
- Improved token-fetching logic.
- Improved warnings, error messages, and console logging, including initialization error message.
Invites
- Improved console logging.
Dynamic Links
- Improved Xcode warnings.
- Added description for
FIRDynamicLink
object.
Cloud Messaging
- Custom
UNNotificationCenterDelegates
are swizzled properly when swizzling is enabled. - Resolved issue in iOS 8.0 and 8.1 with scheduled notifications.
- Improved console logging.
Version 3.15.0 - March 16, 2017
- Removed dependency on C++ libraries for app builds.
AdMob
- New
openInlineBrowser
method ingoogle_mobile_app_ads.js
opens URLs inSFSafariViewController
. - New
GADAudioVideoManagerDelegate
provides notifications on start and pause/stop in audio and video ad playback.
Invites
- Fixed a bundling issue that caused validation errors during submission to the App Store.
Dynamic Links
- Resolved issue causing crashes on app launch after installation for subset of users.
Version 3.14.0 - February 23, 2017
AdMob
- Added
play
,pause
andsetMute
methods toGADVideoController
to control video playback. - Added new delegate methods to
GADVideoControllerDelegate
to start, pause, end, mute and unmute video content. - Added support for rewarded video mediation adapters to opt into early initialization before an ad request is made.
Remote Config
- Remote Config gets config results from the default
FIRApp
configuration when multiple projects are configured. - Existing users no longer receive empty config results.
February 15, 2017
- Added the
mutable_content
field to FCM API. When set totrue
, a notification message can be updated on an iOS 10+ client before it is presented to the user using the Notification Service app extension. Themutable_content
field in the FCM API corresponds to themutable-content
APNs field.
Version 3.13.0 - February 14, 2017
- Added the
setLoggerLevel
method to theFIRConfiguration
class so you can specify the verbosity of Firebase messages logged to the Xcode console.
Analytics
- Added the ability to log events used to supply referral details
of a re-engagement campaign to the
FIREventNames
header and related parameters to theFIRParameterNames
header. - Added the ability to get app instance IDs using the
+appInstanceID
method in theFIRAnalytics
class.
Authentication
- Replaced
InternalError
with more descriptive error codes inFIRAuth
class:InvalidMessagePayload
,InvalidSender
, andInvalidRecipientEmail
.
Realtime Database
- Added logging when an
observeEvent
call is rejected due to security rules.
Storage
- Fixed a crash that occurred when user-provided callbacks had a
value of
nil
. - Improved upload performance on devices with intermittent connectivity.
Dynamic Links
- Long Dynamic Links can now track Google Analytics campaign ("UTM")
parameters for Google Analytics for Firebase events, including
dynamic_link_first_open
anddynamic_link_app_open
.
Version 3.12.0 - January 31, 2017
AdMob
- Added the
nativeAdDidRecordImpression
andnativeAdDidRecordClick
methods toGADNativeAdDelegate
.
Crash Reporting
- Improvements to the automation of symbol file uploads.
- Adjusted the verbosity of messages logged to the console.
Dynamic Links
- Improved the reliability of Dynamic Links when opened on iOS 9 and iOS 10 in Facebook, Facebook Messenger, Twitter, Instagram, and Gmail.
SDK Version 3.11.1 - January 17, 2017
- Reduced the verbosity of events logged by Firebase when using the Xcode debugger.
Remote Config
- When
activateFetched
is called when an app starts, it no longer removes cached fetch results. - If an app makes multiple fetch requests without calling
activateFetched
between requests, fetch requests will now cache recent updates from the Remote Config service.
SDK Version 3.11.0 - December 13, 2016
- Adds the ability to initialize
FIRNetwork
objects with either a default or custom reachability host. - Adds names to background tasks, so they can be more easily debugged in console logs.
- Properly terminates background logging tasks when the network is slow or unavailable.
AdMob
- Added a video controller to
DFPBannerView
objects. - The
GADNativeExpressAdView
,GADNativeContentAd
,GADNativeAppInstallAd
andGADNativeCustomTemplateAd
video-controller properties are nownonnull
.
Authentication
- Adds four new methods that you can use to handle action codes
that were delivered to users by email, such as verifying an email address
or resetting a password:
applyActionCode
,checkActionCode
,confirmPasswordReset
, andverifyPasswordResetCode
. - With this update, the Firebase SDK no longer applies the keychain workaround introduced in v3.0.5 for the iOS 10.2 simulator. This workaround is not needed because the underlying issue in the simulator has been fixed.
- Fixes nullability compilation warnings that were raised when using Swift.
- Improves reporting for errors caused by a missing password.
SDK Version 3.10.0 - November 21, 2016
AdMob
- In preparation for App Transport Security changes in 2017, apps should use this
version of the SDK when building apps for iOS 10, and include both the
NSAllowsArbitraryLoadsInWebContent
andNSAllowsArbitraryLoads
exceptions. Added the
GADMediaView
property to theGADNativeContentAd
andGADNativeCustomTemplateAd
classes.Analytics
Increased the maximum length of event names and parameter names to 40 characters, and the maximum length of string parameter values to 100 characters.
Crash Reporting
- Improved the automatic upload of symbol files.
Dynamic Links
- Removed a dependency on the Core Motion framework.
Invites
- Removed a dependency on the Core Motion framework.
Storage
- Snapshot data is now always returned from the requested snapshot, instead of the most recent snapshot.
- Improvements to the ability to pause downloads.
Realtime Database
- Unified the logging format.
SDK Version 3.9.0 - November 3, 2016
AdMob
- Changes to the
kGADAdSizeFluid
constant that determines the width of a banner ad no longer change the frame size of a banner ad.
SDK Version 3.8.0 - October 24, 2016
- The Firebase SDK for iOS API Reference now includes Swift 3.0 syntax, along with Objective C syntax.
Analytics
- Added screen tracking support. Each app's current
UIViewController
is automatically tracked. The current screen is tracked with thefirebase_screen_class
parameter with every logged event, which provides valuable context. In addition to automatic screen tracking, you can manually track screens using the FIRAnalytics#setScreenName:screenClass method. This adds thefirebase_screen
parameter to every event logged while those screens are visible to app users.
Realtime Database
- Reintroduced the
persistenceCacheSizeBytes
setting (previously available in the 2.x SDK) to control the disk size of the Firebase offline cache. - Use of the
updateChildValues()
method now only cancels transactions that are directly included in the updated paths (not transactions in adjacent paths). For example, an update at/move
for a child nodewalk
will cancel transactions at/
,/move
, and/move/walk
and in any child nodes under/move/walk
. But, it will no longer cancel transactions at sibling nodes, such as/move/run
.
Storage
- Fixed an issue that was preventing the upload of files with
filenames that contain the plus (
+
) character. - Fixed an issue that was causing timeouts for file uploads and downloads to behave incorrectly.
Crash Reporting
- Added support for Swift 2 and Swift 3.
- Analytics events are now sent to the Crash Reporting service as part of error reports.
Dynamic Links
- Fixed a minor issue with IPv6.
Invites
- Fixed a minor issue with IPv6.
AdMob
- Added a dependency on the
JavaScriptCore
framework.
SDK Version 3.7.1 - October 6, 2016
Analytics
- Fixed an issue that causes a crash for some apps that call
FirebaseAnalytics
. Stack traces show that the crash occurs in-[FIRAAlarm cancel]
.
SDK Version 3.7.0 - October 3, 2016
Analytics
- Analytics no longer includes the AdSupport framework. To include this framework in your app, you must add it. Note that user properties such as Age, Gender and Interests require this framework.
App Indexing
- App Indexing has been deprecated in light of recent changes to the app review guidelines for iOS. To index your app for Google search, implement Universal Links.
AdMob
- Added the
GADNativeAdViewAdOptions
method toGoogleMobileAds
to specify the location of AdChoices in native ads. - Fixed a bug that causes a crash for some apps that call
GoogleMobileAds
. Stack traces show that the crash occurs inGADStringFromCGFloat
.
SDK Version 3.6.0 - September 14, 2016
Analytics
Existing users who update to Analytics-enabled versions of an app are no longer included in
first_open
metrics. This correction could cause a drop infirst_open
metrics.Conversion events are now uploaded within seconds of being logged.
Removed the feature that attributed Ads app conversions using the
SFSafariViewController
class.
Cloud Messaging
- Added a new API method,
-applicationReceivedRemoteMessage:
to allow apps to receive data messages from FCM on devices running iOS 10 and greater.
Authentication
- Improved the behavior of Firebase Authentication when testing apps using the iOS 10 simulator.
- Fixed an issue with error reporting when a user provides an invalid email address while signing in with an email address and password.
Realtime Database
- Fixed an issue that caused transactions to fail when executed before the SDK connects to the Firebase Realtime Database service.
- Fixed a race condition where performing a transaction or adding an event observer immediately after connecting to the Firebase Realtime Database service could cause completion blocks for other operations to not be executed.
- Fixed an issue affecting apps that use offline disk persistence where large integer values could lose precision after an app restart.
Remote Config
- Fixed issues that caused a crash when an app attempts multiple concurrent fetch requests.
Dynamic Links
- Analytics events are now automatically logged when users open your app, open your app from a Dynamic Link, and open your app for the first time from a Dynamic Link.
- Dynamic Links no longer use the
SFSafariViewController
class. - Dynamic Links no longer has a dependency on the Core Location framework.
AdMob
- AdMob no longer has a dependency on the
Core Bluetooth,
EventKit, and
EventKitUI frameworks. Apps
no longer need to provide
NSBluetoothPeripheralUsageDescription
andNSCalendarsUsageDescription
keys in theirInfo.plist
file. - Removed Mobile Rich-media Ad Interface Definitions (MRAID) 2.0 support for calendars and storing pictures.
SDK Version 3.5.2 - August 26, 2016
AdMob
- Initial improvements toward fixing a bug that causes a crash for
some apps that call
GoogleMobileAds
. Stack traces show that the crash occurs inGADStringFromCGFloat
.
SDK Version 3.5.1 - August 23, 2016
Analytics
Added support for Analytics on iOS 10.
Added support for attributing AdWords app conversions from search and display web clicks on iOS 10.
Added a feature to validate the authenticity of in-app purchase events before they are reported by Google Analytics for Firebase.
Storage
- Fixed issues with iOS 7 compatibility.
- Fixed an issue that prevented
observeStatus:FIRStorageUploadTask
from correctly reporting progress when uploading a file.
App Indexing
- Added support for App Indexing on iOS 10. App Indexing still requires iOS 9 or higher.
Dynamic Links
- Added support for Dynamic Links on iOS 10.
AdMob
- When associating native ads with a view, the view’s
userInteractionEnabled
property is changed toNO
to match the value expected by the SDK. - The Google Mobile Ads SDK now has a dependency on MobileCoreServices.
- Added the
-[GADMobileAds isSDKVersionAtLeastMajor:minor:patch:]
API method to allow ad networks to determine if a device is running at least a specified minimum version (major.minor.patch
) of the Google Mobile Ads SDK.
SDK Version 3.4.0 - August 1, 2016
Authentication
- Fixed a bug that causes a race condition that could crash an app
running on iOS 9 with an exception from
NSURLSession
.
Cloud Messaging
-
plist
files used byFIRMessaging
are now stored in anApplicationSupport
directory.
Remote Config
- Fixed an issue where some attempts to fetch parameter values can cause a crash due to a JSON serialization failure.
- Added the
allKeysWithPrefix:
API method to allow developers to find parameter keys based on a key prefix.
Crash Reporting
- Fixed an error that occurred when building an app that uses a JSON file.
- Minidumps are now compressed separately to avoid automatically unzipping during processing.
- Fixed an issue that prevented batch-upload from working with files that contain non-ASCII characters.
App Indexing
- Bitcode support is now available for the App Indexing SDK for iOS.
Dynamic Links
- Fixed a bug that caused crashes when the
resolveLink()
API returns a non-JSON object.
AdMob
- Enhanced the quality of ad rendering with the addition of framework dependencies for GLKit, OpenGLES, CoreMotion, and CoreVideo.
- Added the
+[GADMobileAds configureWithApplicationID:]
method. AdMob publishers should call this method with their application ID to initialize AdMob. - Users of DoubleClick for Publishers (DFP) who use SDK mediation will
no longer see the following warning:
mediated ad type is unknown or invalid
SDK Version 3.3.0 - June 29, 2016
Analytics
- You can now attribute AdWords app conversions from search and
display web clicks on Safari using
SFSafariViewController
, an iOS API that supports data sharing between apps and the Safari browser on the same device running iOS 9.0 or higher. This lets you measure app installs and in-app actions from app promotion ads on mobile websites. This functionality is included in the Firebase SDK, and is enabled without any changes to your app's source code.
Authentication
- The bundle ID custom scheme is no longer required to support Google Sign-In.
- Minor improvements to error handling and error messages.
- User anonymity is now handled the same way for iOS as it is for other platforms.
Realtime Database
- Fixed a rare crash in
[FSRWebSocket stream:handleEvent:]
. - Improved error messages for some common mistakes configuring
FIRApp
. - Firebase now logs a warning instead of throwing an exception when your database has exceeded its concurrency limit.
Cloud Messaging
- Cloud Messaging no longer registers for remote notifications on startup.
Storage
- A new
QUOTA_EXCEEDED
error now appears when plan limits are exceeded. - Added a
state
property toFIRStorageTaskSnapshot
. - Fixed handling of
timeCreated
andupdated
properties inFIRStorageMetadata
.
The Notifications composer
- You can now add more than three custom data fields when sending a notification. A notification should not exceed 4KB total, including message text, custom data, and any advanced options.
- Reduced the refresh interval for app versions and language lists.
- The conversion event counts in the Notifications composer Google Analytics for Firebase funnel view now show the number of users who have triggered the conversion event at least once. Previously, it showed the raw number of triggered conversion events.
Dynamic Links
- Google Analytics for Firebase now logs all app open events driven from user clicks on Dynamic Links.
- Including Dynamic Links in your app now adds less than 70K
to your app's
.ipa
file, a reduction of nearly 2 MB from the previous release.