Skip to content
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

feat(suite-native): device onboarding tutorial #17638

Merged
merged 1 commit into from
Mar 17, 2025

Conversation

PeKne
Copy link
Contributor

@PeKne PeKne commented Mar 13, 2025

Description

  • device tutorial added to the device onboarding flow

Related Issue

Resolve #17628

Screenshots:

Screen.Recording.2025-03-13.at.11.08.43.AM.mov

@PeKne PeKne added the mobile Suite Lite issues and PRs label Mar 13, 2025
@PeKne PeKne requested a review from a team as a code owner March 13, 2025 10:59
Copy link

coderabbitai bot commented Mar 13, 2025

Walkthrough

The pull request introduces several configuration and code modifications across the suite-native modules. Key changes include the addition of new dependencies such as @trezor/env-utils and @trezor/connect, alongside updates to TypeScript reference paths in relevant tsconfig.json files. A new React component, ContinueOnTrezorScreenContent, has been created and exported to encapsulate UI logic originally spread over multiple components. This component is further integrated into modified screens, refactoring existing components to delegate rendering responsibilities. The device onboarding flow sees enhancements with the addition of a new screen, DeviceTutorialScreen, which is incorporated into the navigation stack and associated routes. Additionally, navigation transitions have been updated, replacing toast notifications with direct navigation actions in screens managing firmware updates. A new localization entry has been added to support a tutorial interface, and minor formatting changes were made in configuration files.

Tip

⚡🧪 Multi-step agentic review comment chat (experimental)
  • We're introducing multi-step agentic chat in review comments. This experimental feature enhances review discussions with the CodeRabbit agentic chat by enabling advanced interactions, including the ability to create pull requests directly from comments.
    - To enable this feature, set early_access to true under in the settings.

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4875d2d and fc4b427.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (17)
  • suite-native/device/package.json (1 hunks)
  • suite-native/device/src/components/ContinueOnTrezorScreenContent.tsx (1 hunks)
  • suite-native/device/src/index.ts (1 hunks)
  • suite-native/device/tsconfig.json (1 hunks)
  • suite-native/intl/src/en.ts (1 hunks)
  • suite-native/module-dev-utils/tsconfig.json (1 hunks)
  • suite-native/module-device-onboarding/package.json (1 hunks)
  • suite-native/module-device-onboarding/src/navigation/DeviceOnboardingStackNavigator.tsx (2 hunks)
  • suite-native/module-device-onboarding/src/screens/ConfirmFirmwareUpdateScreen.tsx (2 hunks)
  • suite-native/module-device-onboarding/src/screens/DeviceTutorialScreen.tsx (1 hunks)
  • suite-native/module-device-onboarding/src/screens/FirmwareInstallationScreen.tsx (1 hunks)
  • suite-native/module-device-onboarding/tsconfig.json (1 hunks)
  • suite-native/module-device-settings/package.json (0 hunks)
  • suite-native/module-device-settings/src/screens/ContinueOnTrezorScreen.tsx (1 hunks)
  • suite-native/module-device-settings/tsconfig.json (0 hunks)
  • suite-native/navigation/src/navigators.ts (1 hunks)
  • suite-native/navigation/src/routes.ts (1 hunks)
💤 Files with no reviewable changes (2)
  • suite-native/module-device-settings/tsconfig.json
  • suite-native/module-device-settings/package.json
🚧 Files skipped from review as they are similar to previous changes (13)
  • suite-native/device/package.json
  • suite-native/device/src/index.ts
  • suite-native/navigation/src/routes.ts
  • suite-native/device/tsconfig.json
  • suite-native/module-device-onboarding/package.json
  • suite-native/module-device-onboarding/src/navigation/DeviceOnboardingStackNavigator.tsx
  • suite-native/module-device-onboarding/tsconfig.json
  • suite-native/module-device-onboarding/src/screens/DeviceTutorialScreen.tsx
  • suite-native/device/src/components/ContinueOnTrezorScreenContent.tsx
  • suite-native/navigation/src/navigators.ts
  • suite-native/module-device-onboarding/src/screens/ConfirmFirmwareUpdateScreen.tsx
  • suite-native/intl/src/en.ts
  • suite-native/module-dev-utils/tsconfig.json
