Skip to content

[Bug]: Android app completely frozen on Android 16 — ViewManagers missing getDelegate override #4194

@thomasflensted

Description

@thomasflensted

Mapbox Version

11.18.2 (default)

React Native Version

0.81.4

Platform

Android

@rnmapbox/maps version

10.3.0

Standalone component to reproduce

import React, { useState } from 'react';
  import { View, Text, Button, Modal } from 'react-native';
  import { MapView, Camera } from '@rnmapbox/maps';

  const styles = {
    container: { flex: 1, justifyContent: 'center', padding: 24 },
    description: { marginBottom: 16, color: '#555' },
    modal: { flex: 1, padding: 24 },
    mapView: { flex: 1 },
  };

  export default function BugReportExample() {
    const [sheetOpen, setSheetOpen] = useState(false);

    return (
      <View style={styles.container}>
        <Text style={styles.description}>
          On affected devices (confirmed: Samsung Galaxy S25, Android 16) opening
          this sheet freezes the entire app. The map is mounted inside a Modal —
          it is never visible to the user before the freeze occurs.
        </Text>
        <Button title="Open sheet" onPress={() => setSheetOpen(true)} />
        <Modal visible={sheetOpen} onRequestClose={() => setSheetOpen(false)}>
          <View style={styles.modal}>
            <Button title="Close" onPress={() => setSheetOpen(false)} />
            <MapView style={styles.mapView}>
              <Camera />
            </MapView>
          </View>
        </Modal>
      </View>
    );
  }

Observed behavior and steps to reproduce

  1. Run the app on Android 16 (confirmed: Samsung Galaxy S25)
  2. The app is completely unresponsive immediately on launch — no navigation or interaction is possible

The freeze happens before the user can do anything. The MapView is mounted as part of the initial render (inside a bottom sheet that is closed by default), so the ViewManager failure occurs at startup before the map is ever visible.

Expected behavior

The app launches normally and remains responsive. The map renders without errors when the sheet is opened.

Notes / preliminary analysis

React Native's new architecture requires ViewManagers that use codegen to override getDelegate(). The affected ViewManagers (RNMBXCamera, RNMBXShapeSource, RNMBXCircleLayer) in @rnmapbox/maps@10.3.0 do not implement this method, causing Fabric to fail silently during view creation.

The errors are thrown as SoftException so they don't produce a hard crash, but the result is a completely unresponsive UI. Notably, RNMBXShapeSource and RNMBXCircleLayer appear in the errors despite not being used in our code — confirming that all ViewManagers are registered at startup regardless of usage, and all fail the getDelegate check.

The issue appears device/OS-version dependent — confirmed broken on Android 16, works for some other Android users — but we haven't yet pinned down exactly which configurations are affected.

Additional links and references

The reproduction component uses a Modal since it's a self-contained example with no extra libraries — but in our actual app the map lives in a bottom sheet (react-native-bottom-sheet)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🪲Something isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions