From f4bdf6bed389453a8fe2946fbedb11676537bf83 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 24 Aug 2023 17:15:35 -0400 Subject: [PATCH 01/20] [Config] Merge RemoteConfig and its Swift extension in a non-breaking way (#11720) --- FirebaseRemoteConfig.podspec | 2 ++ FirebaseRemoteConfigSwift.podspec | 3 +-- .../Exporter/Exporter.swift | 20 ++++++++++++++++++ .../Sources/Codable.swift | 19 ++++++++++++++++- ...rebaseRemoteConfigValueDecoderHelper.swift | 4 +++- .../RemoteConfigProperty.swift | 5 ++++- .../RemoteConfigValueObservable.swift | 4 +++- FirebaseRemoteConfigSwift/Sources/Value.swift | 4 +++- .../Tests/SwiftAPI/Codable.swift | 1 - .../PropertyWrapperDefaultConfigsTests.swift | 2 +- .../Tests/SwiftAPI/PropertyWrapperTests.swift | 2 +- .../Tests/SwiftAPI/Value.swift | 1 - Package.swift | 21 +++++++++++++------ 13 files changed, 71 insertions(+), 17 deletions(-) create mode 100644 FirebaseRemoteConfigSwift/Exporter/Exporter.swift diff --git a/FirebaseRemoteConfig.podspec b/FirebaseRemoteConfig.podspec index 981c1d151a7..6a8282b7f3c 100644 --- a/FirebaseRemoteConfig.podspec +++ b/FirebaseRemoteConfig.podspec @@ -40,6 +40,7 @@ app update. 'FirebaseABTesting/Sources/Private/*.h', 'FirebaseCore/Extension/*.h', 'FirebaseInstallations/Source/Library/Private/*.h', + 'FirebaseRemoteConfigSwift/Sources/**/*.swift', ] s.public_header_files = base_dir + 'Public/FirebaseRemoteConfig/*.h' s.pod_target_xcconfig = { @@ -47,6 +48,7 @@ app update. 'HEADER_SEARCH_PATHS' => '"${PODS_TARGET_SRCROOT}"' } s.dependency 'FirebaseABTesting', '~> 10.0' + s.dependency 'FirebaseSharedSwift', '~> 10.0' s.dependency 'FirebaseCore', '~> 10.0' s.dependency 'FirebaseInstallations', '~> 10.0' s.dependency 'GoogleUtilities/Environment', '~> 7.8' diff --git a/FirebaseRemoteConfigSwift.podspec b/FirebaseRemoteConfigSwift.podspec index b671ed16ea0..10f128c71ea 100644 --- a/FirebaseRemoteConfigSwift.podspec +++ b/FirebaseRemoteConfigSwift.podspec @@ -35,12 +35,11 @@ app update. s.prefix_header_file = false s.source_files = [ - 'FirebaseRemoteConfigSwift/Sources/**/*.swift', + 'FirebaseRemoteConfigSwift/Exporter/**/*.swift', ] s.dependency 'FirebaseCore', '~> 10.0' s.dependency 'FirebaseRemoteConfig', '~> 10.0' - s.dependency 'FirebaseSharedSwift', '~> 10.0' # Run Swift API tests on a real backend. s.test_spec 'swift-api-tests' do |swift_api| diff --git a/FirebaseRemoteConfigSwift/Exporter/Exporter.swift b/FirebaseRemoteConfigSwift/Exporter/Exporter.swift new file mode 100644 index 00000000000..75ad4156099 --- /dev/null +++ b/FirebaseRemoteConfigSwift/Exporter/Exporter.swift @@ -0,0 +1,20 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// TODO(ncooke3): Add warning that importing this extension is deprecated. + +// The `@_exported` is needed to prevent breaking clients that are using +// types prefixed with the `FirebaseRemoteConfigSwift` module name (e.g. +// `FirebaseRemoteConfigSwift.RemoteConfigValueCodableError`). +@_exported import FirebaseRemoteConfig diff --git a/FirebaseRemoteConfigSwift/Sources/Codable.swift b/FirebaseRemoteConfigSwift/Sources/Codable.swift index 193ebf17fe2..68a62083aad 100644 --- a/FirebaseRemoteConfigSwift/Sources/Codable.swift +++ b/FirebaseRemoteConfigSwift/Sources/Codable.swift @@ -15,9 +15,26 @@ */ import Foundation -import FirebaseRemoteConfig +#if SWIFT_PACKAGE + @_exported import FirebaseRemoteConfigInternal +#endif // SWIFT_PACKAGE import FirebaseSharedSwift +#if SWIFT_PACKAGE + // This is a trick to force generate a `FirebaseRemoteConfig-Swift.h` header + // that re-exports `FirebaseRemoteConfigInternal` for Objective-C clients. It + // is important for the below code to reference a Remote Config symbol defined + // in Objective-C as that will import the symbol's module + // (`FirebaseRemoteConfigInternal`) in the generated header. This allows + // Objective-C clients to import Remote Config's Objective-C API using + // `@import FirebaseRemoteConfig;`. This API is not needed for Swift clients + // and is therefore hidden for them for the foreseeable future. + @available(iOS 100, *) + @objc public extension RemoteConfig { + var __do_not_call: String { "" } + } +#endif // SWIFT_PACKAGE + public enum RemoteConfigValueCodableError: Error { case unsupportedType(String) } diff --git a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigValueDecoderHelper.swift b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigValueDecoderHelper.swift index 2a7b79a135e..d0cea378995 100644 --- a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigValueDecoderHelper.swift +++ b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigValueDecoderHelper.swift @@ -15,7 +15,9 @@ */ import Foundation -import FirebaseRemoteConfig +#if SWIFT_PACKAGE + @_exported import FirebaseRemoteConfigInternal +#endif // SWIFT_PACKAGE import FirebaseSharedSwift /// Implement the FirebaseRemoteConfigValueDecoding protocol for the shared Firebase decoder to diff --git a/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigProperty.swift b/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigProperty.swift index 0df0e71bac8..05d1df52303 100644 --- a/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigProperty.swift +++ b/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigProperty.swift @@ -14,7 +14,10 @@ * limitations under the License. */ -import FirebaseRemoteConfig +#if SWIFT_PACKAGE + @_exported import FirebaseRemoteConfigInternal +#endif // SWIFT_PACKAGE + import SwiftUI /// A property wrapper that listens to a Remote Config value. diff --git a/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigValueObservable.swift b/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigValueObservable.swift index b35c1685883..cd20422d9e6 100644 --- a/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigValueObservable.swift +++ b/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigValueObservable.swift @@ -14,7 +14,9 @@ * limitations under the License. */ -import FirebaseRemoteConfig +#if SWIFT_PACKAGE + @_exported import FirebaseRemoteConfigInternal +#endif // SWIFT_PACKAGE import FirebaseCore import SwiftUI diff --git a/FirebaseRemoteConfigSwift/Sources/Value.swift b/FirebaseRemoteConfigSwift/Sources/Value.swift index 0e81056511d..8a66eda8bc3 100644 --- a/FirebaseRemoteConfigSwift/Sources/Value.swift +++ b/FirebaseRemoteConfigSwift/Sources/Value.swift @@ -15,7 +15,9 @@ */ import Foundation -import FirebaseRemoteConfig +#if SWIFT_PACKAGE + @_exported import FirebaseRemoteConfigInternal +#endif // SWIFT_PACKAGE /// Implements subscript overloads to enable Remote Config values to be accessed /// in a type-safe way directly from the current config. diff --git a/FirebaseRemoteConfigSwift/Tests/SwiftAPI/Codable.swift b/FirebaseRemoteConfigSwift/Tests/SwiftAPI/Codable.swift index 5ebf90dfe00..5319cd5bcea 100644 --- a/FirebaseRemoteConfigSwift/Tests/SwiftAPI/Codable.swift +++ b/FirebaseRemoteConfigSwift/Tests/SwiftAPI/Codable.swift @@ -13,7 +13,6 @@ // limitations under the License. import FirebaseRemoteConfig -import FirebaseRemoteConfigSwift import XCTest diff --git a/FirebaseRemoteConfigSwift/Tests/SwiftAPI/PropertyWrapperDefaultConfigsTests.swift b/FirebaseRemoteConfigSwift/Tests/SwiftAPI/PropertyWrapperDefaultConfigsTests.swift index b636778d6a2..5e5b304ebac 100644 --- a/FirebaseRemoteConfigSwift/Tests/SwiftAPI/PropertyWrapperDefaultConfigsTests.swift +++ b/FirebaseRemoteConfigSwift/Tests/SwiftAPI/PropertyWrapperDefaultConfigsTests.swift @@ -16,7 +16,7 @@ import FirebaseCore import FirebaseRemoteConfig -import FirebaseRemoteConfigSwift + import XCTest let ConfigKeyForThisTestOnly = "PropertyWrapperDefaultConfigsTestsKey" diff --git a/FirebaseRemoteConfigSwift/Tests/SwiftAPI/PropertyWrapperTests.swift b/FirebaseRemoteConfigSwift/Tests/SwiftAPI/PropertyWrapperTests.swift index a7c4f86cd75..f868be7f9c0 100644 --- a/FirebaseRemoteConfigSwift/Tests/SwiftAPI/PropertyWrapperTests.swift +++ b/FirebaseRemoteConfigSwift/Tests/SwiftAPI/PropertyWrapperTests.swift @@ -15,7 +15,7 @@ */ import FirebaseRemoteConfig -import FirebaseRemoteConfigSwift + import XCTest #if compiler(>=5.5.2) && canImport(_Concurrency) diff --git a/FirebaseRemoteConfigSwift/Tests/SwiftAPI/Value.swift b/FirebaseRemoteConfigSwift/Tests/SwiftAPI/Value.swift index ca483df22ca..a8afdf50fc9 100644 --- a/FirebaseRemoteConfigSwift/Tests/SwiftAPI/Value.swift +++ b/FirebaseRemoteConfigSwift/Tests/SwiftAPI/Value.swift @@ -13,7 +13,6 @@ // limitations under the License. import FirebaseRemoteConfig -import FirebaseRemoteConfigSwift import XCTest diff --git a/Package.swift b/Package.swift index 7d641c55d28..ed86916d9e9 100644 --- a/Package.swift +++ b/Package.swift @@ -894,7 +894,9 @@ let package = Package( dependencies: [ "FirebaseCore", "FirebaseInstallations", - "FirebaseRemoteConfig", + // TODO(ncooke3): Consider if this should import the merged module + // (`FirebaseRemoteConfig`). + "FirebaseRemoteConfigInternal", "FirebaseSessions", .product(name: "GoogleDataTransport", package: "GoogleDataTransport"), .product(name: "GULEnvironment", package: "GoogleUtilities"), @@ -958,7 +960,7 @@ let package = Package( // MARK: - Firebase Remote Config .target( - name: "FirebaseRemoteConfig", + name: "FirebaseRemoteConfigInternal", dependencies: [ "FirebaseCore", "FirebaseABTesting", @@ -973,7 +975,7 @@ let package = Package( ), .testTarget( name: "RemoteConfigUnit", - dependencies: ["FirebaseRemoteConfig", .product(name: "OCMock", package: "ocmock")], + dependencies: ["FirebaseRemoteConfigInternal", .product(name: "OCMock", package: "ocmock")], path: "FirebaseRemoteConfig/Tests/Unit", exclude: [ // Need to be evaluated/ported to RC V2. @@ -993,16 +995,23 @@ let package = Package( ] ), .target( - name: "FirebaseRemoteConfigSwift", + name: "FirebaseRemoteConfig", dependencies: [ - "FirebaseRemoteConfig", + "FirebaseRemoteConfigInternal", "FirebaseSharedSwift", ], path: "FirebaseRemoteConfigSwift/Sources" ), + .target( + name: "FirebaseRemoteConfigSwift", + dependencies: [ + "FirebaseRemoteConfig", + ], + path: "FirebaseRemoteConfigSwift/Exporter" + ), .testTarget( name: "RemoteConfigFakeConsole", - dependencies: ["FirebaseRemoteConfigSwift", + dependencies: ["FirebaseRemoteConfig", "RemoteConfigFakeConsoleObjC"], path: "FirebaseRemoteConfigSwift/Tests", exclude: [ From a2beb9cc5f35d796fabad2ac2c2f9c0aad685aac Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Tue, 29 Aug 2023 17:49:41 -0400 Subject: [PATCH 02/20] [Config] Refactor Swift sources out of FirebaseRemoteConfigSwift (#11747) --- FirebaseRemoteConfig.podspec | 2 +- .../Sources => FirebaseRemoteConfig/Swift}/Codable.swift | 0 .../Swift}/FirebaseRemoteConfigValueDecoderHelper.swift | 0 .../Swift}/PropertyWrapper/RemoteConfigProperty.swift | 0 .../Swift}/PropertyWrapper/RemoteConfigValueObservable.swift | 0 .../Sources => FirebaseRemoteConfig/Swift}/Value.swift | 0 FirebaseRemoteConfigSwift.podspec | 2 +- .../FirebaseRemoteConfigSwift.swift} | 0 Package.swift | 4 ++-- 9 files changed, 4 insertions(+), 4 deletions(-) rename {FirebaseRemoteConfigSwift/Sources => FirebaseRemoteConfig/Swift}/Codable.swift (100%) rename {FirebaseRemoteConfigSwift/Sources => FirebaseRemoteConfig/Swift}/FirebaseRemoteConfigValueDecoderHelper.swift (100%) rename {FirebaseRemoteConfigSwift/Sources => FirebaseRemoteConfig/Swift}/PropertyWrapper/RemoteConfigProperty.swift (100%) rename {FirebaseRemoteConfigSwift/Sources => FirebaseRemoteConfig/Swift}/PropertyWrapper/RemoteConfigValueObservable.swift (100%) rename {FirebaseRemoteConfigSwift/Sources => FirebaseRemoteConfig/Swift}/Value.swift (100%) rename FirebaseRemoteConfigSwift/{Exporter/Exporter.swift => Sources/FirebaseRemoteConfigSwift.swift} (100%) diff --git a/FirebaseRemoteConfig.podspec b/FirebaseRemoteConfig.podspec index 6a8282b7f3c..6a1df45f881 100644 --- a/FirebaseRemoteConfig.podspec +++ b/FirebaseRemoteConfig.podspec @@ -40,7 +40,7 @@ app update. 'FirebaseABTesting/Sources/Private/*.h', 'FirebaseCore/Extension/*.h', 'FirebaseInstallations/Source/Library/Private/*.h', - 'FirebaseRemoteConfigSwift/Sources/**/*.swift', + 'FirebaseRemoteConfig/Swift/**/*.swift', ] s.public_header_files = base_dir + 'Public/FirebaseRemoteConfig/*.h' s.pod_target_xcconfig = { diff --git a/FirebaseRemoteConfigSwift/Sources/Codable.swift b/FirebaseRemoteConfig/Swift/Codable.swift similarity index 100% rename from FirebaseRemoteConfigSwift/Sources/Codable.swift rename to FirebaseRemoteConfig/Swift/Codable.swift diff --git a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigValueDecoderHelper.swift b/FirebaseRemoteConfig/Swift/FirebaseRemoteConfigValueDecoderHelper.swift similarity index 100% rename from FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigValueDecoderHelper.swift rename to FirebaseRemoteConfig/Swift/FirebaseRemoteConfigValueDecoderHelper.swift diff --git a/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigProperty.swift b/FirebaseRemoteConfig/Swift/PropertyWrapper/RemoteConfigProperty.swift similarity index 100% rename from FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigProperty.swift rename to FirebaseRemoteConfig/Swift/PropertyWrapper/RemoteConfigProperty.swift diff --git a/FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigValueObservable.swift b/FirebaseRemoteConfig/Swift/PropertyWrapper/RemoteConfigValueObservable.swift similarity index 100% rename from FirebaseRemoteConfigSwift/Sources/PropertyWrapper/RemoteConfigValueObservable.swift rename to FirebaseRemoteConfig/Swift/PropertyWrapper/RemoteConfigValueObservable.swift diff --git a/FirebaseRemoteConfigSwift/Sources/Value.swift b/FirebaseRemoteConfig/Swift/Value.swift similarity index 100% rename from FirebaseRemoteConfigSwift/Sources/Value.swift rename to FirebaseRemoteConfig/Swift/Value.swift diff --git a/FirebaseRemoteConfigSwift.podspec b/FirebaseRemoteConfigSwift.podspec index 10f128c71ea..b5ff3d95f2c 100644 --- a/FirebaseRemoteConfigSwift.podspec +++ b/FirebaseRemoteConfigSwift.podspec @@ -35,7 +35,7 @@ app update. s.prefix_header_file = false s.source_files = [ - 'FirebaseRemoteConfigSwift/Exporter/**/*.swift', + 'FirebaseRemoteConfigSwift/Sources/**/*.swift', ] s.dependency 'FirebaseCore', '~> 10.0' diff --git a/FirebaseRemoteConfigSwift/Exporter/Exporter.swift b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift similarity index 100% rename from FirebaseRemoteConfigSwift/Exporter/Exporter.swift rename to FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift diff --git a/Package.swift b/Package.swift index ed86916d9e9..b543538d395 100644 --- a/Package.swift +++ b/Package.swift @@ -1000,14 +1000,14 @@ let package = Package( "FirebaseRemoteConfigInternal", "FirebaseSharedSwift", ], - path: "FirebaseRemoteConfigSwift/Sources" + path: "FirebaseRemoteConfig/Swift" ), .target( name: "FirebaseRemoteConfigSwift", dependencies: [ "FirebaseRemoteConfig", ], - path: "FirebaseRemoteConfigSwift/Exporter" + path: "FirebaseRemoteConfigSwift/Sources" ), .testTarget( name: "RemoteConfigFakeConsole", From 06816815d688e95c93413f4f5c270bc9eaf79f07 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 31 Aug 2023 16:08:30 -0400 Subject: [PATCH 03/20] [Config] Lock down no-op API's availability for Swift clients (#11764) --- FirebaseRemoteConfig/Swift/Codable.swift | 15 ---------- .../Swift/SPMSwiftHeaderWorkaround.swift | 30 +++++++++++++++++++ 2 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 FirebaseRemoteConfig/Swift/SPMSwiftHeaderWorkaround.swift diff --git a/FirebaseRemoteConfig/Swift/Codable.swift b/FirebaseRemoteConfig/Swift/Codable.swift index 68a62083aad..d2df8a90db0 100644 --- a/FirebaseRemoteConfig/Swift/Codable.swift +++ b/FirebaseRemoteConfig/Swift/Codable.swift @@ -20,21 +20,6 @@ import Foundation #endif // SWIFT_PACKAGE import FirebaseSharedSwift -#if SWIFT_PACKAGE - // This is a trick to force generate a `FirebaseRemoteConfig-Swift.h` header - // that re-exports `FirebaseRemoteConfigInternal` for Objective-C clients. It - // is important for the below code to reference a Remote Config symbol defined - // in Objective-C as that will import the symbol's module - // (`FirebaseRemoteConfigInternal`) in the generated header. This allows - // Objective-C clients to import Remote Config's Objective-C API using - // `@import FirebaseRemoteConfig;`. This API is not needed for Swift clients - // and is therefore hidden for them for the foreseeable future. - @available(iOS 100, *) - @objc public extension RemoteConfig { - var __do_not_call: String { "" } - } -#endif // SWIFT_PACKAGE - public enum RemoteConfigValueCodableError: Error { case unsupportedType(String) } diff --git a/FirebaseRemoteConfig/Swift/SPMSwiftHeaderWorkaround.swift b/FirebaseRemoteConfig/Swift/SPMSwiftHeaderWorkaround.swift new file mode 100644 index 00000000000..b83a981606d --- /dev/null +++ b/FirebaseRemoteConfig/Swift/SPMSwiftHeaderWorkaround.swift @@ -0,0 +1,30 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#if SWIFT_PACKAGE + @_exported import FirebaseRemoteConfigInternal + + // This is a trick to force generate a `FirebaseRemoteConfig-Swift.h` header + // that re-exports `FirebaseRemoteConfigInternal` for Objective-C clients. It + // is important for the below code to reference a Remote Config symbol defined + // in Objective-C as that will import the symbol's module + // (`FirebaseRemoteConfigInternal`) in the generated header. This allows + // Objective-C clients to import Remote Config's Objective-C API using + // `@import FirebaseRemoteConfig;`. This API is not needed for Swift clients + // and is therefore unavailable in a Swift context. + @available(*, unavailable) + @objc public extension RemoteConfig { + static var __no_op: () -> Void { {} } + } +#endif // SWIFT_PACKAGE From e3619bb653fb62c8754480eb196fb5e05b09cfc7 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Fri, 1 Sep 2023 18:27:00 -0400 Subject: [PATCH 04/20] [ConfigSwift] Only re-export the API that used to be in ConfigSwift (#11767) --- .../Sources/FirebaseRemoteConfigSwift.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift index 75ad4156099..cbc98a685c8 100644 --- a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift +++ b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift @@ -17,4 +17,6 @@ // The `@_exported` is needed to prevent breaking clients that are using // types prefixed with the `FirebaseRemoteConfigSwift` module name (e.g. // `FirebaseRemoteConfigSwift.RemoteConfigValueCodableError`). -@_exported import FirebaseRemoteConfig +@_exported import enum FirebaseRemoteConfig.RemoteConfigValueCodableError +@_exported import enum FirebaseRemoteConfig.RemoteConfigCodableError +@_exported import struct FirebaseRemoteConfig.RemoteConfigProperty From c410dff58eb584561a70232254e7c1fcf8c10131 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Sat, 2 Sep 2023 22:21:07 -0400 Subject: [PATCH 05/20] [Config] Update RemoteConfig and RemoteConfigSwift CHANGELOGs (#11749) --- FirebaseRemoteConfig/CHANGELOG.md | 6 ++++++ FirebaseRemoteConfigSwift/CHANGELOG.md | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/FirebaseRemoteConfig/CHANGELOG.md b/FirebaseRemoteConfig/CHANGELOG.md index 06c8fbf5204..5ebd85da5b9 100644 --- a/FirebaseRemoteConfig/CHANGELOG.md +++ b/FirebaseRemoteConfig/CHANGELOG.md @@ -1,3 +1,9 @@ +# Unreleased +- [feature] The `FirebaseRemoteConfig` module now contains Firebase Remote + Config's Swift-only APIs that were previously only available via the + `FirebaseRemoteConfigSwift` extension SDK. See the + `FirebaseRemoteConfigSwift` release note from this release for more details. + # 10.12.0 - [fixed] Fix issue of real-time listeners not being properly removed. (#11458) - [fixed] Fix real-time fetches not being able to fetch the latest template due to an in-progress fetch. (#11465) diff --git a/FirebaseRemoteConfigSwift/CHANGELOG.md b/FirebaseRemoteConfigSwift/CHANGELOG.md index 7317a361718..007c648e9d9 100644 --- a/FirebaseRemoteConfigSwift/CHANGELOG.md +++ b/FirebaseRemoteConfigSwift/CHANGELOG.md @@ -1,3 +1,13 @@ +# Unreleased +- [changed] `FirebaseRemoteConfigSwift` has been merged into + `FirebaseRemoteConfig`, and will be deprecated in a future release. Depending + on `FirebaseRemoteConfigSwift` is therefore no longer required to access + Firebase Remote Config's Swift-only APIs. To migrate ahead of the + deprecation, remove your project's dependency on `FirebaseRemoteConfigSwift` + and any imports of `FirebaseRemoteConfigSwift` within your source code. + From now on, depending on (and importing) `FirebaseRemoteConfig` should be + sufficient to access Firebase Remote Config's Swift-only APIs. + # 10.1.0 - [fixed] Fix CocoaPods release did not include the RemoteConfigProperty feature. (#10371) From 709cdd570fe0aef6dae8da8586baa5e2f118d6dd Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 12 Sep 2023 17:30:03 -0400 Subject: [PATCH 06/20] Resolve TODO and stub out warning --- .../Sources/FirebaseRemoteConfigSwift.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift index cbc98a685c8..072212a075e 100644 --- a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift +++ b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift @@ -12,7 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -// TODO(ncooke3): Add warning that importing this extension is deprecated. +// TODO: Enable warning when ready to surface deprecation to customers. +// #warning(""" +// The FirebaseRemoteConfigSwift module is deprecated and will be removed in +// the future. All of the public API from FirebaseRemoteConfigSwift can now be +// accessed through the FirebaseRemoteConfig module. To migrate, delete imports +// of FirebaseRemoteConfigSwift and remove the module as a dependency to your +// project. If applicable, any APIs namespaced with `FirebaseRemoteConfigSwift` +// can now be namespaced with `FirebaseRemoteConfig`. +// """) // The `@_exported` is needed to prevent breaking clients that are using // types prefixed with the `FirebaseRemoteConfigSwift` module name (e.g. From 323562ab15286052542c2e5919fea10902920101 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 12 Sep 2023 17:32:50 -0400 Subject: [PATCH 07/20] Update changelog --- FirebaseRemoteConfigSwift/CHANGELOG.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/FirebaseRemoteConfigSwift/CHANGELOG.md b/FirebaseRemoteConfigSwift/CHANGELOG.md index 007c648e9d9..ada5eed93e3 100644 --- a/FirebaseRemoteConfigSwift/CHANGELOG.md +++ b/FirebaseRemoteConfigSwift/CHANGELOG.md @@ -1,12 +1,12 @@ # Unreleased - [changed] `FirebaseRemoteConfigSwift` has been merged into - `FirebaseRemoteConfig`, and will be deprecated in a future release. Depending - on `FirebaseRemoteConfigSwift` is therefore no longer required to access - Firebase Remote Config's Swift-only APIs. To migrate ahead of the - deprecation, remove your project's dependency on `FirebaseRemoteConfigSwift` - and any imports of `FirebaseRemoteConfigSwift` within your source code. - From now on, depending on (and importing) `FirebaseRemoteConfig` should be - sufficient to access Firebase Remote Config's Swift-only APIs. + `FirebaseRemoteConfig`, and will be deprecated in a future release. All of + the public API from `FirebaseRemoteConfigSwift` can now be + accessed through the `FirebaseRemoteConfig` module. To migrate, delete + imports of `FirebaseRemoteConfigSwift` and remove the module as a dependency + to your project. If applicable, any APIs namespaced with + `FirebaseRemoteConfigSwift` can now be namespaced with + `FirebaseRemoteConfig`. # 10.1.0 - [fixed] Fix CocoaPods release did not include the RemoteConfigProperty feature. (#10371) From 3f9258204c6b8ab461d604a0a1fcd5c78ef33e9a Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 12 Sep 2023 17:35:38 -0400 Subject: [PATCH 08/20] Add TODO to update changelog entry if warning is enabled --- .../Sources/FirebaseRemoteConfigSwift.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift index 072212a075e..850ba7a1433 100644 --- a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift +++ b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift @@ -13,6 +13,7 @@ // limitations under the License. // TODO: Enable warning when ready to surface deprecation to customers. +// TODO: When warning is enabled, ensure it is reflected in release note. // #warning(""" // The FirebaseRemoteConfigSwift module is deprecated and will be removed in // the future. All of the public API from FirebaseRemoteConfigSwift can now be From 002c3a63f3d7a3d0164267599730755d47e8456f Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 12 Sep 2023 18:17:05 -0400 Subject: [PATCH 09/20] Minimize dependency versioning in podspec --- FirebaseRemoteConfigSwift.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FirebaseRemoteConfigSwift.podspec b/FirebaseRemoteConfigSwift.podspec index b5ff3d95f2c..b1aefb7a829 100644 --- a/FirebaseRemoteConfigSwift.podspec +++ b/FirebaseRemoteConfigSwift.podspec @@ -39,7 +39,7 @@ app update. ] s.dependency 'FirebaseCore', '~> 10.0' - s.dependency 'FirebaseRemoteConfig', '~> 10.0' + s.dependency 'FirebaseRemoteConfig', '~> 10.15' # Run Swift API tests on a real backend. s.test_spec 'swift-api-tests' do |swift_api| From f074877bb31d9cff9964c3919e3391080dfa7033 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 12 Sep 2023 21:08:15 -0400 Subject: [PATCH 10/20] Add note in deprecation warning about '@testable' imports --- .../Sources/FirebaseRemoteConfigSwift.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift index 850ba7a1433..4c89d568dda 100644 --- a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift +++ b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift @@ -20,7 +20,9 @@ // accessed through the FirebaseRemoteConfig module. To migrate, delete imports // of FirebaseRemoteConfigSwift and remove the module as a dependency to your // project. If applicable, any APIs namespaced with `FirebaseRemoteConfigSwift` -// can now be namespaced with `FirebaseRemoteConfig`. +// can now be namespaced with `FirebaseRemoteConfig`. Additionally, if +// applicable, `@testable import FirebaseRemoteConfigSwift` should be replaced +// with `@testable import FirebaseRemoteConfig`. // """) // The `@_exported` is needed to prevent breaking clients that are using From 204f84a2eedbbd5b98dbcdddfdc63ce24cb389d5 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 12 Sep 2023 21:09:05 -0400 Subject: [PATCH 11/20] Add note in release note about '@testable' imports --- FirebaseRemoteConfigSwift/CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/FirebaseRemoteConfigSwift/CHANGELOG.md b/FirebaseRemoteConfigSwift/CHANGELOG.md index ada5eed93e3..36a1b3d6a14 100644 --- a/FirebaseRemoteConfigSwift/CHANGELOG.md +++ b/FirebaseRemoteConfigSwift/CHANGELOG.md @@ -6,7 +6,9 @@ imports of `FirebaseRemoteConfigSwift` and remove the module as a dependency to your project. If applicable, any APIs namespaced with `FirebaseRemoteConfigSwift` can now be namespaced with - `FirebaseRemoteConfig`. + `FirebaseRemoteConfig`. Additionally, if applicable, + `@testable import FirebaseRemoteConfigSwift` should be replaced with + `@testable import FirebaseRemoteConfig`. # 10.1.0 - [fixed] Fix CocoaPods release did not include the RemoteConfigProperty feature. (#10371) From 5a0f6aacc27e1efd855aa5cc3a515939e596e514 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Wed, 13 Sep 2023 19:27:52 -0400 Subject: [PATCH 12/20] Update release note to reflect plan to deprecate --- FirebaseRemoteConfigSwift/CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/FirebaseRemoteConfigSwift/CHANGELOG.md b/FirebaseRemoteConfigSwift/CHANGELOG.md index 36a1b3d6a14..756e4941b26 100644 --- a/FirebaseRemoteConfigSwift/CHANGELOG.md +++ b/FirebaseRemoteConfigSwift/CHANGELOG.md @@ -1,10 +1,10 @@ # Unreleased -- [changed] `FirebaseRemoteConfigSwift` has been merged into - `FirebaseRemoteConfig`, and will be deprecated in a future release. All of - the public API from `FirebaseRemoteConfigSwift` can now be - accessed through the `FirebaseRemoteConfig` module. To migrate, delete - imports of `FirebaseRemoteConfigSwift` and remove the module as a dependency - to your project. If applicable, any APIs namespaced with +- [deprecated] `FirebaseRemoteConfigSwift` has been deprecated, and will be + removed in a future release. All of the public API from + `FirebaseRemoteConfigSwift` can now be accessed through the + `FirebaseRemoteConfig` module. To migrate, delete imports of + `FirebaseRemoteConfigSwift` and remove the module as a dependency to your + project. If applicable, any APIs namespaced with `FirebaseRemoteConfigSwift` can now be namespaced with `FirebaseRemoteConfig`. Additionally, if applicable, `@testable import FirebaseRemoteConfigSwift` should be replaced with From 8f45cfbaab4273986dff6e35fe73ca0c20e87aeb Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Wed, 13 Sep 2023 19:29:58 -0400 Subject: [PATCH 13/20] Enable deprecation warning --- .../Sources/FirebaseRemoteConfigSwift.swift | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift index 4c89d568dda..d81fd48fabb 100644 --- a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift +++ b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift @@ -12,18 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -// TODO: Enable warning when ready to surface deprecation to customers. -// TODO: When warning is enabled, ensure it is reflected in release note. -// #warning(""" -// The FirebaseRemoteConfigSwift module is deprecated and will be removed in -// the future. All of the public API from FirebaseRemoteConfigSwift can now be -// accessed through the FirebaseRemoteConfig module. To migrate, delete imports -// of FirebaseRemoteConfigSwift and remove the module as a dependency to your -// project. If applicable, any APIs namespaced with `FirebaseRemoteConfigSwift` -// can now be namespaced with `FirebaseRemoteConfig`. Additionally, if -// applicable, `@testable import FirebaseRemoteConfigSwift` should be replaced -// with `@testable import FirebaseRemoteConfig`. -// """) +#warning(""" +The `FirebaseRemoteConfigSwift` module is deprecated and will be removed in +the future. All of the public API from `FirebaseRemoteConfigSwift` can now be +accessed through the `FirebaseRemoteConfig` module. To migrate, delete imports +of `FirebaseRemoteConfigSwift` and remove the module as a dependency to your +project. If applicable, any APIs namespaced with `FirebaseRemoteConfigSwift` +can now be namespaced with `FirebaseRemoteConfig`. Additionally, if +applicable, `@testable import FirebaseRemoteConfigSwift` should be replaced +with `@testable import FirebaseRemoteConfig`. +""") // The `@_exported` is needed to prevent breaking clients that are using // types prefixed with the `FirebaseRemoteConfigSwift` module name (e.g. From a60c4a1d13b38be435e4cc78f74560fd5592ea07 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Wed, 13 Sep 2023 19:30:37 -0400 Subject: [PATCH 14/20] Update dependency version in podspec --- FirebaseRemoteConfigSwift.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FirebaseRemoteConfigSwift.podspec b/FirebaseRemoteConfigSwift.podspec index b1aefb7a829..8df2df31e7e 100644 --- a/FirebaseRemoteConfigSwift.podspec +++ b/FirebaseRemoteConfigSwift.podspec @@ -39,7 +39,7 @@ app update. ] s.dependency 'FirebaseCore', '~> 10.0' - s.dependency 'FirebaseRemoteConfig', '~> 10.15' + s.dependency 'FirebaseRemoteConfig', '~> 10.16' # Run Swift API tests on a real backend. s.test_spec 'swift-api-tests' do |swift_api| From 4ab1dbd3d49fe5ce872532a9e947834d77146326 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Thu, 14 Sep 2023 00:00:27 -0400 Subject: [PATCH 15/20] Allow warnings since RCSwift is deprecated --- .github/workflows/remoteconfig.yml | 2 +- ReleaseTooling/Sources/FirebaseManifest/FirebaseManifest.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/remoteconfig.yml b/.github/workflows/remoteconfig.yml index aa2233a22f7..63cdcba0057 100644 --- a/.github/workflows/remoteconfig.yml +++ b/.github/workflows/remoteconfig.yml @@ -60,7 +60,7 @@ jobs: strategy: matrix: target: [ios, tvos, macos, watchos] - podspec: [FirebaseRemoteConfig.podspec, FirebaseRemoteConfigSwift.podspec --skip-tests] + podspec: [FirebaseRemoteConfig.podspec, FirebaseRemoteConfigSwift.podspec --allow-warnings --skip-tests] steps: - uses: actions/checkout@v3 - uses: ruby/setup-ruby@v1 diff --git a/ReleaseTooling/Sources/FirebaseManifest/FirebaseManifest.swift b/ReleaseTooling/Sources/FirebaseManifest/FirebaseManifest.swift index 0f73d19f074..c6e0dda6520 100755 --- a/ReleaseTooling/Sources/FirebaseManifest/FirebaseManifest.swift +++ b/ReleaseTooling/Sources/FirebaseManifest/FirebaseManifest.swift @@ -40,7 +40,7 @@ public let shared = Manifest( Pod("FirebaseABTesting", zip: true), Pod("FirebaseAppCheck", zip: true), Pod("FirebaseRemoteConfig"), - Pod("FirebaseRemoteConfigSwift", zip: true), + Pod("FirebaseRemoteConfigSwift", allowWarnings: true, zip: true), Pod("FirebaseAppDistribution", isBeta: true, platforms: ["ios"], zip: true), Pod("FirebaseAuth", zip: true), Pod("FirebaseCrashlytics", zip: true), From 51ae256ff327dde5b338fbc5ba7ddd416220af34 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Thu, 14 Sep 2023 01:01:50 -0400 Subject: [PATCH 16/20] Resolve TODO --- Package.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index b543538d395..3acbfaf34c4 100644 --- a/Package.swift +++ b/Package.swift @@ -894,8 +894,9 @@ let package = Package( dependencies: [ "FirebaseCore", "FirebaseInstallations", - // TODO(ncooke3): Consider if this should import the merged module - // (`FirebaseRemoteConfig`). + // Performance depends on the Obj-C target of FirebaseRemoteConfig to + // avoid including Swift code from the `FirebaseRemoteConfig` target + // that is unneeded. "FirebaseRemoteConfigInternal", "FirebaseSessions", .product(name: "GoogleDataTransport", package: "GoogleDataTransport"), From 187aaf16259ffbb9e2a1d0d224418d291158b93c Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Thu, 14 Sep 2023 16:28:31 -0400 Subject: [PATCH 17/20] Make warning message a non-multiline string --- .../Sources/FirebaseRemoteConfigSwift.swift | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift index d81fd48fabb..08f9127336d 100644 --- a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift +++ b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift @@ -12,16 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#warning(""" -The `FirebaseRemoteConfigSwift` module is deprecated and will be removed in -the future. All of the public API from `FirebaseRemoteConfigSwift` can now be -accessed through the `FirebaseRemoteConfig` module. To migrate, delete imports -of `FirebaseRemoteConfigSwift` and remove the module as a dependency to your -project. If applicable, any APIs namespaced with `FirebaseRemoteConfigSwift` -can now be namespaced with `FirebaseRemoteConfig`. Additionally, if -applicable, `@testable import FirebaseRemoteConfigSwift` should be replaced -with `@testable import FirebaseRemoteConfig`. -""") +#warning( + "The `FirebaseRemoteConfigSwift` module is deprecated and will be removed in the future. All of the public API from `FirebaseRemoteConfigSwift` can now be accessed through the `FirebaseRemoteConfig` module. To migrate, delete imports of `FirebaseRemoteConfigSwift` and remove the module as a dependency to your project. If applicable, any APIs namespaced with `FirebaseRemoteConfigSwift` can now be namespaced with `FirebaseRemoteConfig`. Additionally, if applicable, `@testable import FirebaseRemoteConfigSwift` should be replaced with `@testable import FirebaseRemoteConfig`." +) // The `@_exported` is needed to prevent breaking clients that are using // types prefixed with the `FirebaseRemoteConfigSwift` module name (e.g. From 14fa489c136648e50a42bfc3fe2559a7e3c18eb3 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Thu, 14 Sep 2023 16:33:21 -0400 Subject: [PATCH 18/20] Fix SPM CI --- Package.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Package.swift b/Package.swift index 3acbfaf34c4..5083e0f34d2 100644 --- a/Package.swift +++ b/Package.swift @@ -1013,6 +1013,7 @@ let package = Package( .testTarget( name: "RemoteConfigFakeConsole", dependencies: ["FirebaseRemoteConfig", + "FirebaseRemoteConfigSwift", "RemoteConfigFakeConsoleObjC"], path: "FirebaseRemoteConfigSwift/Tests", exclude: [ From 52540257deb461bd3498ea5cce97365876be4d40 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Tue, 10 Oct 2023 11:53:05 -0400 Subject: [PATCH 19/20] Update deprecation/documentation messages --- FirebaseRemoteConfigSwift/CHANGELOG.md | 15 +++++---------- .../Sources/FirebaseRemoteConfigSwift.swift | 2 +- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/FirebaseRemoteConfigSwift/CHANGELOG.md b/FirebaseRemoteConfigSwift/CHANGELOG.md index 756e4941b26..31e0c3cd5e3 100644 --- a/FirebaseRemoteConfigSwift/CHANGELOG.md +++ b/FirebaseRemoteConfigSwift/CHANGELOG.md @@ -1,14 +1,9 @@ # Unreleased -- [deprecated] `FirebaseRemoteConfigSwift` has been deprecated, and will be - removed in a future release. All of the public API from - `FirebaseRemoteConfigSwift` can now be accessed through the - `FirebaseRemoteConfig` module. To migrate, delete imports of - `FirebaseRemoteConfigSwift` and remove the module as a dependency to your - project. If applicable, any APIs namespaced with - `FirebaseRemoteConfigSwift` can now be namespaced with - `FirebaseRemoteConfig`. Additionally, if applicable, - `@testable import FirebaseRemoteConfigSwift` should be replaced with - `@testable import FirebaseRemoteConfig`. +- [deprecated] All of the public API from `FirebaseRemoteConfigSwift` can now + be accessed through the `FirebaseRemoteConfig` module. Therefore, + `FirebaseRemoteConfigSwift` has been deprecated, and will be removed in a + future release. See https://firebase.google.com/docs/ios/swift-migration for + migration instructions. # 10.1.0 - [fixed] Fix CocoaPods release did not include the RemoteConfigProperty feature. (#10371) diff --git a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift index 08f9127336d..c85b40d1532 100644 --- a/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift +++ b/FirebaseRemoteConfigSwift/Sources/FirebaseRemoteConfigSwift.swift @@ -13,7 +13,7 @@ // limitations under the License. #warning( - "The `FirebaseRemoteConfigSwift` module is deprecated and will be removed in the future. All of the public API from `FirebaseRemoteConfigSwift` can now be accessed through the `FirebaseRemoteConfig` module. To migrate, delete imports of `FirebaseRemoteConfigSwift` and remove the module as a dependency to your project. If applicable, any APIs namespaced with `FirebaseRemoteConfigSwift` can now be namespaced with `FirebaseRemoteConfig`. Additionally, if applicable, `@testable import FirebaseRemoteConfigSwift` should be replaced with `@testable import FirebaseRemoteConfig`." + "All of the public API from `FirebaseRemoteConfigSwift` can now be accessed through the `FirebaseRemoteConfig` module. Therefore, the `FirebaseRemoteConfigSwift` module is deprecated and will be removed in the future. See https://firebase.google.com/docs/ios/swift-migration for migration instructions." ) // The `@_exported` is needed to prevent breaking clients that are using From 382345f95173abef0e5953c8b76076a5b9411572 Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Thu, 12 Oct 2023 09:20:06 -0400 Subject: [PATCH 20/20] Update dependency version in podspec --- FirebaseRemoteConfigSwift.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FirebaseRemoteConfigSwift.podspec b/FirebaseRemoteConfigSwift.podspec index 8df2df31e7e..90dab0140f6 100644 --- a/FirebaseRemoteConfigSwift.podspec +++ b/FirebaseRemoteConfigSwift.podspec @@ -39,7 +39,7 @@ app update. ] s.dependency 'FirebaseCore', '~> 10.0' - s.dependency 'FirebaseRemoteConfig', '~> 10.16' + s.dependency 'FirebaseRemoteConfig', '~> 10.17' # Run Swift API tests on a real backend. s.test_spec 'swift-api-tests' do |swift_api|