⏰ Context from checks skipped due to timeout of 90000ms (15)
  • GitHub Check: PR-check / node-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
  • GitHub Check: PR-check / node-override init-api-flaky
  • GitHub Check: PR-check / web-override init-api-flaky
  • GitHub Check: PR-check / web-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
  • GitHub Check: build-deploy
  • GitHub Check: build-deploy
  • GitHub Check: EAS Update
  • GitHub Check: prepare_android_test_app
  • GitHub Check: build-web
  • GitHub Check: test
  • GitHub Check: Analyze with CodeQL (javascript)
  • GitHub Check: Setup and Cache Dependencies
  • GitHub Check: transport-e2e-test
  • GitHub Check: connect-web-e2e
  • GitHub Check: Socket Security: Pull Request Alerts
🔇 Additional comments (5)
suite-native/module-device-settings/src/screens/ContinueOnTrezorScreen.tsx (2)

1-1: Good refactoring approach with proper component import.

The import of ContinueOnTrezorScreenContent from @suite-native/device demonstrates a good separation of concerns, moving reusable UI logic to a separate component that can be used across different parts of the application.


5-9: Clean component refactoring with improved structure.

The refactoring simplifies the ContinueOnTrezorScreen component by:

  1. Using implicit return syntax for cleaner, more concise code
  2. Delegating content rendering to the specialized ContinueOnTrezorScreenContent component
  3. Maintaining the DeviceInteractionScreenWrapper for consistent layout and behavior

This approach improves maintainability and follows the single responsibility principle.

suite-native/module-device-onboarding/src/screens/FirmwareInstallationScreen.tsx (3)

2-6: Updated navigation imports align with new functionality.

The added navigation types from @suite-native/navigation properly support the new navigation-based approach for handling firmware installation completion.


10-15: Component signature updated to support navigation.

The function signature has been properly updated to accept a navigation prop with appropriate TypeScript typing. This change is necessary to support the navigation functionality implemented in the success handler.


16-18: Improved user flow with direct navigation.

Replacing toast notifications with direct navigation to the tutorial screen creates a more streamlined onboarding experience. This change aligns well with the PR objective of enhancing the device onboarding flow with a tutorial.

✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
suite-native/module-dev-utils/tsconfig.json (1)

8-8: Formatting improvement for consistency

The change from multi-line to single-line format for the trading reference improves consistency with other entries in the file. This is a good practice for maintaining clean configuration files.

Consider applying this single-line format to the other multi-line reference entries in this file (lines 5-7 and 9-11) for complete consistency.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7767749 and 776dc30.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (15)
  • suite-native/device/package.json (1 hunks)
  • suite-native/device/src/components/ContinueOnTrezorScreenContent.tsx (1 hunks)
  • suite-native/device/src/index.ts (1 hunks)
  • suite-native/device/tsconfig.json (1 hunks)
  • suite-native/intl/src/en.ts (1 hunks)
  • suite-native/module-dev-utils/tsconfig.json (1 hunks)
  • suite-native/module-device-onboarding/package.json (1 hunks)
  • suite-native/module-device-onboarding/src/navigation/DeviceOnboardingStackNavigator.tsx (2 hunks)
  • suite-native/module-device-onboarding/src/screens/ConfirmFirmwareUpdateScreen.tsx (2 hunks)
  • suite-native/module-device-onboarding/src/screens/DeviceTutorialScreen.tsx (1 hunks)
  • suite-native/module-device-onboarding/src/screens/FirmwareInstallationScreen.tsx (1 hunks)
  • suite-native/module-device-onboarding/tsconfig.json (1 hunks)
  • suite-native/module-device-settings/src/screens/ContinueOnTrezorScreen.tsx (1 hunks)
  • suite-native/navigation/src/navigators.ts (1 hunks)
  • suite-native/navigation/src/routes.ts (1 hunks)
🔇 Additional comments (24)
suite-native/navigation/src/routes.ts (1)

44-44: LGTM! Good addition to support the device tutorial feature.

This addition to the DeviceOnboardingStackRoutes enum introduces a new route that aligns with the PR objective of adding a device onboarding tutorial. The placement at the end of the enum is appropriate, and the naming follows the established convention.

