Skip to content

Mobile: Upgrade to React Native 0.79 #12337

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

Draft
wants to merge 12 commits into
base: dev
Choose a base branch
from

Conversation

personalizedrefrigerator
Copy link
Collaborator

@personalizedrefrigerator personalizedrefrigerator commented May 23, 2025

Summary

This pull request upgrades the mobile app to React Native 0.79 and react-native-web 0.20.

This also:

  • Requires an upgrade to React 19.
  • Upgrades @testing-library/react-native to v13.2.0 for React 19 support.

Notes

  • This may fix an issue related to focus management and external keyboards on Android.

To-do

  • Testing plan & more in-depth manual testing.
    • Test alarm notifications.
      • iOS 18 (Simulator)
      • Android 13
    • Test quick actions
      • iOS 18
      • Android -- creating a to-do from the home screen with an already-running app
    • Test biometrics.
      • iOS 18 (physical device)
      • Android 7
    • Test editing/viewing a note with an audio attachment.
      • iOS 18 (physical device)
      • Android 13 and 7
    • Test attaching files.
      • iOS 18 (physical device)
      • Android
    • Test taking photos
      • iOS 18 (physical device)
      • Android 13
    • Test recording audio
      • iOS 18 (physical device)
      • Android 13 and 7
    • Test JEX export & import
      • iOS 18 (physical device), single notebook with 2-3 notes.
      • Android 13, 3-4 notebooks with several total notes.
    • Test opening and editing a note with TalkBack/VoiceOver
      • iOS 18
      • Android 13
  • Further explanation of changes to screens/Note/Note.tsx (passing state to scheduleSave to fix a save-related race condition observed in tests).

Comment on lines -49 to +52
expect(itemCheckbox).toHaveAccessibilityState({ checked: initialChecked });
if (initialChecked) {
expect(itemCheckbox).toBeChecked();
} else {
expect(itemCheckbox).not.toBeChecked();
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The new @testing-library/react-native version removed *AccessibilityState queries.

@@ -2,7 +2,6 @@ import * as React from 'react';
import { mockMobilePlatform, setupDatabaseAndSynchronizer, switchClient } from '@joplin/lib/testing/test-utils';

import { render, screen, userEvent, waitFor } from '@testing-library/react-native';
import '@testing-library/react-native/extend-expect';
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@personalizedrefrigerator
Copy link
Collaborator Author

Issue observed during testing: On iOS, the camera doesn't work the first time it's started (perhaps related to the permissions dialog?).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant