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
|`Type`| Local type discriminator union used with `isType()` and related helpers |
53
53
54
-
# iOS expression limitations
55
-
56
-
Even when an expression helper is exported from `@react-native-firebase/firestore/pipelines`, the **iOS native runtime** may not implement it yet. Using these functions in a pipeline on iOS throws before `execute()` completes:
57
-
58
-
| Function | Status on iOS |
59
-
| ------------------- | ------------- |
60
-
|`arrayGet`| Not supported |
61
-
|`substring`| Not supported |
62
-
|`timestampAdd`| Not supported |
63
-
|`timestampSubtract`| Not supported |
64
-
65
-
**Android** and **macOS** do not apply this check; macOS uses the web SDK path. Prefer testing pipeline samples on Android or macOS when they use the functions above until iOS parity lands.
66
-
67
-
The list is defined in `packages/firestore/lib/pipelines/pipeline_support.ts` and kept in sync with `RNFBFirestorePipelineNodeBuilder.swift`.
Copy file name to clipboardExpand all lines: okf-bundle/packages/firestore/pipeline-platform-parity.md
+2-21Lines changed: 2 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,8 +50,6 @@ No permanent `Platform.android` / `Platform.ios` e2e workaround without registry
50
50
51
51
| ID | Area | Symptom | Justification | E2e |
52
52
|----|------|---------|---------------|-----|
53
-
|**P-003**| iOS unsupported functions | JS pre-execute throw via `IOS_UNSUPPORTED_FUNCTION_NAMES` (**4 names**; was 9) | List likely **partially stale** vs iOS **12.15** CHANGELOG — see [sdk-support-audit](pipeline-sdk-support-audit.md). `stringRepeat`, `switchOn`, `trunc`, `conditional`, and `round`**confirmed supported** — guards removed; unified cross-platform e2e. | Reduced iOS pipelines until runtime verification completes — [work queue](pipeline-coverage-work-queue.md)|
54
-
|**P-003a**|*(per-function hooks)*|`substring`, `arrayGet`, `timestampAdd`, `timestampSubtract`| Subset of P-003 — see [§ iOS unsupported function e2e map](#ios-unsupported-function-e2e-map)| One or more tests each |
55
53
|**P-013**| iOS extended aggregate accumulators |`first`/`last`/`minimum`/`maximum` with expression args skipped on iOS only (L3740) |**Likely iOS SDK** — functions not in unsupported list; needs SDK repro; document until confirmed | L3740–3790 |
56
54
|**P-014**| Execute `indexMode` / `rawOptions` on iOS | iOS parser rejects at native boundary | iOS SDK gap | L3796–3798 skip (iOS + macOS) |
Copy file name to clipboardExpand all lines: okf-bundle/packages/firestore/pipeline-sdk-support-audit.md
+38-51Lines changed: 38 additions & 51 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,18 +1,14 @@
1
1
---
2
2
type: Reference
3
3
title: Firestore Pipeline SDK support audit
4
-
description: Repeatable method to determine which pipeline functions are unsupported on each platform, and reconciliation of the iOS JS guard list against upstream SDK releases.
4
+
description: Repeatable method to determine which pipeline functions are supported on each platform, and reconciliation of RNFB bridge lowering against upstream SDK releases.
RNFB maintains `IOS_UNSUPPORTED_FUNCTION_NAMES` and reduced iOS e2e. The list dates from SDK runtime `invalid-argument` failures even when RNFB lowering existed.
12
-
13
-
Upstream SDKs shipped expression additions since; stale guards falsely classify P-003 as SDK-unsupported.
14
-
15
-
This method compares guards to primary sources and requires runtime verification before guard/e2e changes.
11
+
RNFB pipeline parity depends on native bridge lowering matching pinned Firebase SDKs. This method compares RNFB exports, CHANGELOG evidence, bridge code, and runtime e2e execute probes.
|**A — Public API surface**|`yarn compare:types` → `firestore-pipelines` ([config](../../../.github/scripts/compare-types/configs/firestore-pipelines.ts)) | firebase-js-sdk **exports** missing from RNFB types, extra RN exports, signature drift | Native iOS/Android **runtime** execute; stale `IOS_UNSUPPORTED_*` guards; macOS runtime for new JS-only backend features |
47
-
|**B — JS / macOS runtime**| firebase-js-sdk CHANGELOG + macOS e2e (`Platform.other` path uses web SDK) | What the **pinned npm `firebase`** package can execute on macOS | Native bridge behaviour; iOS guard list|
42
+
|**A — Public API surface**|`yarn compare:types` → `firestore-pipelines` ([config](../../../.github/scripts/compare-types/configs/firestore-pipelines.ts)) | firebase-js-sdk **exports** missing from RNFB types, extra RN exports, signature drift | Native iOS/Android **runtime** execute; macOS runtime for new JS-only backend features |
43
+
|**B — JS / macOS runtime**| firebase-js-sdk CHANGELOG + macOS e2e (`Platform.other` path uses web SDK) | What the **pinned npm `firebase`** package can execute on macOS | Native bridge behaviour |
48
44
|**C — Native runtime**| Native Firestore CHANGELOGs + iOS/Android e2e execute probes | What **linked iOS/Android SDKs** accept through RNFB native bridges | RNFB type exports; JS SDK additions RN has not typed yet |
49
45
50
46
`compare:types` is necessary, not sufficient:
@@ -57,7 +53,7 @@ Use firebase-js-sdk CHANGELOG for verification/macOS context, not instead of nat
57
53
58
54
-`missingInRN`: read [@firebase/firestore CHANGELOG](https://github.com/firebase/firebase-js-sdk/blob/main/packages/firestore/CHANGELOG.md) to date/export context and native lag.
59
55
- macOS parity: macOS uses `executeWebSdkPipeline`; run macOS e2e if RN exports name and JS SDK added behavior.
60
-
- iOS guard reconciliation: JS CHANGELOG is weak alone; native CHANGELOG + runtime probe matter more.
1. Branch from current main; **one function at a time**.
137
-
2. Remove that name from `IOS_UNSUPPORTED_FUNCTION_NAMES` only.
138
-
3. Restore full assertion block in matching `Pipeline.e2e.js` test (remove `expectIOSUnsupportedFunctions` + reduced iOS pipeline).
139
-
4. Run the implement/review gate defined in the [work queue runtime guard protocol](pipeline-coverage-work-queue.md#phase-j-iteration-protocol-strict).
140
-
5. Record outcome:
141
-
-**`independent-review` pass** → `sdk-supported-bridge-ok`; remove guard permanently; close P-003 sub-row; `commit` work type after `review_gate` closed.
130
+
1. Branch from current main; **one function or batch at a time** when bridge work is scoped.
0 commit comments