suite-native/device/package.json (1)

35-35: LGTM! Dependency correctly added.

The addition of @trezor/env-utils as a workspace dependency is properly formatted and positioned alphabetically in the dependencies list. This dependency is likely required for the new ContinueOnTrezorScreenContent component functionality.

suite-native/device/src/index.ts (1)

13-13: LGTM! Appropriate export for the new component.

The export of the ContinueOnTrezorScreenContent component allows it to be used by other modules in the codebase. This is consistent with the pattern of other component exports and supports the device tutorial feature being added.

suite-native/device/tsconfig.json (1)

33-33: LGTM! TypeScript reference correctly added.

The addition of the reference path to ../../packages/env-utils is consistent with the new dependency in package.json and follows the pattern of other package references. This ensures proper TypeScript compilation support for the new dependency.

suite-native/module-device-onboarding/tsconfig.json (1)

10-10: References properly updated for new dependency

The addition of the connect package reference aligns with the corresponding package.json dependency addition, allowing proper TypeScript compilation for the device tutorial feature.

suite-native/module-device-onboarding/package.json (1)

23-23: Dependency correctly added for tutorial functionality

The @trezor/connect dependency has been properly added using workspace syntax, which is required for the device tutorial feature mentioned in the PR objectives.

suite-native/intl/src/en.ts (1)

862-864: Added localization key for new tutorial screen

The new deviceTutorialScreen entry with a clear, descriptive title matches the PR objective of adding a device tutorial to the onboarding flow.

suite-native/navigation/src/navigators.ts (1)

131-131: New route added for device tutorial

The addition of [DeviceOnboardingStackRoutes.DeviceTutorial]: undefined; to the DeviceOnboardingStackParamList type correctly integrates the new tutorial screen into the navigation flow, consistent with the PR objective of adding a device onboarding tutorial.

suite-native/device/src/components/ContinueOnTrezorScreenContent.tsx (3)

1-9: Import organization looks good

Your imports are well-organized, separating external libraries from internal modules.


11-13: Props interface is clear and minimal

Good job keeping the props interface simple with an optional translation key.


22-44: Component implementation is clean and responsive

The component is well-structured and follows responsive design principles:

  • Uses translation keys for internationalization
  • Properly applies styles
  • Has responsive sizing based on screen height
  • Uses Redux for device model information
suite-native/module-device-onboarding/src/screens/DeviceTutorialScreen.tsx (1)

28-32: Component rendering is clean and modular

The component properly leverages the DeviceOnboardingScreenWithExitButton and ContinueOnTrezorScreenContent components, providing a consistent UI experience with the rest of the application.

suite-native/module-device-onboarding/src/navigation/DeviceOnboardingStackNavigator.tsx (2)

10-10: Import for new screen added correctly

The import for the new DeviceTutorialScreen is appropriately placed with the other screen imports.


43-46: New screen added to navigator

The DeviceTutorialScreen is correctly added to the DeviceOnboardingStack.Navigator with the proper route name.

suite-native/module-device-onboarding/src/screens/FirmwareInstallationScreen.tsx (3)

2-6: Appropriate import updates for navigation support

The imports have been updated to include navigation-related types from '@suite-native/navigation', replacing the previously used toast notifications. This aligns with the new navigation-based flow.


10-15: Well-typed navigation prop implementation

The component now properly accepts a navigation prop with appropriate TypeScript types, ensuring type safety when navigating between screens in the onboarding flow.


16-18: Flow improvement: Direct navigation to tutorial

Instead of showing a toast notification after firmware installation, the component now navigates directly to the DeviceTutorial screen, creating a more streamlined user experience for device onboarding.

suite-native/module-device-onboarding/src/screens/ConfirmFirmwareUpdateScreen.tsx (5)

4-5: Proper import for focus effect

The useFocusEffect import is correctly maintained while other navigation-related imports have been updated.


15-16: Appropriate StackProps import

The StackProps type is properly imported to support the component's navigation prop typing.


20-25: Well-structured component with navigation prop

The component now accepts navigation as a prop with correct TypeScript typing, which is more explicit and testable than using the useNavigation hook.


