Skip to content

Bridge No-Codes loadScreen, defaultVariables and custom action event (DEV-1188)#452

Merged
SpertsyanKM merged 2 commits into
developfrom
kamo/dev-1188-react-native-no-codes-loadscreen-defaultvariables-and-custom
Jul 17, 2026
Merged

Bridge No-Codes loadScreen, defaultVariables and custom action event (DEV-1188)#452
SpertsyanKM merged 2 commits into
developfrom
kamo/dev-1188-react-native-no-codes-loadscreen-defaultvariables-and-custom

Conversation

@SpertsyanKM

Copy link
Copy Markdown
Contributor

Brings the No-Codes API from sandwich 7.10.1 (native iOS 6.13.0 / Android nocodes 1.10.0) into the RN layer.

DEV-1188

Changes

  • Sandwich bump 7.9.4 → 7.10.1 (podspec + gradle).
  • NoCodes.loadScreen(contextKey): Promise<NoCodesScreen> — load-before-present; the screen model exposes id, contextKey, defaultSelectedProductId and typed defaultVariables (kind: custom|product|selected_product|unknown, typed value + stringValue) with a defaultVariable(key, kind?) lookup mirroring the native SDKs. Presenting stays on showScreen (served from cache).
  • New nocodes_custom_action event → optional onCustomAction(value) callback on NoCodesListener (optional keeps existing listeners source-compatible).
  • TurboModule spec: new loadScreen method; iOS bridges via sandwich BridgeCompletion → promise, Android via Utils.getResultListener.

Verification

  • yarn typecheck ✅, yarn test ✅ (10/10), eslint on the new file ✅ (repo-wide prettier debt untouched)
  • Android codegen (generateCodegenArtifactsFromSchema) ✅ + :qonversion_react-native-sdk:compileDebugKotlin ✅ against sandwich 7.10.1
  • iOS example build against pod 7.10.1 — running, will report in a comment

🤖 Generated with Claude Code

https://claude.ai/code/session_01KQEJXqfVNxqoUcKXhSPhWn

…(DEV-1188)

Bump sandwich to 7.10.1. loadScreen(contextKey) resolves with a typed
NoCodesScreen (id, contextKey, defaultSelectedProductId, typed
defaultVariables). Custom builder actions surface via the optional
onCustomAction listener callback fed by the new nocodes_custom_action
event.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KQEJXqfVNxqoUcKXhSPhWn
@SpertsyanKM

Copy link
Copy Markdown
Contributor Author

iOS verification status: pod update QonversionSandwich Qonversion resolves 7.10.1 cleanly in the example. The full example app build fails in the third-party fmt pod (consteval errors with the local Xcode toolchain) — pre-existing environment incompatibility of the RN example, unrelated to this diff (our target is never reached; fmt does not depend on SDK code). Android side is fully compiled: codegen + compileDebugKotlin against sandwich 7.10.1 ✅.

…ustom action payload (DEV-1188)

Map the ClientError code both natives emit since sandwich 7.10.1 instead
of degrading it to UNKNOWN. Wrap the Android loadScreen call in
try/catch so an uninitialized SDK rejects instead of crashing. Extend
the NoCodeEvent payload union with QNoCodeCustomActionInfo and commit
the example Podfile.lock updated to sandwich 7.10.1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KQEJXqfVNxqoUcKXhSPhWn
@SpertsyanKM

Copy link
Copy Markdown
Contributor Author

Review addressed: Android loadScreen wrapped in try/catch (uninitialized SDK rejects instead of crashing), ClientError added to NoCodesErrorCode + mapper, NoCodeEvent.payload union extended with QNoCodeCustomActionInfo, example Podfile.lock (sandwich 7.10.1) committed. Typecheck + Android compile green.

@SpertsyanKM
SpertsyanKM merged commit 8fb0888 into develop Jul 17, 2026
1 check passed
@SpertsyanKM
SpertsyanKM deleted the kamo/dev-1188-react-native-no-codes-loadscreen-defaultvariables-and-custom branch July 17, 2026 11:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant