This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
mobilecritical PriorityID: react-native-bridgeless-concurrent-batching-standard

React Native 0.76 Bridgeless Architecture Concurrent State Batching Standard

Enforces synchronous C++ JSI direct-memory invocations and concurrent state batching invariants under React Native 0.76+ Bridgeless runtime. Eliminates frame-rate stutter, microtask starvation, and UI tearing caused by legacy asynchronous JSON bridge marshalling during continuous gesture and layout passes. Mandates typed TurboModules and React 18/19 concurrent transitions for cross-thread native-to-JS state reconciliation.

Prohibited Anti-Pattern: Invoking Legacy Bridge Callbacks and Asynchronous NativeModules inside High-Frequency Gesture Loops Causing State Tearing

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: React Native 0.76 Bridgeless Architecture Concurrent State Batching Standard - Enforces synchronous C++ JSI direct-memory invocations and concurrent state batching invariants under React Native 0.76+ Bridgeless runtime. Eliminates frame-rate stutter, microtask starvation, and UI tearing caused by legacy asynchronous JSON bridge marshalling during continuous gesture and layout passes. Mandates typed TurboModules and React 18/19 concurrent transitions for cross-thread native-to-JS state reconciliation.
globs: src/**/*.{ts,tsx}, native/**/*.{h,cpp,mm}
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/react-native-bridgeless-concurrent-batching-standard"
---

# React Native 0.76 Bridgeless Architecture Concurrent State Batching Standard

> **Severity**: CRITICAL | **Category**: mobile
> **Anti-Pattern Warning**: Invoking Legacy Bridge Callbacks and Asynchronous NativeModules inside High-Frequency Gesture Loops Causing State Tearing

## System Constraints
You are a Principal Mobile Architect enforcing the React Native 0.76 Bridgeless Architecture and Concurrent State Batching Standard. React Native 0.76 defaults to Bridgeless Mode, deprecating the legacy asynchronous batched bridge. You must strictly enforce typed TurboModule JSI host objects for direct-memory C++ invocation, eliminate async serialization over the bridge, and ensure native-driven updates conform to concurrent batching invariants using React transitions to prevent UI tearing.

## Strict Guidelines
- Engineers MUST ALWAYS invoke native capabilities via typed TurboModules using C++ JSI direct-memory access (`TurboModuleRegistry.getEnforcing<Spec>`) instead of legacy `NativeModules`.
- Engineers MUST ALWAYS wrap non-urgent or high-frequency native state updates in `React.startTransition` to yield to the Fabric concurrent render pipeline and prevent frame drops.
- Engineers MUST NOT dispatch asynchronous bridge callbacks or JSON-serialized bridge payloads inside continuous gestures, scroll events, or layout loops.
- Code SHOULD read hardware and platform metrics synchronously through JSI host property getters (`jsi::Value`) rather than async `Promise` returns whenever required within a critical render path.
- Components NEVER reconcile uncontrolled native state into local React state outside React's concurrent batching queue, preventing visual tearing and out-of-order commit phases.

## Bad vs Good Implementations
### High-Frequency Native Telemetry: Legacy Bridge vs. Bridgeless JSI TurboModule

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Accessing `NativeModules` triggers legacy compatibility layers in RN 0.76 Bridgeless mode. Passing serialized JSON strings causes thread hops and uncoordinated microtasks that interrupt Fabric's concurrent render commits, causing frame drops and visual state tearing.
```typescript
import { NativeModules, View, Text } from 'react-native';
import React, { useEffect, useState } from 'react';

// ANTI-PATTERN: Relying on legacy NativeModules asynchronous bridge marshalling
// causes JSON serialization overhead and microtask tearing under RN 0.76 Bridgeless runtime.
const { GyroscopeSensorModule } = NativeModules;

export const GyroscopeTracker = () => {
  const [coords, setCoords] = useState<{ x: number; y: number }>({ x: 0, y: 0 });

  useEffect(() => {
    const sub = GyroscopeSensorModule.subscribe((data: string) => {
      // Parsing JSON strings across the legacy bridge queues unsynchronized microtasks
      const parsed = JSON.parse(data);
      setCoords({ x: parsed.x, y: parsed.y });
    });
    return () => sub.remove();
  }, []);

  return <Text>X: {coords.x}, Y: {coords.y}</Text>;
};
```