32-35: Improved flow for users with latest firmware

For users who already have the latest firmware, the component now directly navigates to the tutorial screen rather than showing a notification. The dependency array has been properly updated to include navigation.


41-43: Consistent navigation to tutorial

The handleSkipUpdate function now navigates directly to the DeviceTutorial screen, maintaining a consistent navigation flow regardless of whether the user updates firmware or skips it.

suite-native/module-device-settings/src/screens/ContinueOnTrezorScreen.tsx (2)

1-1: Good component reuse

Importing the extracted ContinueOnTrezorScreenContent component promotes code reuse across the application.


5-9: Clean component refactoring

The component has been simplified to a functional expression that directly returns JSX. This refactoring improves readability and maintainability by delegating the content rendering to the specialized ContinueOnTrezorScreenContent component.

@PeKne
Copy link
Contributor Author

PeKne commented Mar 13, 2025

/rebase

Copy link

@trezor-ci trezor-ci force-pushed the feat/native/device-onboarding-device-tutorial branch from 776dc30 to 18da698 Compare March 13, 2025 11:08
@PeKne PeKne force-pushed the feat/native/device-onboarding-device-tutorial branch from 18da698 to 4875d2d Compare March 13, 2025 11:09
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
suite-native/module-device-onboarding/src/screens/DeviceTutorialScreen.tsx (1)

14-26: ⚠️ Potential issue

Incomplete implementation with missing error handling

There are two issues in the tutorial implementation:

  1. There's a TODO comment indicating that navigation to an authentication check screen is not implemented.
  2. The useEffect lacks error handling for the TrezorConnect.showDeviceTutorial call.

Consider adding error handling and implementing the navigation:

 useEffect(() => {
     const showTutorial = async () => {
-         await TrezorConnect.showDeviceTutorial({ device });
-         showToast({
-             message: 'TUTORIAL COMPLETED. TODO: navigate to auth. check screen.',
-             variant: 'success',
-         });
+         try {
+             await TrezorConnect.showDeviceTutorial({ device });
+             showToast({
+                 message: 'Tutorial completed',
+                 variant: 'success',
+             });
+             // Navigate to the security check screen
+             navigation.navigate(DeviceOnboardingStackRoutes.SecurityCheck);
+         } catch (error) {
+             showToast({
+                 message: 'Failed to display tutorial',
+                 variant: 'error',
+             });
+         }
     };
     showTutorial();

     // This use effect should be triggered only during the first render
     // eslint-disable-next-line react-hooks/exhaustive-deps
 }, []);
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 776dc30 and 4875d2d.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (15)
  • suite-native/device/package.json (1 hunks)
  • suite-native/device/src/components/ContinueOnTrezorScreenContent.tsx (1 hunks)
  • suite-native/device/src/index.ts (1 hunks)
  • suite-native/device/tsconfig.json (1 hunks)
  • suite-native/intl/src/en.ts (1 hunks)
  • suite-native/module-dev-utils/tsconfig.json (1 hunks)
  • suite-native/module-device-onboarding/package.json (1 hunks)
  • suite-native/module-device-onboarding/src/navigation/DeviceOnboardingStackNavigator.tsx (2 hunks)
  • suite-native/module-device-onboarding/src/screens/ConfirmFirmwareUpdateScreen.tsx (2 hunks)
  • suite-native/module-device-onboarding/src/screens/DeviceTutorialScreen.tsx (1 hunks)
  • suite-native/module-device-onboarding/src/screens/FirmwareInstallationScreen.tsx (1 hunks)
  • suite-native/module-device-onboarding/tsconfig.json (1 hunks)
  • suite-native/module-device-settings/src/screens/ContinueOnTrezorScreen.tsx (1 hunks)
  • suite-native/navigation/src/navigators.ts (1 hunks)
  • suite-native/navigation/src/routes.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (10)
  • suite-native/module-device-onboarding/tsconfig.json
  • suite-native/device/package.json
  • suite-native/module-dev-utils/tsconfig.json
  • suite-native/device/tsconfig.json
  • suite-native/navigation/src/routes.ts
  • suite-native/device/src/index.ts
  • suite-native/navigation/src/navigators.ts
  • suite-native/module-device-onboarding/package.json
  • suite-native/intl/src/en.ts
  • suite-native/device/src/components/ContinueOnTrezorScreenContent.tsx
