-
Notifications
You must be signed in to change notification settings - Fork 179
Release to Staging - 2.7.0 rd2 #1269
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
* move components to sdk and refactor a way from tamagui * linting * reverting since this is just a local issue for me * lint * simple * yarn * yolo * run yarn nice * fix pipelines * fix tests * fix mock * add fonts to mobile sdk * more feedback --------- Co-authored-by: Justin Hernandez <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the WalkthroughThis PR centralizes typography/buttons into the mobile-sdk-alpha package, updates app imports accordingly, deletes redundant local typography files, adjusts styling to use style props, adds RN SVG testing support, tweaks the deploy workflow commit message, bumps app build numbers, and expands/rewires SDK components, utils, packaging, and fonts. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor User
participant UI as AbstractButton (Pressable)
participant Analytics as useSelfClient.trackEvent
User->>UI: Press (onPress)
activate UI
UI->>Analytics: trackEvent("button_press", props)
Analytics-->>UI: ack
UI-->>User: onPress handler invoked
deactivate UI
sequenceDiagram
autonumber
actor User
participant Btn as HeldPrimaryButton.web
participant Anim as Animated.Value
participant App as onLongPress callback
User->>Btn: pressIn
Btn->>Anim: animate to 1 over ACTION_TIMER
Note over Btn,Anim: Overlay width interpolates 0 → full
Anim-->>Btn: value >= 0.95 while pressed
Btn->>App: onLongPress()
User->>Btn: pressOut
Btn->>Anim: reverse if not triggered
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
Comment |
e194196 to
54e6584
Compare
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (4)
app/index.js (1)
28-32: Remove duplicate LogBox ignore pattern.Lines 30 and 31 both ignore the same warning pattern. The regex
/Warning, duplicate ID for input/on line 31 already covers the string literal on line 30.Apply this diff to remove the duplicate:
LogBox.ignoreLogs([ /bad setState/, - 'Warning, duplicate ID for input', /Warning, duplicate ID for input/, ]);.github/workflows/mobile-deploy.yml (3)
153-156: Bug: IF references PR labels on non‑PR events (can break workflow_dispatch)The bump-version job evaluates contains(github.event.pull_request.labels...) even when event_name != 'pull_request'. This can error/null-reference on manual runs. Guard the label check behind the PR condition.
Apply this fix:
- if: | - (github.event_name != 'pull_request' || github.event.pull_request.merged == true) && - !contains(github.event.pull_request.labels.*.name, 'deploy:skip') + if: | + github.event_name != 'pull_request' || + (github.event.pull_request.merged == true && + !contains(github.event.pull_request.labels.*.name, 'deploy:skip'))
1457-1463: Avoid force‑pushing tags (release integrity risk)Forcing tag updates can rewrite history and undermine release traceability. Prefer pushing only new tags and failing if conflicts exist.
- # Push all tags (force to handle any conflicts) - if git push origin --tags 2>/dev/null; then - echo "🚀 Tags pushed to repository" - else - echo "⚠️ Some tags may already exist on remote, trying force push..." - git push origin --tags --force - echo "🚀 Tags force-pushed to repository" - fi + # Push all tags; do not overwrite existing tags + if git push origin --tags 2>/dev/null; then + echo "🚀 Tags pushed to repository" + else + echo "❌ Failed to push tags (likely conflict with existing tags)." + echo " Refusing to force-push to preserve release integrity." + exit 1 + fi
460-464: Tighten iOS certificate file permissions (limit to 600)Decoded cert and provisioning files should not be world/group-readable. Current check expects -rw-r--r--. Use 600 and update the verification accordingly.
- name: Decode certificate and profile if: inputs.platform != 'android' run: | mkdir -p "${{ env.APP_PATH }}$(dirname "${{ env.IOS_DIST_CERT_PATH }}")" - echo "${{ secrets.IOS_DIST_CERT_BASE64 }}" | base64 --decode > ${{ env.APP_PATH }}${{ env.IOS_DIST_CERT_PATH }} - echo "${{ secrets.IOS_PROV_PROFILE_BASE64 }}" | base64 --decode > ${{ env.APP_PATH }}${{ env.IOS_PROV_PROFILE_PROJ_PATH }} - echo "${{ secrets.IOS_CONNECT_API_KEY_BASE64 }}" | base64 --decode > ${{ env.APP_PATH }}${{ env.IOS_CONNECT_API_KEY_PATH }} + echo "${{ secrets.IOS_DIST_CERT_BASE64 }}" | base64 --decode > ${{ env.APP_PATH }}${{ env.IOS_DIST_CERT_PATH }} + echo "${{ secrets.IOS_PROV_PROFILE_BASE64 }}" | base64 --decode > ${{ env.APP_PATH }}${{ env.IOS_PROV_PROFILE_PROJ_PATH }} + echo "${{ secrets.IOS_CONNECT_API_KEY_BASE64 }}" | base64 --decode > ${{ env.APP_PATH }}${{ env.IOS_CONNECT_API_KEY_PATH }} + chmod 600 ${{ env.APP_PATH }}${{ env.IOS_DIST_CERT_PATH }} ${{ env.APP_PATH }}${{ env.IOS_PROV_PROFILE_PROJ_PATH }} ${{ env.APP_PATH }}${{ env.IOS_CONNECT_API_KEY_PATH }} - name: Verify iOS certificate and environment if: inputs.platform != 'android' && !env.ACT run: | @@ # Check certificate file permissions CERT_PERMS=$(ls -l "${{ env.APP_PATH }}${{ env.IOS_DIST_CERT_PATH }}" | awk '{print $1}') - if [ "$CERT_PERMS" != "-rw-r--r--" ]; then - echo "❌ Error: Distribution certificate has incorrect permissions: $CERT_PERMS" - echo "Expected: -rw-r--r--" + if [ "$CERT_PERMS" != "-rw-------" ]; then + echo "❌ Error: Distribution certificate has incorrect permissions: $CERT_PERMS" + echo "Expected: -rw------- (600)" exit 1 fiAlso applies to: 504-511
🧹 Nitpick comments (10)
app/src/components/homeScreen/idCard.tsx (1)
104-104: Consider replacing remaining hard-coded colors with tokens.For consistency with the color token approach adopted at line 145, the hard-coded
'#E0E0E0'values at lines 104 and 184 could be replaced with an appropriate token (e.g.,slate300or similar).If a matching token exists in
@/utils/colors, apply this diff:- borderColor={'#E0E0E0'} + borderColor={slate300}And:
- <Separator - backgroundColor={'#E0E0E0'} + <Separator + backgroundColor={slate300}Also applies to: 184-184
app/src/screens/documents/scanning/DocumentNFCScanScreen.web.tsx (1)
53-53: TODO noted for NFC implementation.The inline TODO indicates that NFC scanning functionality is pending implementation. This is acknowledged but not blocking for the current component migration.
Do you want me to open a tracking issue for implementing the NFC scanning functionality?
app/src/screens/documents/aadhaar/AadhaarUploadErrorScreen.tsx (1)
100-100: TODO noted for help functionality.The inline TODO indicates that help functionality is pending implementation. This is acknowledged but not blocking for the current component migration.
Do you want me to open a tracking issue for implementing the help functionality?
app/src/screens/documents/scanning/DocumentNFCScanScreen.tsx (1)
551-560: Consider extracting duplicate style objects.The inline style objects (e.g.,
{ textAlign: 'center' },{ marginTop: 8 }) are used multiple times. While this works, extracting common styles to constants or using the existing StyleSheet could improve maintainability.Example:
const textStyles = StyleSheet.create({ centered: { textAlign: 'center' as const }, spacingTop: { marginTop: 8 }, });Also applies to: 593-611
app/src/screens/app/ModalScreen.tsx (1)
118-123: Consider removing unnecessary type casts.The explicit casts to
React.ReactNodeappear redundant sinceparams.titleTextandparams.bodyTextare already typed asstringin theModalParamsinterface (line 44-45), and string is assignable toReact.ReactNode. Unless there's a specific runtime scenario requiring this defensive casting, it could be simplified:-<Title style={{ textAlign: 'left' }}> - {params?.titleText as React.ReactNode} -</Title> +<Title style={{ textAlign: 'left' }}> + {params?.titleText} +</Title>app/src/screens/documents/selection/CountryPickerScreen.tsx (1)
143-169: Consider extracting repeated style objects.Multiple inline style objects are created on each render. For improved performance, extract these to
StyleSheet.createoutside the component.Example refactor:
const styles = StyleSheet.create({ suggestionLabel: { fontSize: 16, color: black, fontFamily: dinot, letterSpacing: 0.8, marginBottom: 8, }, countryLabel: { fontSize: 16, color: black, fontFamily: dinot, letterSpacing: 0.8, marginTop: 20, }, });Then use:
<BodyText style={styles.suggestionLabel}>SUGGESTION</BodyText>app/src/screens/verification/ProveScreen.tsx (1)
243-391: Consider extracting inline styles for performance.Multiple inline style objects are created on each render. While functionally correct, extracting these to
StyleSheet.createwould reduce re-allocations and improve render performance.Example:
const styles = StyleSheet.create({ urlText: { fontSize: 12, color: slate300, marginBottom: 20 }, headerText: { fontSize: 24, color: slate300, textAlign: 'center' }, sectionHeader: { fontSize: 16, color: black, fontWeight: '600', marginBottom: 10, }, // ... other repeated styles });.github/workflows/mobile-deploy.yml (1)
380-382: Re‑enable Yarn hardened mode or scope its disablementHardened mode improves supply‑chain protections. Disabling it globally weakens security posture. Prefer enabling by default and disabling only where specific installs require it.
- - name: Disable Yarn hardened mode - run: echo "YARN_ENABLE_HARDENED_MODE=0" >> $GITHUB_ENV + - name: Configure Yarn hardened mode (default: enabled) + run: echo "YARN_ENABLE_HARDENED_MODE=${YARN_ENABLE_HARDENED_MODE:-1}" >> $GITHUB_ENVRepeat similarly for Android job. If certain steps fail under hardened mode, disable it narrowly around those steps with comments and justification.
Also applies to: 983-985
packages/mobile-sdk-alpha/README.md (2)
62-70: Verify Info.plist font filenames match shipped assetsThe listed filenames must exactly match the files in
assets/fonts. Please confirm the names and completeness (case-sensitive on iOS). Consider adding a note that developers should include all fonts shipped by the package.
143-144: Avoid referencing internal src paths; point to exported types/docsConsumers won’t have
src/types/events.tsin published builds. Link to exportedSdkEvents/SDKEventMapfrom the package API or to docs instead.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (4)
packages/mobile-sdk-alpha/assets/fonts/Advercase-Regular.otfis excluded by!**/*.otfpackages/mobile-sdk-alpha/assets/fonts/DINOT-Medium.otfis excluded by!**/*.otfpackages/mobile-sdk-alpha/assets/fonts/IBMPlexMono-Regular.otfis excluded by!**/*.otfyarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (87)
.github/workflows/mobile-deploy.yml(1 hunks)app/index.js(1 hunks)app/jest.config.cjs(2 hunks)app/jest.setup.js(1 hunks)app/package.json(0 hunks)app/src/components/Disclosures.tsx(2 hunks)app/src/components/FeedbackModal.tsx(1 hunks)app/src/components/FeedbackModalScreen.tsx(2 hunks)app/src/components/NavBar/AadhaarNavBar.tsx(1 hunks)app/src/components/NavBar/BaseNavBar.tsx(1 hunks)app/src/components/NavBar/DocumentFlowNavBar.tsx(1 hunks)app/src/components/NavBar/HomeNavBar.tsx(1 hunks)app/src/components/NavBar/IdDetailsNavBar.tsx(1 hunks)app/src/components/Tips.tsx(2 hunks)app/src/components/buttons/PrimaryButtonLongHold.web.tsx(0 hunks)app/src/components/homeScreen/idCard.tsx(1 hunks)app/src/components/typography/BodyText.ts(0 hunks)app/src/components/typography/Caption.tsx(0 hunks)app/src/components/typography/Description.tsx(0 hunks)app/src/components/typography/SubHeader.tsx(0 hunks)app/src/components/typography/Title.tsx(0 hunks)app/src/layouts/SimpleScrolledTitleLayout.tsx(2 hunks)app/src/screens/account/recovery/AccountRecoveryChoiceScreen.tsx(1 hunks)app/src/screens/account/recovery/AccountRecoveryScreen.tsx(1 hunks)app/src/screens/account/recovery/DocumentDataNotFoundScreen.tsx(2 hunks)app/src/screens/account/recovery/RecoverWithPhraseScreen.tsx(2 hunks)app/src/screens/account/settings/CloudBackupScreen.tsx(1 hunks)app/src/screens/account/settings/SettingsScreen.tsx(3 hunks)app/src/screens/account/settings/ShowRecoveryPhraseScreen.tsx(1 hunks)app/src/screens/app/DeferredLinkingInfoScreen.tsx(1 hunks)app/src/screens/app/LaunchScreen.tsx(2 hunks)app/src/screens/app/ModalScreen.tsx(2 hunks)app/src/screens/dev/CreateMockScreen.tsx(2 hunks)app/src/screens/dev/CreateMockScreenDeepLink.tsx(2 hunks)app/src/screens/documents/aadhaar/AadhaarUploadErrorScreen.tsx(2 hunks)app/src/screens/documents/aadhaar/AadhaarUploadScreen.tsx(2 hunks)app/src/screens/documents/aadhaar/AadhaarUploadedSuccessScreen.tsx(2 hunks)app/src/screens/documents/management/DocumentDataInfoScreen.tsx(2 hunks)app/src/screens/documents/management/ManageDocumentsScreen.tsx(1 hunks)app/src/screens/documents/scanning/DocumentCameraScreen.tsx(1 hunks)app/src/screens/documents/scanning/DocumentCameraTroubleScreen.tsx(2 hunks)app/src/screens/documents/scanning/DocumentNFCMethodSelectionScreen.tsx(2 hunks)app/src/screens/documents/scanning/DocumentNFCScanScreen.tsx(3 hunks)app/src/screens/documents/scanning/DocumentNFCScanScreen.web.tsx(2 hunks)app/src/screens/documents/scanning/DocumentNFCTroubleScreen.tsx(3 hunks)app/src/screens/documents/selection/ConfirmBelongingScreen.tsx(2 hunks)app/src/screens/documents/selection/CountryPickerScreen.tsx(5 hunks)app/src/screens/documents/selection/DocumentOnboardingScreen.tsx(1 hunks)app/src/screens/documents/selection/IDPickerScreen.tsx(3 hunks)app/src/screens/home/ProofHistoryList.tsx(2 hunks)app/src/screens/home/ProofHistoryScreen.tsx(2 hunks)app/src/screens/onboarding/AccountVerifiedSuccessScreen.tsx(1 hunks)app/src/screens/onboarding/DisclaimerScreen.tsx(1 hunks)app/src/screens/onboarding/SaveRecoveryPhraseScreen.tsx(3 hunks)app/src/screens/shared/ComingSoonScreen.tsx(2 hunks)app/src/screens/verification/ProofRequestStatusScreen.tsx(1 hunks)app/src/screens/verification/ProveScreen.tsx(8 hunks)app/src/screens/verification/QRCodeTroubleScreen.tsx(2 hunks)app/src/screens/verification/QRCodeViewFinderScreen.tsx(1 hunks)app/version.json(1 hunks)packages/mobile-sdk-alpha/README.md(1 hunks)packages/mobile-sdk-alpha/package.json(3 hunks)packages/mobile-sdk-alpha/react-native.config.cjs(1 hunks)packages/mobile-sdk-alpha/src/components/buttons/AbstractButton.tsx(4 hunks)packages/mobile-sdk-alpha/src/components/buttons/HeldPrimaryButtonProveScreen.tsx(2 hunks)packages/mobile-sdk-alpha/src/components/buttons/PrimaryButton.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/buttons/PrimaryButtonLongHold.shared.ts(1 hunks)packages/mobile-sdk-alpha/src/components/buttons/PrimaryButtonLongHold.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/buttons/PrimaryButtonLongHold.web.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/buttons/SecondaryButton.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/flag/RoundFlag.tsx(4 hunks)packages/mobile-sdk-alpha/src/components/index.ts(1 hunks)packages/mobile-sdk-alpha/src/components/screens/NFCScannerScreen.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/screens/PassportCameraScreen.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/screens/QRCodeScreen.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/typography/Additional.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/typography/BodyText.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/typography/Caption.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/typography/Caution.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/typography/Description.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/typography/DescriptionTitle.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/typography/SubHeader.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/typography/Title.tsx(1 hunks)packages/mobile-sdk-alpha/src/components/typography/styles.ts(1 hunks)packages/mobile-sdk-alpha/src/utils/fonts.ts(1 hunks)packages/mobile-sdk-alpha/src/utils/styleUtils.ts(1 hunks)packages/mobile-sdk-alpha/tsup.config.ts(3 hunks)
💤 Files with no reviewable changes (7)
- app/src/components/typography/BodyText.ts
- app/src/components/typography/Title.tsx
- app/src/components/typography/Caption.tsx
- app/src/components/buttons/PrimaryButtonLongHold.web.tsx
- app/package.json
- app/src/components/typography/Description.tsx
- app/src/components/typography/SubHeader.tsx
🧰 Additional context used
📓 Path-based instructions (2)
packages/mobile-sdk-alpha/**/*.{ts,tsx,js,jsx}
⚙️ CodeRabbit configuration file
packages/mobile-sdk-alpha/**/*.{ts,tsx,js,jsx}: Review alpha mobile SDK code for:
- API consistency with core SDK
- Platform-neutral abstractions
- Performance considerations
- Clear experimental notes or TODOs
Files:
packages/mobile-sdk-alpha/src/components/buttons/PrimaryButton.tsxpackages/mobile-sdk-alpha/src/components/typography/Description.tsxpackages/mobile-sdk-alpha/src/components/buttons/PrimaryButtonLongHold.shared.tspackages/mobile-sdk-alpha/src/components/buttons/PrimaryButtonLongHold.web.tsxpackages/mobile-sdk-alpha/src/components/typography/SubHeader.tsxpackages/mobile-sdk-alpha/src/components/buttons/AbstractButton.tsxpackages/mobile-sdk-alpha/src/components/screens/NFCScannerScreen.tsxpackages/mobile-sdk-alpha/src/utils/fonts.tspackages/mobile-sdk-alpha/src/utils/styleUtils.tspackages/mobile-sdk-alpha/src/components/typography/Additional.tsxpackages/mobile-sdk-alpha/src/components/flag/RoundFlag.tsxpackages/mobile-sdk-alpha/src/components/typography/Title.tsxpackages/mobile-sdk-alpha/tsup.config.tspackages/mobile-sdk-alpha/src/components/screens/PassportCameraScreen.tsxpackages/mobile-sdk-alpha/src/components/index.tspackages/mobile-sdk-alpha/src/components/typography/styles.tspackages/mobile-sdk-alpha/src/components/typography/DescriptionTitle.tsxpackages/mobile-sdk-alpha/src/components/typography/BodyText.tsxpackages/mobile-sdk-alpha/src/components/buttons/SecondaryButton.tsxpackages/mobile-sdk-alpha/src/components/typography/Caption.tsxpackages/mobile-sdk-alpha/src/components/screens/QRCodeScreen.tsxpackages/mobile-sdk-alpha/src/components/typography/Caution.tsxpackages/mobile-sdk-alpha/src/components/buttons/PrimaryButtonLongHold.tsxpackages/mobile-sdk-alpha/src/components/buttons/HeldPrimaryButtonProveScreen.tsx
app/src/**/*.{ts,tsx,js,jsx}
⚙️ CodeRabbit configuration file
app/src/**/*.{ts,tsx,js,jsx}: Review React Native TypeScript code for:
- Component architecture and reusability
- State management patterns
- Performance optimizations
- TypeScript type safety
- React hooks usage and dependencies
- Navigation patterns
Files:
app/src/components/NavBar/HomeNavBar.tsxapp/src/screens/documents/selection/IDPickerScreen.tsxapp/src/screens/account/settings/ShowRecoveryPhraseScreen.tsxapp/src/screens/documents/scanning/DocumentNFCScanScreen.web.tsxapp/src/components/Disclosures.tsxapp/src/screens/app/ModalScreen.tsxapp/src/screens/dev/CreateMockScreen.tsxapp/src/screens/documents/scanning/DocumentCameraScreen.tsxapp/src/screens/onboarding/DisclaimerScreen.tsxapp/src/screens/account/settings/SettingsScreen.tsxapp/src/components/NavBar/IdDetailsNavBar.tsxapp/src/screens/documents/aadhaar/AadhaarUploadScreen.tsxapp/src/screens/verification/QRCodeViewFinderScreen.tsxapp/src/screens/documents/scanning/DocumentNFCMethodSelectionScreen.tsxapp/src/screens/account/recovery/AccountRecoveryChoiceScreen.tsxapp/src/screens/documents/management/DocumentDataInfoScreen.tsxapp/src/screens/documents/aadhaar/AadhaarUploadErrorScreen.tsxapp/src/layouts/SimpleScrolledTitleLayout.tsxapp/src/screens/documents/scanning/DocumentNFCScanScreen.tsxapp/src/screens/verification/ProofRequestStatusScreen.tsxapp/src/screens/account/recovery/AccountRecoveryScreen.tsxapp/src/components/NavBar/DocumentFlowNavBar.tsxapp/src/components/homeScreen/idCard.tsxapp/src/screens/verification/QRCodeTroubleScreen.tsxapp/src/components/FeedbackModalScreen.tsxapp/src/screens/onboarding/SaveRecoveryPhraseScreen.tsxapp/src/screens/app/LaunchScreen.tsxapp/src/components/NavBar/AadhaarNavBar.tsxapp/src/components/FeedbackModal.tsxapp/src/screens/home/ProofHistoryList.tsxapp/src/screens/account/recovery/RecoverWithPhraseScreen.tsxapp/src/screens/onboarding/AccountVerifiedSuccessScreen.tsxapp/src/screens/documents/selection/CountryPickerScreen.tsxapp/src/screens/account/settings/CloudBackupScreen.tsxapp/src/screens/documents/scanning/DocumentCameraTroubleScreen.tsxapp/src/screens/documents/scanning/DocumentNFCTroubleScreen.tsxapp/src/screens/home/ProofHistoryScreen.tsxapp/src/screens/documents/selection/ConfirmBelongingScreen.tsxapp/src/screens/documents/management/ManageDocumentsScreen.tsxapp/src/screens/documents/selection/DocumentOnboardingScreen.tsxapp/src/screens/app/DeferredLinkingInfoScreen.tsxapp/src/components/Tips.tsxapp/src/screens/dev/CreateMockScreenDeepLink.tsxapp/src/screens/verification/ProveScreen.tsxapp/src/components/NavBar/BaseNavBar.tsxapp/src/screens/shared/ComingSoonScreen.tsxapp/src/screens/documents/aadhaar/AadhaarUploadedSuccessScreen.tsxapp/src/screens/account/recovery/DocumentDataNotFoundScreen.tsx
🧠 Learnings (19)
📓 Common learnings
Learnt from: CR
PR: selfxyz/self#0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Use actual imports from selfxyz/mobile-sdk-alpha in tests
Learnt from: CR
PR: selfxyz/self#0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Update the app to consume the mobile-sdk-alpha package and replace local modules with SDK imports
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
PR: selfxyz/self#0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Applies to src/**/*.{js,ts,tsx,jsx} : Use `react-navigation/native` with `createStaticNavigation` for type-safe navigation in React Native.
Applied to files:
app/src/screens/app/ModalScreen.tsxapp/src/screens/onboarding/DisclaimerScreen.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
PR: selfxyz/self#0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Do NOT mock selfxyz/mobile-sdk-alpha in tests (avoid jest.mock('selfxyz/mobile-sdk-alpha') and replacing real functions with mocks)
Applied to files:
app/src/screens/dev/CreateMockScreen.tsxapp/jest.config.cjs
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
PR: selfxyz/self#0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Use actual imports from selfxyz/mobile-sdk-alpha in tests
Applied to files:
app/src/screens/dev/CreateMockScreen.tsxapp/src/screens/documents/scanning/DocumentCameraScreen.tsxapp/src/screens/verification/QRCodeViewFinderScreen.tsxapp/jest.config.cjsapp/src/screens/verification/ProofRequestStatusScreen.tsxpackages/mobile-sdk-alpha/src/components/typography/styles.tsapp/src/screens/onboarding/AccountVerifiedSuccessScreen.tsxapp/src/screens/documents/management/ManageDocumentsScreen.tsxapp/src/screens/app/DeferredLinkingInfoScreen.tsxapp/src/screens/shared/ComingSoonScreen.tsx
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
PR: selfxyz/self#0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to app/jest.setup.js : Provide comprehensive Jest setup in app/jest.setup.js with required mocks
Applied to files:
app/jest.setup.js
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
PR: selfxyz/self#0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Applies to jest.setup.js : Comprehensive mocks for all native modules must be set up in `jest.setup.js`.
Applied to files:
app/jest.setup.js
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
PR: selfxyz/self#0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Enable tree shaking for the SDK (e.g., ensure 'sideEffects' is correctly set in package.json and exports are ESM-friendly)
Applied to files:
packages/mobile-sdk-alpha/package.json
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
PR: selfxyz/self#0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/**/package.json : Ensure package exports are properly configured
Applied to files:
packages/mobile-sdk-alpha/package.json
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
PR: selfxyz/self#0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Avoid introducing circular dependencies
Applied to files:
packages/mobile-sdk-alpha/package.jsonpackages/mobile-sdk-alpha/tsup.config.tsapp/src/screens/app/DeferredLinkingInfoScreen.tsx
📚 Learning: 2025-08-26T12:48:14.120Z
Learnt from: aaronmgdr
PR: selfxyz/self#951
File: app/src/screens/passport/PassportNFCScanScreen.web.tsx:8-9
Timestamp: 2025-08-26T12:48:14.120Z
Learning: SecondaryButton forwards the trackEvent prop to AbstractButton via prop spreading (...props). AbstractButton handles analytics tracking in its handlePress method using the legacy analytics() system rather than the new Self SDK approach, ensuring button analytics work consistently across the app.
Applied to files:
packages/mobile-sdk-alpha/src/components/buttons/AbstractButton.tsx
📚 Learning: 2025-08-26T12:48:14.120Z
Learnt from: aaronmgdr
PR: selfxyz/self#951
File: app/src/screens/passport/PassportNFCScanScreen.web.tsx:8-9
Timestamp: 2025-08-26T12:48:14.120Z
Learning: SecondaryButton in the app forwards the trackEvent prop to AbstractButton, which handles analytics integration. SecondaryButton does not need separate trackEvent prop handling as it delegates to AbstractButton.
Applied to files:
packages/mobile-sdk-alpha/src/components/buttons/AbstractButton.tsxpackages/mobile-sdk-alpha/src/components/buttons/SecondaryButton.tsx
📚 Learning: 2025-08-26T14:49:11.190Z
Learnt from: shazarre
PR: selfxyz/self#936
File: app/src/screens/passport/PassportNFCScanScreen.tsx:28-31
Timestamp: 2025-08-26T14:49:11.190Z
Learning: SelfClientProvider is wrapped in app/App.tsx, providing context for useSelfClient() hook usage throughout the React Native app navigation stacks.
Applied to files:
app/src/screens/documents/aadhaar/AadhaarUploadScreen.tsxapp/src/screens/verification/QRCodeViewFinderScreen.tsxapp/src/screens/documents/scanning/DocumentNFCMethodSelectionScreen.tsxapp/src/screens/documents/aadhaar/AadhaarUploadedSuccessScreen.tsx
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
PR: selfxyz/self#0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/README.md : Document new/updated SDK modules and usage in packages/mobile-sdk-alpha/README.md
Applied to files:
packages/mobile-sdk-alpha/README.md
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
PR: selfxyz/self#0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to app/jest.config.cjs : Configure moduleNameMapper in app/jest.config.cjs to map '@/'' to 'src/' and 'tests/' to 'tests/src/'
Applied to files:
app/jest.config.cjs
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
PR: selfxyz/self#0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to app/jest.config.cjs : Use Jest in the app with a React Native preset configured in app/jest.config.cjs
Applied to files:
app/jest.config.cjs
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
PR: selfxyz/self#0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Module mapping `@/` → `src/`, `tests/` → `tests/src/` must be maintained across the project.
Applied to files:
app/jest.config.cjs
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
PR: selfxyz/self#0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Test isPassportDataValid() with realistic synthetic passport data (never real user data)
Applied to files:
app/src/screens/documents/scanning/DocumentNFCScanScreen.tsxapp/src/screens/dev/CreateMockScreenDeepLink.tsx
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
PR: selfxyz/self#0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/src/index.ts : Re-export new SDK modules via packages/mobile-sdk-alpha/src/index.ts
Applied to files:
packages/mobile-sdk-alpha/src/utils/fonts.tspackages/mobile-sdk-alpha/tsup.config.tspackages/mobile-sdk-alpha/src/components/index.tsapp/src/screens/app/DeferredLinkingInfoScreen.tsx
📚 Learning: 2025-08-25T14:25:57.586Z
Learnt from: aaronmgdr
PR: selfxyz/self#951
File: app/src/providers/authProvider.web.tsx:17-18
Timestamp: 2025-08-25T14:25:57.586Z
Learning: The selfxyz/mobile-sdk-alpha/constants/analytics import path is properly configured with SDK exports, Metro aliases, and TypeScript resolution. Import changes from @/consts/analytics to this path are part of valid analytics migration, not TypeScript resolution issues.
Applied to files:
packages/mobile-sdk-alpha/src/components/typography/Additional.tsxpackages/mobile-sdk-alpha/src/components/typography/styles.tspackages/mobile-sdk-alpha/src/components/buttons/SecondaryButton.tsxapp/src/screens/app/DeferredLinkingInfoScreen.tsx
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: build-deps
- GitHub Check: e2e-ios
- GitHub Check: analyze-android
- GitHub Check: ios-e2e
🔇 Additional comments (92)
app/src/components/homeScreen/idCard.tsx (1)
145-145: LGTM! Color token adoption improves maintainability.The change from hard-coded hex color to the
slate400token aligns with the project-wide design system migration and improves color consistency across the codebase.app/src/screens/shared/ComingSoonScreen.tsx (3)
15-21: LGTM! Centralized SDK component imports.The migration to
@selfxyz/mobile-sdk-alpha/componentsaligns with the PR objectives and establishes a consistent pattern for component usage across the app.
139-145: LGTM! Style prop migration looks correct.The consolidated
styleobject preserves the original visual properties (fontSize: 32, textAlign: 'center', color: black, marginBottom: 16) while adapting to the SDK component's expected API.
149-169: LGTM! Both BodyText style migrations are correct.Both BodyText components now use style objects that preserve the original properties:
- First BodyText (lines 149-156): fontSize: 17, centered, black, with spacing
- Second BodyText (lines 162-169): fontSize: 17, centered, slate500, with spacing
The visual output remains unchanged while adopting the standardized SDK component styling approach.
packages/mobile-sdk-alpha/src/components/screens/PassportCameraScreen.tsx (1)
5-5: LGTM: View source migration from tamagui to react-native.The change consolidates the View import to react-native, which is appropriate since the component uses standard StyleSheet-based styling without tamagui-specific features like tokens or theme props.
Verify that visual layout and spacing remain unchanged across test devices, particularly the
gap: 16style at line 48 which may render differently depending on react-native version support.packages/mobile-sdk-alpha/src/components/screens/NFCScannerScreen.tsx (1)
6-6: LGTM: Consistent View migration to react-native.The View import change aligns with the SDK's migration pattern. The component uses standard StyleSheet styling without tamagui-specific features.
packages/mobile-sdk-alpha/src/components/screens/QRCodeScreen.tsx (1)
5-5: LGTM: View migration consistent with SDK consolidation.The import change is straightforward and appropriate for this component's usage pattern.
packages/mobile-sdk-alpha/react-native.config.cjs (1)
24-24: Font assets verifiedDirectory
packages/mobile-sdk-alpha/assets/fontscontains the expected OTF files: Advercase-Regular.otf, DINOT-Medium.otf, IBMPlexMono-Regular.otf.packages/mobile-sdk-alpha/src/components/typography/DescriptionTitle.tsx (1)
11-23: LGTM!The component correctly implements the style override pattern with proper array order (defaults first, external style second) and spreads remaining TextProps appropriately.
packages/mobile-sdk-alpha/src/utils/fonts.ts (1)
9-9: Platform-specific font naming handled correctly.The
plexMonoconstant correctly handles platform differences: iOS uses the font's display name while Android uses the filename-based identifier. This is a standard pattern for cross-platform font usage.packages/mobile-sdk-alpha/src/components/typography/Caution.tsx (1)
8-9: Import path migration completed correctly.The change from path aliases to relative imports aligns with the SDK's internal module structure and matches the pattern used in other typography components.
app/src/screens/documents/scanning/DocumentNFCTroubleScreen.tsx (2)
10-10: Import migration to SDK components completed correctly.The change to import
CaptionandSecondaryButtonfrom the centralized SDK package aligns with the broader typography consolidation effort across the codebase.
83-83: Style prop consolidation aligns with SDK component API.The migration from dedicated props (
color,marginBottom) to inlinestyleobjects provides a more flexible and standard React Native API. The functional behavior remains unchanged.Also applies to: 98-98, 104-104
packages/mobile-sdk-alpha/src/components/typography/Title.tsx (1)
16-35: LGTM!The component correctly implements conditional sizing with proper style merging order (base → size variant → external style). The optional
sizeprop provides a clean API for typography variations.packages/mobile-sdk-alpha/src/components/typography/Description.tsx (1)
15-21: LGTM!The component implements a clean API with an optional
colorprop for common overrides while still accepting fullstyleobjects. The use oftextBreakStrategy="balanced"is appropriate for centered descriptive text.app/src/components/NavBar/DocumentFlowNavBar.tsx (1)
35-37: Style prop consolidation completed correctly.Consolidating
fontFamilyandfontSizeinto a singlestyleobject aligns with the standard React Native styling API and the broader typography migration pattern in this PR.packages/mobile-sdk-alpha/tsup.config.ts (2)
42-42: LGTM! New components barrel entry added.The addition of
'components/index': 'src/components/index.ts'correctly expands the public API surface to support the centralized component exports mentioned in the PR objectives. This aligns with the migration strategy to consolidate typography and button components into the mobile-sdk-alpha package.
73-73: Clarifying comment added for xstate bundling.The comment correctly documents that xstate is included in the bundle rather than externalized. This helps future maintainers understand the bundling strategy.
Also applies to: 118-118
app/src/screens/account/recovery/RecoverWithPhraseScreen.tsx (2)
15-18: LGTM! Import migration to centralized components.The import migration from local components to the
@selfxyz/mobile-sdk-alpha/componentsbarrel is clean and aligns with the PR's goal to centralize UI components.
120-120: Consistent Description styling confirmed
No remaining<Description color=usages found; all instances usestyle={{ color: … }}.app/src/components/NavBar/HomeNavBar.tsx (1)
103-105: LGTM! NavBar.Title styling consolidated to inline style.The change from prop-based styling (
size="large" color={black}) to inline style object (style={{ fontSize: 24, color: black }}) is consistent with the broader refactor across NavBar variants. This provides more explicit control over typography.app/src/screens/onboarding/AccountVerifiedSuccessScreen.tsx (1)
10-14: LGTM! Clean barrel import migration.The consolidation of Description, PrimaryButton, and Title imports into a single barrel import from
@selfxyz/mobile-sdk-alpha/componentsis clean and follows the established migration pattern.app/src/components/FeedbackModal.tsx (1)
9-10: LGTM! Caption import migrated to centralized components.The import path change for Caption from local to
@selfxyz/mobile-sdk-alpha/componentsis straightforward and consistent with the overall migration strategy.app/src/components/Tips.tsx (2)
8-9: LGTM! Caption import migrated successfully.Import path updated to use the centralized
@selfxyz/mobile-sdk-alpha/componentsbarrel.
43-49: Confirm Caption supports mixedsizeandstyleprops. Verify that the importedCaptioncomponent’s prop types includestyleand correctly apply it alongsidesizefor color.app/src/components/NavBar/AadhaarNavBar.tsx (1)
63-72: LGTM! NavBar.Title styling fully consolidated.All typography properties (fontSize, color, fontWeight, fontFamily) have been properly consolidated into a single inline style object. The explicit fontSize of 16 (vs 24 in other NavBars) is appropriate for the "AADHAAR REGISTRATION" header style.
app/src/components/NavBar/IdDetailsNavBar.tsx (1)
44-46: LGTM! Consistent NavBar.Title styling pattern.The inline style consolidation (
style={{ fontSize: 24, color: black }}) matches the pattern used in HomeNavBar and other NavBar variants, ensuring consistency across the navigation header implementations.app/src/screens/documents/selection/DocumentOnboardingScreen.tsx (1)
11-17: LGTM! Clean import migration to SDK barrel.The consolidation of UI component imports from local paths to
@selfxyz/mobile-sdk-alpha/componentsis clean and aligns with the broader codebase migration pattern.app/src/screens/account/settings/ShowRecoveryPhraseScreen.tsx (1)
7-8: LGTM! Straightforward SDK import.The Description component import migration is clean with no functional changes.
app/src/screens/verification/QRCodeTroubleScreen.tsx (1)
7-8: Import migration looks good.app/src/layouts/SimpleScrolledTitleLayout.tsx (2)
10-15: LGTM! Clean barrel import consolidation.
56-61: SecondaryButton supports style prop for marginSecondaryButton’s ButtonProps extends PressableProps and forwards the style prop via restProps to AbstractButton, which merges it into the Pressable container’s style array, so marginBottom is correctly applied.
app/src/screens/documents/scanning/DocumentCameraTroubleScreen.tsx (2)
7-8: LGTM! SDK import migration.
64-67: Verify Caption style prop handles multiple properties.The migration consolidates
fontSize,color, andmarginBottominto a single style object. Ensure the SDK Caption component properly applies all these style properties without conflicts with internal styles.app/src/screens/verification/QRCodeViewFinderScreen.tsx (1)
17-21: LGTM! Clean barrel import migration.The consolidation of typography component imports is straightforward with no functional changes.
app/src/screens/account/settings/SettingsScreen.tsx (2)
16-17: LGTM! Includes both component and utility imports.
122-124: BodyText style prop and merging verified. BodyText accepts thestyleprop, merges[{ fontFamily: dinot }, style], and correctly applies typography properties (color, fontSize, lineHeight) passed viastyle.packages/mobile-sdk-alpha/src/components/buttons/SecondaryButton.tsx (1)
5-8: Relative imports validated. All referenced files exist and resolve correctly.app/src/screens/account/recovery/AccountRecoveryScreen.tsx (1)
8-13: LGTM! Clean component migration.The import migration to the centralized mobile-sdk-alpha package is straightforward and maintains identical component usage patterns.
app/src/screens/account/recovery/AccountRecoveryChoiceScreen.tsx (1)
12-18: LGTM! Consistent migration pattern.The component imports follow the same centralization pattern. All usages remain unchanged and compatible.
app/src/screens/documents/management/ManageDocumentsScreen.tsx (1)
18-21: LGTM! Button import migration.Clean migration of button components to the SDK package with preserved usage patterns.
app/src/screens/onboarding/DisclaimerScreen.tsx (1)
11-15: LGTM! Onboarding component migration.The component imports are migrated correctly with no changes to usage or props.
packages/mobile-sdk-alpha/src/components/buttons/PrimaryButtonLongHold.tsx (1)
5-5: LGTM! Modern import patterns.The changes improve import style by using named imports for React (avoiding unnecessary namespace imports) and relative paths for internal SDK modules. This aligns with modern React practices.
Also applies to: 9-11
packages/mobile-sdk-alpha/src/components/typography/Additional.tsx (1)
8-9: Import paths verifiedslate400is exported from../../constants/colorsanddinotfrom../../utils/fonts.app/src/components/Disclosures.tsx (1)
11-11: BodyText API consistency verified No remaining<BodyText color={…}>usages found; all SDK imports now use thestyleprop for color.app/src/screens/dev/CreateMockScreenDeepLink.tsx (1)
17-22: Description component API is consistent. All<Description>usages now use thestyleprop instead ofcolororfontWeight; no instances of the deprecated props remain.app/src/screens/account/settings/CloudBackupScreen.tsx (1)
12-18: LGTM! Clean SDK component migration.The import consolidation from local components to the centralized SDK package follows the established migration pattern. All imported components are properly used throughout the file.
app/src/screens/documents/selection/ConfirmBelongingScreen.tsx (2)
11-15: LGTM! SDK component imports aligned with migration.Import changes follow the established pattern of centralizing UI components from the SDK package.
149-152: Verify SDK components handle inline style props correctly
Confirm thatTitleandDescription(imported from the mobile SDK) spread/merge incomingstyleprops (e.g.textAlign,paddingBottom) as expected in ConfirmBelongingScreen.tsx (lines 149–152).packages/mobile-sdk-alpha/src/components/buttons/PrimaryButton.tsx (1)
5-8: LGTM! Internal import reorganization.Switching to relative paths for internal SDK modules is a standard refactoring pattern and improves module locality.
app/src/screens/verification/ProofRequestStatusScreen.tsx (1)
14-20: LGTM! Comprehensive SDK component migration.Import consolidation includes both components and typography utilities, maintaining consistency with the centralized SDK approach.
app/src/screens/documents/scanning/DocumentNFCMethodSelectionScreen.tsx (2)
12-18: LGTM! SDK component import alignment.Consolidating UI component imports from the SDK package follows the established migration pattern.
178-180: LGTM! Inline style for error state.Replacing
color="red"prop withstyle={{ color: 'red' }}aligns with the migration to inline style props. This change is consistent with similar updates across other screens.app/src/screens/home/ProofHistoryList.tsx (2)
17-17: LGTM! Simplified import from SDK.Single import statement for
BodyTextfrom the centralized SDK components package.
235-247: LGTM! Consolidated typography styling.Migrating from multiple component-specific props to consolidated inline style objects improves maintainability. The style properties (fontSize, color, fontWeight, fontFamily) are correctly grouped.
app/src/screens/documents/scanning/DocumentCameraScreen.tsx (1)
14-19: LGTM! Final SDK component migration.Import consolidation for UI components (Additional, Description, SecondaryButton, Title) from the centralized SDK package completes the migration pattern observed across all screens.
packages/mobile-sdk-alpha/package.json (1)
92-92: Assets directory verified
Thepackages/mobile-sdk-alpha/assetsfolder exists and contains the intended files.app/src/screens/documents/scanning/DocumentNFCScanScreen.web.tsx (1)
12-16: LGTM! Component migration to SDK.The import migration from local components to
@selfxyz/mobile-sdk-alpha/componentsis clean and aligns with the PR's centralization objectives.app/src/screens/dev/CreateMockScreen.tsx (2)
32-32: LGTM! SDK component imports.The migration to SDK-provided
CaptionandPrimaryButtonis consistent with the centralization effort.
90-93: Caption styling migrated correctly.The inline style explicitly sets
fontSize: 20, which preserves the intended larger caption size for this specific use case. This is appropriate since the new Caption component's default would be 15.app/src/screens/documents/aadhaar/AadhaarUploadScreen.tsx (2)
13-13: LGTM! SDK component imports.The migration to centralized
BodyTextandPrimaryButtoncomponents from@selfxyz/mobile-sdk-alpha/componentsis clean.
172-191: Typography styling consistently migrated.All three
BodyTextinstances now use thestyleprop for typography and spacing, which aligns with the SDK component usage pattern. The styling properties are preserved correctly.app/src/screens/home/ProofHistoryScreen.tsx (2)
18-18: LGTM! SDK component import.The migration to SDK-provided
BodyTextis consistent with the centralization effort.
242-249: Typography styling migrated correctly.Both
BodyTextinstances now use inlinestyleobjects, preserving the intended typography and color values.packages/mobile-sdk-alpha/src/utils/styleUtils.ts (1)
15-20: LGTM! Border width normalization utility.The
normalizeBorderWidthfunction correctly validates input as a non-negative number and safely returnsundefinedfor invalid cases. This defensive approach prevents potential style errors in components.app/src/screens/account/recovery/DocumentDataNotFoundScreen.tsx (2)
11-15: LGTM! SDK component imports.The migration to centralized
Description,PrimaryButton, andTitlecomponents from@selfxyz/mobile-sdk-alpha/componentsis clean and consistent.
46-57: Typography styling migrated correctly.Both
TitleandDescriptioncomponents now use inlinestyleobjects, preserving alignment, color, and spacing properties.app/src/screens/documents/aadhaar/AadhaarUploadErrorScreen.tsx (2)
11-15: LGTM! SDK component imports.The migration to centralized
BodyText,PrimaryButton, andSecondaryButtonfrom@selfxyz/mobile-sdk-alpha/componentsis clean.
63-75: Typography styling migrated correctly.Both
BodyTextinstances now use inlinestyleobjects, preserving font size, alignment, color, and spacing properties.packages/mobile-sdk-alpha/src/components/typography/Caption.tsx (1)
11-19: LGTM! Caption component implementation.The
Captioncomponent provides a clean abstraction with:
- Sensible size variants (small: 14, default: 15, large: 16)
- Appropriate default color (
slate400) for secondary text- Style override capability via the
styleprop- Reuse of
BodyTextfor consistencyThe implementation aligns well with the centralization effort and provides flexibility for different caption use cases across the app.
app/src/screens/onboarding/SaveRecoveryPhraseScreen.tsx (2)
7-13: LGTM - Clean import consolidation.The consolidated barrel import from
@selfxyz/mobile-sdk-alpha/componentsaligns with the SDK migration pattern. This reduces import verbosity and centralizes component sourcing.
48-64: LGTM - Style prop migration is correct.The migration from individual layout/typography props to inline
styleobjects is consistent and maintains the same visual behavior. The approach is clean and follows React Native best practices.packages/mobile-sdk-alpha/src/components/flag/RoundFlag.tsx (2)
25-39: LGTM - Improved testability.Refactoring
findFlagComponentto accept theCountryFlagscollection as a parameter improves testability and follows dependency injection principles. The pattern matching logic remains intact.
66-66: LGTM - Visual consistency improvement.Adding
borderRadius: size / 2to the fallback View ensures the placeholder maintains a circular shape consistent with the flag components.app/src/screens/documents/scanning/DocumentNFCScanScreen.tsx (1)
39-44: LGTM - Import consolidation.The consolidated import from
@selfxyz/mobile-sdk-alpha/componentsfollows the SDK migration pattern and keeps the imports clean.app/src/screens/app/ModalScreen.tsx (1)
10-15: LGTM - Import consolidation.The consolidated barrel import simplifies the component dependencies and follows the SDK migration pattern.
app/jest.config.cjs (2)
9-9: LGTM - SVG package transformation.Adding
react-native-svgandreact-native-svg-circle-country-flagsto thetransformIgnorePatternsensures these packages are properly transformed by Babel during testing. This aligns with the mock setup injest.setup.js.
20-25: LGTM - Module path aliasing.The new module mappers correctly:
- Point
react-native-svgto the app's node_modules (preventing version conflicts)- Map
@selfxyz/mobile-sdk-alpha/componentsto the built CJS outputThis ensures test imports resolve consistently to the compiled SDK components.
app/src/screens/documents/aadhaar/AadhaarUploadedSuccessScreen.tsx (2)
11-11: LGTM - Import migration.The import from
@selfxyz/mobile-sdk-alpha/componentsfollows the centralization pattern.
47-59: LGTM - Style prop migration.The migration to inline
styleobjects maintains the same visual styling while following the new component API. The formatting is clean and consistent.app/src/screens/app/LaunchScreen.tsx (2)
11-15: LGTM - Import consolidation.The consolidated import from
@selfxyz/mobile-sdk-alpha/componentssimplifies dependencies and follows the SDK migration strategy.
69-79: LGTM - Comprehensive style object.The style object correctly consolidates all previous individual props (
color,fontSize,textAlign,marginHorizontal,marginBottom) into a single object. This maintains the same visual appearance while following the new component API.app/src/screens/documents/selection/IDPickerScreen.tsx (2)
12-12: LGTM - Import consolidation.The consolidated import from
@selfxyz/mobile-sdk-alpha/componentscorrectly brings inBodyTextandRoundFlag, replacing the previous local imports.
134-142: LGTM - Consistent style object migration.The migration to inline
styleobjects is applied consistently across allBodyTextinstances. The styling maintains the previous visual hierarchy with appropriate font families, sizes, and colors for each text element (header, titles, descriptions, helper text).Also applies to: 160-173, 179-187
packages/mobile-sdk-alpha/src/components/typography/BodyText.tsx (1)
11-13: LGTM! Clean typography wrapper.The component correctly merges the default font with incoming styles using array syntax, preserving style override capability for consumers.
packages/mobile-sdk-alpha/src/components/buttons/HeldPrimaryButtonProveScreen.tsx (1)
5-15: LGTM! Import organization improved.The migration to type-only React imports and relative paths for internal SDK dependencies follows best practices and maintains the existing API surface.
app/src/screens/documents/selection/CountryPickerScreen.tsx (1)
15-15: LGTM! Centralized imports from SDK.Successfully migrated to consume BodyText and RoundFlag from the mobile-sdk-alpha package.
app/src/screens/verification/ProveScreen.tsx (1)
27-31: LGTM! SDK component migration complete.Successfully migrated UI primitives to the centralized mobile-sdk-alpha barrel, improving maintainability.
packages/mobile-sdk-alpha/src/components/buttons/AbstractButton.tsx (1)
64-84: LGTM! Clean migration from Button to Pressable.The implementation correctly:
- Uses Pressable's style function to access pressed state
- Applies pressedStyle conditionally when not animated
- Migrates analytics to the Self SDK client
- Maintains the existing public API surface
app/jest.setup.js (1)
685-727: LGTM! Comprehensive SVG mock for tests.The mock implementation provides adequate coverage for testing:
- SvgXml with ref forwarding for integration tests
- Stub components for common SVG elements
- Proper displayName for debugging
The use of
dangerouslySetInnerHTMLis acceptable in test mocks.packages/mobile-sdk-alpha/src/components/index.ts (1)
5-38: LGTM! Well-organized public API surface.The barrel export consolidates typography, buttons, flags, and style utilities into a single import point, enabling clean consumption across the codebase.
app/version.json (1)
3-3: Build numbers bump looks correctNo issues spotted with the iOS/Android build increments.
Also applies to: 7-7
packages/mobile-sdk-alpha/src/components/buttons/PrimaryButtonLongHold.web.tsx
Show resolved
Hide resolved
* fix caption and title text color * fix nfc body text color * fix issues * use memo
* update workflows with cleaner caching logic * cache fixes
🚀 Weekly Release to Staging
Release Date: October 11, 2025
Release Branch:
release/staging-2025-10-11This automated PR promotes a snapshot of
devtostagingfor testing.What's Included
All commits merged to
devup to the branch creation time.Note: This PR uses a dedicated release branch, so new commits to
devwill NOT automatically appear here.Review Checklist
Next Steps
After merging, the staging environment will be updated. A production release PR will be created on Sunday.
This PR was automatically created by the Release Calendar workflow on October 11, 2025
Summary by CodeRabbit
New Features
Improvements
Tests
Documentation
Chores