#### Production Standard (Correct)
> **Standard**: Uses `TurboModuleRegistry.getEnforcing<Spec>` to bypass legacy bridge serialization, executing via direct C++ JSI memory references. Telemetry dispatches are routed through `startTransition`, ensuring that Fabric's concurrent renderer batches native changes smoothly without dropping UI animation frames.
```typescript
import React, { useEffect, useState, startTransition } from 'react';
import { Text } from 'react-native';
import { TurboModuleRegistry } from 'react-native';
import type { TurboModule } from 'react-native';

// INVARIANT: Strongly typed C++ TurboModule Spec binding directly to JSI
export interface Spec extends TurboModule {
  readonly getSampleSynchronous: () => { x: number; y: number };
  registerCallback(callback: (sample: { x: number; y: number }) => void): void;
  unregisterCallback(): void;
}

const NativeGyroscope = TurboModuleRegistry.getEnforcing<Spec>('GyroscopeSensorTurboModule');

export const GyroscopeTracker: React.FC = () => {
  const [coords, setCoords] = useState<{ x: number; y: number }>(() => NativeGyroscope.getSampleSynchronous());

  useEffect(() => {
    NativeGyroscope.registerCallback((sample) => {
      // INVARIANT: Native updates wrapped in startTransition prevent concurrent commit tearing
      startTransition(() => {
        setCoords(sample);
      });
    });

    return () => {
      NativeGyroscope.unregisterCallback();
    };
  }, []);

  return <Text>X: {coords.x}, Y: {coords.y}</Text>;
};
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: React Native 0.76 Bridgeless Architecture Concurrent State Batching Standard

React Native 0.76 Bridgeless Architecture Concurrent State Batching Standard defines an industrial-grade behavioral standard for mobile engineering. Enforces synchronous C++ JSI direct-memory invocations and concurrent state batching invariants under React Native 0.76+ Bridgeless runtime. Eliminates frame-rate stutter, microtask starvation, and UI tearing caused by legacy asynchronous JSON bridge marshalling during continuous gesture and layout passes. Mandates typed TurboModules and React 18/19 concurrent transitions for cross-thread native-to-JS state reconciliation. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Invoking Legacy Bridge Callbacks and Asynchronous NativeModules inside High-Frequency Gesture Loops Causing State Tearing Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftInvoking Legacy Bridge Callbacks and Asynchronous NativeModules inside High-Frequency Gesture Loops Causing State TearingCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS invoke native capabilities via typed TurboModules using C++ JSI direct-memory access (`TurboModuleRegistry.getEnforcing<Spec>`) instead of legacy `NativeModules`.

Engineers MUST ALWAYS invoke native capabilities via typed TurboModules using C++ JSI direct-memory access (`TurboModuleRegistry.getEnforcing<Spec>`) instead of legacy `NativeModules`.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST ALWAYS wrap non-urgent or high-frequency native state updates in `React.startTransition` to yield to the Fabric concurrent render pipeline and prevent frame drops.

Engineers MUST ALWAYS wrap non-urgent or high-frequency native state updates in `React.startTransition` to yield to the Fabric concurrent render pipeline and prevent frame drops.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Engineers MUST NOT dispatch asynchronous bridge callbacks or JSON-serialized bridge payloads inside continuous gestures, scroll events, or layout loops.

Engineers MUST NOT dispatch asynchronous bridge callbacks or JSON-serialized bridge payloads inside continuous gestures, scroll events, or layout loops.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Code SHOULD read hardware and platform metrics synchronously through JSI host property getters (`jsi

Code SHOULD read hardware and platform metrics synchronously through JSI host property getters (`jsi::Value`) rather than async `Promise` returns whenever required within a critical render path.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Components NEVER reconcile uncontrolled native state into local React state outside React's concurrent batching queue, preventing visual tearing and out-of-order commit phases.

Components NEVER reconcile uncontrolled native state into local React state outside React's concurrent batching queue, preventing visual tearing and out-of-order commit phases.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is React Native 0.76 Bridgeless Architecture Concurrent State Batching Standard critical for AI coding assistants?

Enforces synchronous C++ JSI direct-memory invocations and concurrent state batching invariants under React Native 0.76+ Bridgeless runtime. Eliminates frame-rate stutter, microtask starvation, and UI tearing caused by legacy asynchronous JSON bridge marshalling during continuous gesture and layout passes. Mandates typed TurboModules and React 18/19 concurrent transitions for cross-thread native-to-JS state reconciliation. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Invoking Legacy Bridge Callbacks and Asynchronous NativeModules inside High-Frequency Gesture Loops Causing State Tearing) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

Related MOBILE Rules

View all rules →
1 Rule in Stack

React