facebook-ios-sdk

Changelog

All notable changes to this project are documented in this file.

This project adheres to Semantic Versioning.

:warning: Be Advised :warning:
<p>We have begun rewriting the iOS SDK in Swift in order to modernize the code base.</p><p>Please monitor the changelog for updates to existing interfaces but keep in mind that some interfaces will be unstable during this process. As such, updating to a minor version may introduce compilation issues related to language interoperability.</p>Please bear with us as we work towards providing an improved experience for integrating with the Facebook platform.

Unreleased

Full Changelog

18.0.0

Added

2025-01-10 | Full Changelog

17.4.0

Updated

2024-10-17 | Full Changelog

17.3.0

Fixed

Changed

2024-09-27 | Full Changelog

17.1.0

Fixed

2024-09-02 | Full Changelog

17.0.3

Fixed

2024-08-02 | Full Changelog

17.0.2

Fixed

2024-05-22 | Full Changelog

17.0.1

Updated

2024-04-26 | Full Changelog

17.0.0

Added

2024-02-16 | Full Changelog

16.4.0

Added

2024-01-31 | Full Changelog

16.3.1

2023-12-07 | Full Changelog

16.2.1

2023-10-12 | Full Changelog

16.2.0

Changed

2023-09-21 | Full Changelog

16.1.3

2023-07-10 | Full Changelog

16.1.2

2023-06-23 | Full Changelog

16.1.1

Fixed

2023-06-13 | Full Changelog

16.1.0

Fixed

2023-04-21 | Full Changelog

16.0.1

Changed

2023-03-22 | Full Changelog

16.0.0

Added

2023-02-02 | Full Changelog

15.1.0

Changed

Deprecated

Renamed

Removed

Fixed

2022-10-24 | Full Changelog

15.0.0

Changed

Deprecated

Removed

Improved

2022-09-19 | Full Changelog

14.1.0

Fixed

Added

2022-06-28 | Full Changelog

14.0.0

Removed

Changed

2022-06-03 | Full Changelog

13.2.0

Fixed

2022-04-15 | Full Changelog

13.1.0

2022-03-14 | Full Changelog

13.0.0

Notable Changes

Supported platform versions have been updated

The minimum supported version of iOS is now 11.0 for all frameworks. The minimum supported version of tvOS is now 11.0 for all frameworks. The XCFramework binaries are now built with Xcode 13 so Xcode 12 is no longer supported.

Client Tokens are now required

Starting with the v13.0 release, client tokens must be included in apps for Graph API calls. An exception is now raised when running apps without a client token. See the instructions for more information.

Swift conversions

A number of types have been converted from Objective-C to Swift. As a consequence, developers may need to use modular import statements when using GamingServicesKit and a majority of ShareKit in order to avoid encountering compilation errors in Objective-C.

// When importing a framework in this form:
#import <FBSDKShareKit/FBSDKShareKit.h>

// You may be need to update to this form when unknown symbol warnings appear:
@import FBSDKShareKit;

Reduced use of Objective-C value-type practices

We have further reduced the use of Objective-C value-type practices in ShareKit. ShareKit content types will no longer implement the following behaviors:

Additional strong typing of app event reporting methods

More app event reporting interfaces now use formal app event names and parameter names. Developers working in Swift code are required to use AppEvents.Name and AppEvents.ParameterName instances to represent app event names and app event parameter names, respectively.

The example below works without changes in Objective-C:

NSDictionary<NSString *, id> *parameters = @{
  FBSDKAppEventParameterNameNumItems: @5,
  @"custom_parameter": @"special info"
};

[FBSDKAppEvents logEvent:FBSDKAppEventNamePurchased
              parameters:parameters];

This next example is how it would look in Swift for an updated API:

let parameters: [AppEvents.ParameterName: Any] = [
  .numItems: 5,
  .init("custom_parameter"): "special info"
]

AppEvents.logEvent(.purchased, parameters: parameters)

Changed

Deprecated

Moved

A few types have been moved from FBSDKShareKit to FBSDKGamingServicesKit. If you were using any of these you will have to add @import FBSDKGamingServicesKit in order to access these:

Removed

AppEvents deprecations

Use AppEvents.shared in places where AppEvents was used before. (Many class methods and properties in AppEvents have been deprecated in favor of their instance-based equivalents.)

Settings deprecations

Use Settings.shared in places where Settings was used before. (Many class methods and properties in FBSDKSettings have been deprecated in favor of their instance-based equivalents.)

2022-02-15 | Full Changelog

12.3.2

This release contains various fixes for FBAEMKit

Fixed

2022-02-07 | Full Changelog

12.3.1

Fixed

2022-01-19 | Full Changelog

12.3.0

Added

Removed

Deprecated

2022-01-06 | Full Changelog

12.2.1

Fixed

2021-12-08 | Full Changelog

12.2.0

Note: There is a known issue with using the ObjC linker flag with this version. We are working on a patch fix. If you rely on the ObjC linker flag, you will want to wait for the patch fix before upgrading.

Updated

Fixed

Deprecated

2021-12-01 | Full Changelog

12.1.0

Changed

Fixed

Deprecated

2021-10-26 | Full Changelog

12.0.2

2021-10-16 | Full Changelog

12.0.1

Note: Binaries for v12.0.1 were built with Xcode 13 and will not work with Xcode 12. See #1911. Use release v12.0.2 instead.

2021-10-15 | Full Changelog

12.0.0

Starting with version 12.0.0, CocoaPods and Swift Package Manager (SPM) are vending pre-built XCFrameworks. You no longer need to build the SDK when using CocoaPods or SPM, which should save you between a few seconds and a few minutes per build.

Because XCFrameworks do not allow embedded frameworks, note the following:

You can no longer build from source using Carthage. Instead use Carthage to obtain the pre-built XCFrameworks. For instructions, see: https://github.com/Carthage/Carthage#migrating-a-project-from-framework-bundles-to-xcframeworks.

For more details, see https://developers.facebook.com/docs/ios/getting-started.

🚨 IMPORTANT 🚨

Changes to FBSDKLoginButton when defined in a Storyboard or XIB file: There is a known issue with using XCFrameworks in conjunction with Storyboard or XIB files. If you do not follow the instructions for using Interface Builder at https://developers.facebook.com/docs/facebook-login/ios/advanced/, FBSDKLoginButton does not load or decorate correctly. Add [FBSDKLoginButton class] to application:didFinishLaunchingWithOptions: so that the Storyboard can find it. If you don’t, any methods that you call on it may result in a runtime crash.

Changes in Version 12.0.0

The following table contains changes to the iOS SDK in version 12.0.0.

Removed or Changed Version 12.0.0 Replacement or Change
AccessToken convenience initializers that include graphDomain
AccessToken.graphDomain class property. AccessToken.graphDomain instance property.
AccessToken.refreshCurrentAccessToken(completionHandler:) AccessToken.refreshCurrentAccessToken(completion:)
AppEvents.activateApp class method. AppEvents.activateApp instance method that you access on the AppEvents.shared instance.
FBSDKGraphErrorRecoveryProcessor - you can no longer create new instances without using designated initializers.
GamingContext.type
GamingImageUploader.uploadImage(configuration:andResultCompletionHandler:) GamingImageUploader.uploadImage(configuration:andResultCompletion:)
GamingImageUploader.uploadImage(configuration:completionHandler:andProgressHandler:) GamingImageUploader.uploadImage(configuration:completion:andProgressHandler:)
GamingPayload.gameRequestID You can obtain the game request ID from GamingPayloadDelegate.parsedGameRequestURLContaining(_:gameRequestID:)
GamingPayloadDelegate.updatedURLContaining(_:) GamingPayloadDelegate.parsedGameRequestURLContaining(_:gameRequestID:)
GamingPayloadObserver.shared You must now create instances of this object by using a delegate.
GamingServiceResultCompletionHandler GamingServiceResultCompletion
GamingVideoUploader.uploadVideo(configuration:andResultCompletionHandler:) GamingVideoUploader.uploadVideo(configuration:andResultCompletion:)
GamingVideoUploader.uploadVideo(configuration:completionHandler:andProgressHandler:) GamingVideoUploader.uploadVideo(configuration:completion:andProgressHandler:)
GraphRequest.start(completionHandler:) GraphRequest.start(completion:)
GraphRequestBlock GraphRequestCompletion
GraphRequestConnection.add(_:completionHandler:) GraphRequestConnection.add(_:completion:)
GraphRequestConnection.add(_:batchEntryName:completionHandler:) GraphRequestConnection.add(_:name:completion:)
GraphRequestConnection.add(_:batchParameters:completionHandler:) GraphRequestConnection.add(_:parameters:completion:)

