You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Readme.md
+92Lines changed: 92 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,98 @@ The goal is to give .NET for iOS and Mac Catalyst developers a common binding ba
10
10
11
11
This repo contains the binding projects, Cake build automation, and documentation used to build and validate those packages.
12
12
13
+
## Firebase 12.6+ modernization notes
14
+
15
+
Starting with the Firebase `12.6.0` release, this project has been undergoing a Codex-assisted modernization wave. The goals are to make these binding packages easier to maintain, automate more of the native SDK upgrade process, detect and fix API drift across native version bumps, expand binding-focused E2E validation, improve documentation, and publish active Firebase products that were missing from the current package set.
16
+
17
+
That created a lot of repository churn around the `12.6.0` line. Much of that churn was tooling, validation, package metadata, documentation, and removal of stale repository content rather than changes to user-authored binding definitions. When binding definitions did change, it was usually for one of these reasons:
18
+
19
+
- an existing binding was proven to be broken at runtime, so current consumers could not reliably use that surface;
20
+
- a native API was missing from the managed binding, so the change was additive;
21
+
- missing enum values or native support enums were added;
22
+
- nullability was corrected to match the native Firebase headers;
23
+
- return or parameter types were corrected to match native declarations, such as native integer widths or protocol-typed return values.
24
+
25
+
Nullability updates are generally compile-time metadata changes, but they can surface new warnings in consumer code. Type corrections are more visible and can require source changes when the previous managed signature did not match the native SDK. In those cases, the pre-`12.6.0` binding was either stale, too broad, missing, or already capable of dispatching an invalid selector or marshaling the wrong native object.
26
+
27
+
<details>
28
+
<summary>Notable Modernization PRs:</summary>
29
+
30
+
| PR | Summary |
31
+
| --- | --- |
32
+
|[#111](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/111)| Aligned nullability for multiple Firebase bindings and introduced Firebase Foundation E2E validation. |
33
+
|[#112](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/112)| Fixed Firestore `GetQueryNamed` type drift and added reusable targeted runtime-drift E2E mode and backlog tracking. |
34
+
|[#113](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/113)| Replaced stale CloudFunctions emulator selector usage with the current native emulator API and added a regression case. |
35
+
|[#114](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/114)| Typed ABTesting `ActivateExperiment` to `ABTExperimentPayload`, replacing a runtime-broken `NSObject` parameter. |
|[#121](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/121)| Added RemoteConfig realtime update and custom signal APIs, related enums/domains, and E2E coverage. |
43
+
|[#122](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/122)| Added Firestore vector value binding and targeted E2E coverage. |
|[#127](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/127)| Added Firestore named-database factories and E2E coverage. |
48
+
|[#128](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/128)| Added Firestore cache settings and persistent cache index manager surface with E2E coverage. |
|[#131](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/131)| Added Crashlytics `RecordError` user-info overload and selector coverage. |
52
+
|[#132](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/132)| Made AppCheck debug provider conform to the provider protocol, exposing the standard token methods. |
53
+
|[#133](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/133)| Added Firestore transaction options and matching `RunTransaction` overloads. |
54
+
|[#134](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/134)| Added Firestore index configuration APIs and E2E coverage. |
55
+
|[#135](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/135)| Added Realtime Database query-level `GetData` and E2E coverage. |
56
+
|[#136](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/136)| Added Core `Configuration.LoggerLevel` getter and E2E coverage. |
57
+
|[#137](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/137)| Removed stale GoogleAppMeasurement podspec metadata from Firebase Core. |
58
+
|[#138](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/138)| Moved FirebaseSessions packaging from Core to Installations to match the native dependency graph. |
59
+
|[#139](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/139)| Added NuGet READMEs for all 16 Firebase packages and wired package readme metadata. |
60
+
|[#140](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/140)| Typed Firestore cache settings through native protocol interfaces and updated E2E checks. |
|[#142](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/142)| Added all-target binding-surface coverage that checks managed members and native runtime metadata. |
63
+
|[#143](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/143)| Fixed AppCheck error enum packaging so `Firebase.AppCheck.ErrorCode` ships in the binding assembly. |
64
+
|[#144](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/144)| Bound Auth action-code URL as an initializer to match the native designated initializer. |
65
+
|[#145](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/145)| Made Auth APNS token readonly to match the native property. |
66
+
|[#146](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/146)| Made Storage MD5 hash readonly to match the native property. |
67
+
|[#147](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/147)| Removed stale Storage metadata reference property that is not present in Firebase Storage `12.6.0`. |
68
+
|[#148](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/148)| Cleaned generated header comments without changing APIs. |
|[#154](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/154)| Fixed binding-surface coverage false positives for shorthand types and helper exports. |
75
+
|[#155](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/155)| Restored Firebase InAppMessaging `12.6.0`, including Mac Catalyst assets, bindings, audit, and coverage metadata. |
76
+
|[#156](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/156)| Corrected PerformanceMonitoring payload size properties to native `long`. |
77
+
|[#157](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/157)| Corrected Installations error enum backing type to signed `long`. |
78
+
|[#158](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/158)| Corrected AppCheck provider factory return type to `IAppCheckProvider`. |
79
+
|[#159](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/159)| Corrected CloudMessaging error enum backing type to signed `long`. |
80
+
|[#160](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/160)| Corrected Database emulator port type to native `nint`. |
81
+
|[#161](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/161)| Corrected Storage emulator port type, added upload chunk size, and completed Storage error enum values. |
82
+
|[#162](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/162)| Corrected CloudFirestore emulator port type to native `nint`. |
83
+
|[#163](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/163)| Added Auth tenant, custom-domain, reCAPTCHA, and revoke-token APIs, and refreshed Auth errors/nullability. |
84
+
|[#164](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/164)| Added CloudFunctions callable options/URL overloads and corrected emulator API typing. |
85
+
|[#165](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/165)| Made audit staged umbrella imports configurable so CloudFunctions generates a real primary surface. |
86
+
|[#166](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/166)| Committed curated Firebase `12.6.0` audit suppressions after a full 16-target audit passed. |
87
+
|[#167](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/167)| Fixed Database nullable value helper flow and nullable getter annotations. |
|[#169](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/169)| Hardened Firebase version string caches with explicit failure paths and `dlopen` cleanup. |
90
+
|[#170](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/170)| Added validation for Analytics consent dictionaries and enum values. |
91
+
|[#171](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/171)| Hardened Storage task snapshot access while keeping public APIs non-null. |
|[#173](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/173)| Fixed Auth and CloudFunctions native version symbol lookups caught by E2E coverage. |
94
+
|[#174](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/174)| Updated README and NuGet docs to reflect the published Firebase `12.6.0` package set. |
95
+
|[#175](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/175)| Removed the retired deprecated component subtree from the active repository. |
96
+
|[#176](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/176)| Removed stale NuGet sample solution/projects. |
97
+
|[#177](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/177)| Removed retired product docs not represented by active packages. |
98
+
|[#178](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/178)| Removed obsolete Azure/manifest CI files, leaving GitHub Actions as the active CI surface. |
99
+
|[#179](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/179)| Updated Cake from `0.38.5` to `6.1.0` and modernized build wrappers/docs. |
100
+
|[#180](https://github.com/AdamEssenmacher/GoogleApisForiOSComponents/pull/180)| Removed the obsolete Firebase AdMob sample and solution entries. |
0 commit comments