App: [HOLD for payment 2023-05-05] [HOLD for payment 2023-04-20] [$1000] Text strings must be rendered within a component

Problem

Coming from Firebase Crashlytics, there are several non-fatal exceptions for Text strings must be rendered within a <Text> component. in v1.2.91. We should fix these.

Why is this important

Guarantees App stability

Solution

Find a way to reproduce the exception and prevent text nodes from being rendered outside of a <Text> component. I suspect that the exception is coming from this line, although I couldn’t reproduce the issue.

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~01ef3651f57da6d5c9
  • Upwork Job ID: 1641170623381450752
  • Last Price Increase: 2023-03-29

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 52 (30 by maintainers)

Most upvoted comments

Offer extended @alexxxwork

@alexxxwork thanks. I don’t think we need to worry about those here. There were clearly many that introduced it and we should just add something to the checklist to prevent future PRs from introducing this issue.

@alexxxwork your proposal looks good.

I believe this crash came from attachment modal which was a recent regression and now fixed. https://github.com/Expensify/App/issues/16636

Stack trace:

Non-fatal Exception: io.invertase.firebase.crashlytics.JavaScriptError: Text strings must be rendered within a <Text> component.
       at .completeWork(address at index.android.bundle:1:182980)
       at .completeUnitOfWork(address at index.android.bundle:1:197038)
       at .performUnitOfWork(address at index.android.bundle:1:196882)
       at .workLoopSync(address at index.android.bundle:1:196703)
       at .renderRootSync(address at index.android.bundle:1:196587)
       at .performSyncWorkOnRoot(address at index.android.bundle:1:194006)
       at .flushSyncCallbacks(address at index.android.bundle:1:158416)
       at .batchedUpdatesImpl(address at index.android.bundle:1:210783)
       at .batchedUpdates(address at index.android.bundle:1:151205)
       at ._receiveRootNodeIDEvent(address at index.android.bundle:1:151478)
       at .receiveEvent(address at index.android.bundle:1:205242)
       at .apply((native):0:0)
       at .__callFunction(address at index.android.bundle:1:133673)
       at .anonymous(address at index.android.bundle:1:132077)
       at .__guard(address at index.android.bundle:1:133030)
       at .callFunctionReturnFlushedQueue(address at index.android.bundle:1:132035)

Logs:

errorInfo: {"componentStack":"\n    in RCTView\n    in Unknown\n    in ImageView\n    in Unknown\n    in AttachmentView\n    in Unknown\n    in RCTView\n    in Unknown\n    in AnimatedComponent\n    in AnimatedComponentWrapper\n    in Carousel\n    in RCTView\n    in Unknown\n    in AttachmentCarousel\n    in withOnyx(AttachmentCarousel)\n    in Unknown\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in KeyboardAvoidingView\n    in KeyboardAvoidingView\n    in RCTView\n    in Unknown\n    in AnimatedComponent\n    in AnimatedComponentWrapper\n    in withAnimatable(View)\n    in RCTView\n    in Unknown\n    in VirtualizedListContextResetter\n    in RCTModalHostView\n    in Modal\n    in ReactNativeModal\n    in BaseModal\n    in Unknown\n    in Modal\n    in Unknown\n    in AttachmentModal\n    in Unknown\n    in Unknown\n    in ImageRenderer\n    in MemoizedTNodeRenderer\n    in TNodeChildrenRenderer\n    in RCTView\n    in Unknown\n    in MemoizedTNodeRenderer\n    in TNodeChildrenRenderer\n    in RCTView\n    in Unknown\n    in MemoizedTNodeRenderer\n    in TNodeChildrenRenderer\n    in RCTView\n    in Unknown\n    in MemoizedTNodeRenderer\n    in Unknown\n    in RenderTTree\n    in SourceLoaderInline\n    in RawSourceLoader\n    in RenderHtmlSource\n    in RenderHTML\n    in ReportActionItemFragment\n    in Unknown\n    in Unknown\n    in RCTView\n    in Unknown\n    in ReportActionItemMessage\n    in Unknown\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in ReportActionItemGrouped\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in OfflineWithFeedback\n    in Unknown\n    in Unknown\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in Hoverable\n    in RCTView\n    in Unknown\n    in Pressable\n    in PressableWithSecondaryInteraction\n    in Unknown\n    in ReportActionItem\n    in Unknown\n    in Unknown\n    in Unknown\n    in Unknown\n    in Unknown\n    in RCTView\n    in Unknown\n    in InvertedCell\n    in VirtualizedListCellContextProvider\n    in CellRenderer\n    in RCTView\n    in Unknown\n    in RCTScrollView\n    in ScrollView\n    in ScrollView\n    in VirtualizedListContextProvider\n    in VirtualizedList\n    in FlatList\n    in BaseInvertedFlatList\n    in Unknown\n    in Unknown\n    in RCTView\n    in Unknown\n    in AnimatedComponent\n    in AnimatedComponentWrapper\n    in ReportActionsList\n    in Unknown\n    in Unknown\n    in Unknown\n    in Unknown\n    in withDrawerState(withWindowDimensions(withLocalize(withPersonalDetails(withNetwork(ReportActionsList)))))\n    in Unknown\n    in ReportActionsView\n    in Unknown\n    in Unknown\n    in Unknown\n    in RCTView\n    in Unknown\n    in FullPageNotFoundView\n    in Unknown\n    in Suspender\n    in Suspense\n    in Freeze\n    in RCTView\n    in Unknown\n    in KeyboardAvoidingView\n    in RCTView\n    in Unknown\n    in SafeAreaConsumer\n    in ScreenWrapper\n    in Unknown\n    in withOnyx(withNetwork(ScreenWrapper))\n    in Unknown\n    in Unknown\n    in Unknown\n    in withNavigation(withWindowDimensions(withKeyboardState(Component)))\n    in Unknown\n    in ReportScreen\n    in withOnyx(ReportScreen)\n    in Unknown\n    in Unknown\n    in withDrawerState(withNetwork(Component))\n    in Unknown\n    in Unknown\n    in Unknown\n    in WithViewportOffsetTop(withLocalize(withWindowDimensions(Component)))\n    in Unknown\n    in StaticContainer\n    in EnsureSingleNavigator\n    in SceneView\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in Background\n    in Screen\n    in RNSScreen\n    in AnimatedComponent\n    in AnimatedComponentWrapper\n    in Suspender\n    in Suspense\n    in Freeze\n    in DelayedFreeze\n    in InnerScreen\n    in Screen\n    in MaybeScreen\n    in RNSScreenContainer\n    in ScreenContainer\n    in MaybeScreenContainer\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in AnimatedComponent(View)\n    in Unknown\n    in RCTView\n    in Unknown\n    in AnimatedComponent(View)\n    in Unknown\n    in Wrap\n    in AnimatedComponent(Wrap)\n    in Unknown\n    in GestureDetector\n    in Drawer\n    in DrawerViewBase\n    in RNGestureHandlerRootView\n    in GestureHandlerRootView\n    in RCTView\n    in Unknown\n    in SafeAreaProviderCompat\n    in DrawerView\n    in PreventRemoveProvider\n    in NavigationContent\n    in Unknown\n    in DrawerNavigator\n    in BaseDrawerNavigator\n    in Unknown\n    in MainDrawerNavigator\n    in withOnyx(MainDrawerNavigator)\n    in Unknown\n    in StaticContainer\n    in EnsureSingleNavigator\n    in SceneView\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in CardSheet\n    in RCTView\n    in Unknown\n    in AnimatedComponent\n    in AnimatedComponentWrapper\n    in PanGestureHandler\n    in PanGestureHandler\n    in RCTView\n    in Unknown\n    in AnimatedComponent\n    in AnimatedComponentWrapper\n    in RCTView\n    in Unknown\n    in Card\n    in CardContainer\n    in RNSScreen\n    in AnimatedComponent\n    in AnimatedComponentWrapper\n    in Suspender\n    in Suspense\n    in Freeze\n    in DelayedFreeze\n    in InnerScreen\n    in Screen\n    in MaybeScreen\n    in RNSScreenContainer\n    in ScreenContainer\n    in MaybeScreenContainer\n    in RCTView\n    in Unknown\n    in Background\n    in CardStack\n    in RCTView\n    in Unknown\n    in SafeAreaProviderCompat\n    in RNGestureHandlerRootView\n    in GestureHandlerRootView\n    in StackView\n    in CustomRootStackNavigator\n    in AuthScreens\n    in withOnyx(AuthScreens)\n    in Unknown\n    in Unknown\n    in AppNavigator\n    in EnsureSingleNavigator\n    in BaseNavigationContainer\n    in ThemeProvider\n    in NavigationContainerInner\n    in NavigationRoot\n    in DeeplinkWrapper\n    in Expensify\n    in withOnyx(Expensify)\n    in Unknown\n    in Unknown\n    in BaseErrorBoundary\n    in KeyboardStateProvider\n    in WindowDimensionsProvider\n    in RenderersPropsProvider\n    in ListStyleSpecsProvider\n    in SharedPropsProvider\n    in RenderRegistryProvider\n    in RenderHTMLConfigProvider\n    in TRenderEngineProvider\n    in BaseHTMLEngineProvider\n    in HTMLEngineProvider\n    in LocaleContextProvider\n    in withOnyx(LocaleContextProvider)\n    in Unknown\n    in WithCurrentUserPersonalDetails(Component)\n    in Unknown\n    in withOnyx(Component)\n    in Unknown\n    in _default\n    in PortalProviderComponent\n    in RNCSafeAreaProvider\n    in SafeAreaProvider\n    in BetasProvider\n    in withOnyx(BetasProvider)\n    in Unknown\n    in Private_blockedFromConciergeProvider\n    in withOnyx(Private_blockedFromConciergeProvider)\n    in Unknown\n    in CurrentDateProvider\n    in withOnyx(CurrentDateProvider)\n    in Unknown\n    in ReportActionsDrafts_Provider\n    in withOnyx(ReportActionsDrafts_Provider)\n    in Unknown\n    in PersonalDetailsProvider\n    in withOnyx(PersonalDetailsProvider)\n    in Unknown\n    in NetworkProvider\n    in withOnyx(NetworkProvider)\n    in Unknown\n    in ComposeProviders\n    in OnyxProvider\n    in ComposeProviders\n    in RNGestureHandlerRootView\n    in GestureHandlerRootView\n    in App\n    in RCTView\n    in Unknown\n    in RCTView\n    in Unknown\n    in AppContainer"}