2021-09-27 | Full Changelog

11.2.1

Fixed

2021-09-16 | Full Changelog

11.2.0

Added

Fixed

2021-08-30 | Full Changelog

11.1.0

Added

Changed

Deprecated

Fixed

2021-07-23 | Full Changelog

11.0.1

Added

Changed

Fixed

2021-06-22 | Full Changelog

11.0.0

ATTENTION: The Platform SDK v11.0 release introduces a few key changes to how dependencies will be managed moving forward. These changes are being implemented to drive more efficiency in our development process and reduce an over-reliance on singletons and tight coupling.. As part of these changes, we are currently in the process of converting existing types to use injected dependencies. As a result, many types will no longer be usable until the SDK is initialized. In order to ensure that types are configured correctly before being used, you will need to call FBSDKApplicationDelegate.application:didFinishLaunchingWithOptions: first before attempting to (i) get or set any properties, or (ii) invoke any methods on the SDK.

The source code has been updated to include reminders in the form of exceptions in DEBUG builds across several locations. These reminders will serve as pointers for Developers to call FBSDKApplicationDelegate.application:didFinishLaunchingWithOptions: before using the SDK. For more information see: https://github.com/facebook/facebook-ios-sdk/issues/1763.

Added

Deprecated

Removed

2021-06-01 | Full Changelog

10.0.0 (Release Skipped)

NOT RELEASED

Reason: The SDK is primarily a means of interacting with the Graph API. The decision was made to skip this version in order to maintain major version parity. Since Graph API is on v11, it did not make sense to release a v10 then immediately release a v11.

9.3.0

Important

Performance Improvements

Added

Fixed

2021-04-25 | Full Changelog

9.2.0

Added

Fixed

Performance Improvements

Bug Fixes

Deprecated

Removed

2021-04-06 | Full Changelog

9.1.0

Added

Fixed

Deprecated

Removed

2021-02-25 | Full Changelog

9.0.1

Added

Fixed

2021-02-02 | Full Changelog

9.0.0

We have a number of exciting changes in this release! For more information on the v9 release please read our associated blog post!

Added

Changed

Removed

Fixed

2021-01-05 | Full Changelog

8.2.0

Changed

2020-11-10 | Full Changelog

8.1.0

Added

Changed

Fixed

2020-10-23 | Full Changelog

8.0.0

Added

Changed

Deprecated

Fixed / Patched

2020-09-22 | Full Changelog

7.1.1

Fixed

2020-06-25 | Full Changelog

7.1.0

Added

Deprecated

2020-06-23 | Full Changelog

7.0.1

🚨🚨🚨Attention! 🚨🚨🚨

This release fixes the ability to parse bad server configuration data. Please upgrade to at least this version to help avoid major outtages such as #1374 and #1427

Added

Fixed

Changed

Deprecated

2020-06-08 | Full Changelog

7.0.0

Changed

This primarily matters for how you include CocoaPods

Distribution Channel Old way New Way
CocoaPods pod 'FBSDKCoreKit/Swift' pod 'FBSDKCoreKit'
Swift Package Manager No change No change
Carthage No change No change

Deprecated

2020-05-05 | Full Changelog

6.5.2

2020-04-29 | Full Changelog

6.5.1

Fixed

2020-04-23 | Full Changelog

6.5.0

Added

2020-04-20 | Full Changelog

6.4.0

Added

FBSDKMessageDialog now accepts FBSDKSharePhotoContent.

FBSDKGamingServicesKit/FBSDKGamingImageUploader.h uploadImageWithConfiguration:andResultCompletionHandler: uploadImageWithConfiguration:completionHandler:andProgressHandler:

FBSDKGamingServicesKit/FBSDKGamingVideoUploader.h uploadVideoWithConfiguration:andResultCompletionHandler: uploadVideoWithConfiguration:completionHandler:andProgressHandler:

Deprecated

FBSDKGamingServicesKit/FBSDKGamingImageUploader.h uploadImageWithConfiguration:andCompletionHandler:

FBSDKGamingServicesKit/FBSDKGamingVideoUploader.h uploadVideoWithConfiguration:andCompletionHandler:

2020-03-25 | Full Changelog

Changed

Various bug fixes, CI improvements

6.3.0

Added

2020-03-25 | Full Changelog

6.2.0

Added

2020-03-09 | Full Changelog

6.0.0

Updated

Fixed

Removed

ShareKit

CoreKit

LoginKit

2020-02-03 | Full Changelog

5.15.1

Fixed

2020-01-28 | Full Changelog

5.15.0

Fixed

2020-01-21 | Full Changelog

5.14.0

Added

Fixed

2020-01-14 | Full Changelog

5.13.1

Fixed

2019-12-16 | Full Changelog

5.13.0

2019-12-11 | Full Changelog

Added

Fixed

5.12.0

Changed

2019-12-03 | Full Changelog

5.11.1

2019-11-19 | Full Changelog

Fixed

5.11.0

2019-11-14 | Full Changelog

Added

5.10.1

2019-11-12 | Full Changelog

Fixed

5.10.0

2019-11-06 | Full Changelog

Added

5.9.0

2019-10-29 | Full Changelog

Changed

5.8.0

2019-10-08 | Full Changelog

Added

5.7.0

2019-09-30 | Full Changelog

Changed

Fixed

5.6.0

2019-09-13 | Full Changelog

Changed

Fixed

5.5.0

2019-08-30 | Full Changelog

Changed

Fixed

5.4.1

2019-08-21 | Full Changelog

Changed

Fixed

5.4.0

2019-08-15 | Full Changelog

Changed

5.3.0

2019-07-29 | Full Changelog

Changed

5.2.3

2019-07-15 | Full Changelog

Fixed

5.2.2

2019-07-14 | Full Changelog

Fixed

5.2.1

2019-07-02 | Full Changelog

Fixed

5.2.0

2019-06-30 | Full Changelog

Fixed

5.1.1

2019-06-22 | Full Changelog

5.1.0

2019-06-21 | Full Changelog

5.0.2

2019-06-05 | Full Changelog

Fixed

5.0.1

2019-05-21 | Full Changelog

Fixed

5.0.0

2019-04-30 | Full Changelog

Added

Changed

Added

Changed

Deprecated

Removed

Fixed

5.X Upgrade Guide

All Developers

ObjC Developers

Swift Developers

// Custom extensions
public extension AccessToken {
  var permissions: Set<String> {
    return Set(__permissions)
  }
}

extension AppEvents.Name {
  static let customAppEvent = AppEvents.Name("custom_app_event")
}

extension ShareDialog.Mode: CustomStringConvertible {
  public var description: String {
    return __NSStringFromFBSDKShareDialogMode(self)
  }
}

// Later in code
let perms: Set<String> = AccessToken(...).permissions

let event: AppEvents.Name = .customAppEvent

let mode: ShareDialog.Mode = .native
let description: String = "\(mode)"

4.44.1

2019-04-11 | Full Changelog

Fixed

4.44.0

2019-04-02 | Full Changelog

Added

Fixed

4.43.0

2019-04-01 | Full Changelog

Added

Deprecated

Fixed

4.42.0

2019-03-20 | Full Changelog

Changed

Fixed

4.41.2

2019-03-18 | Full Changelog

Fixed

4.41.1

2019-03-18 | Full Changelog

Fixed

4.41.0

2019-03-13 | Full Changelog

Fixed

4.40.0

2019-01-17 | Full Changelog

Fixed

4.39.1

2019-01-08 | Full Changelog | Facebook Developer Docs Changelog