⏰ Context from checks skipped due to timeout of 90000ms (19)
  • GitHub Check: PR-check / node-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
  • GitHub Check: PR-check / web-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
  • GitHub Check: PR-check / node-override init-api-flaky
  • GitHub Check: PR-check / web-override init-api-flaky
  • GitHub Check: run-e2e-suite-desktop-tests (@group=wallet, trezor-user-env-unix bitcoin-regtest)
  • GitHub Check: run-e2e-suite-desktop-tests (@group=other, trezor-user-env-unix)
  • GitHub Check: run-e2e-suite-desktop-tests (@group=passphrase, trezor-user-env-unix)
  • GitHub Check: run-e2e-suite-desktop-tests (@group=settings, trezor-user-env-unix bitcoin-regtest)
  • GitHub Check: run-e2e-suite-desktop-tests (@group=device-management, trezor-user-env-unix)
  • GitHub Check: run-e2e-suite-desktop-tests (@group=suite, trezor-user-env-unix)
  • GitHub Check: build-deploy
  • GitHub Check: build-deploy
  • GitHub Check: Setup and Cache Dependencies
  • GitHub Check: transport-e2e-test
  • GitHub Check: build-web
  • GitHub Check: test
  • GitHub Check: prepare_android_test_app
  • GitHub Check: Analyze with CodeQL (javascript)
  • GitHub Check: EAS Update
🔇 Additional comments (8)
suite-native/module-device-onboarding/src/navigation/DeviceOnboardingStackNavigator.tsx (1)

43-46: LGTM! The DeviceTutorial screen is properly integrated

The implementation correctly adds the new DeviceTutorialScreen to the navigation stack with the appropriate route name.

suite-native/module-device-settings/src/screens/ContinueOnTrezorScreen.tsx (1)

1-9: Good refactoring to improve code reuse

The changes simplify the implementation by extracting the rendering logic to a reusable component. This promotes better code organization and maintainability.

suite-native/module-device-onboarding/src/screens/ConfirmFirmwareUpdateScreen.tsx (3)

20-25: Improved component signature using StackProps

The component now properly accepts navigation props via StackProps, which is a more type-safe approach.


30-35: Improved flow by replacing toast with direct navigation

The code now navigates directly to the DeviceTutorial screen instead of showing a toast message, creating a smoother user experience.


41-43: Consistent navigation to DeviceTutorial screen

The skip update handler correctly navigates to the DeviceTutorial screen, maintaining consistency with the other navigation logic.

suite-native/module-device-onboarding/src/screens/FirmwareInstallationScreen.tsx (3)

2-6: Good addition of navigation-related imports.

The new imports from @suite-native/navigation provide the necessary types for proper navigation handling in the component. This is a good practice for type safety in TypeScript.


10-15: Well-typed component signature with navigation prop.

The updated component signature now properly accepts a navigation prop with appropriate TypeScript typing. This enhances type safety and makes the component's dependencies explicit.


16-18: Improved user flow with direct navigation.

Replacing the toast notification with direct navigation to the tutorial screen provides a more seamless user experience during the device onboarding process. This change aligns well with the PR objective of enhancing the device onboarding flow with a tutorial.

Copy link

github-actions bot commented Mar 13, 2025

🚀 Expo preview is ready!

  • Project → trezor-suite-preview
  • Platforms → android, ios
  • Scheme → trezorsuitelite
  • Runtime Version → 26
  • More info

Learn more about 𝝠 Expo Github Action

Copy link
Contributor

@BrantalikP BrantalikP left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good 👍

@PeKne PeKne force-pushed the feat/native/device-onboarding-device-tutorial branch from 4875d2d to fc4b427 Compare March 17, 2025 07:13
@PeKne PeKne merged commit 401c00c into develop Mar 17, 2025
74 checks passed
@PeKne PeKne deleted the feat/native/device-onboarding-device-tutorial branch March 17, 2025 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mobile Suite Lite issues and PRs
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Onboarding - On device tutorial
2 participants