Urgent.News

What's breaking now, across thousands of outlets.

Tech

Enforcing a measurable performance ceiling for the Fabric renderer

The situation Say you are a lead engineer on a React Native team that has just upgraded a large‑scale iOS app to React Native 0.73 with the Fabric renderer enabled. The product manager asks for “faster UI” after a user‑experience test shows a 150 ms lag on a complex screen. The engineering team starts optimising ad‑hoc: removing unnecessary Views, flattening the hierarchy, adding useNativeDriver…

Lead engineer on a React Native team upgrades a large iOS app to React Native 0.73 with Fabric renderer enabled, but users experience a 150 ms lag on complex screens. The engineering team optimizes ad-hoc, but still sees occasional spikes to 120 ms on mid-range devices. Without a concrete target, sprint velocity and QA time are affected.

Fabric decouples the JavaScript thread from the UI thread by using a C++ bridge and a Shadow Node tree reconciled off-main-thread. Performance gains are realized only if UI thread work stays within the frame budget (~16.7 ms for 60 Hz displays). Two common causes of budget overruns are excessive mount time and layout thrashing.

To fix the issue, follow these steps:

1. Choose a realistic budget: Total UI-thread work per frame ≤ 8 ms (including mount and layout).

2. Instrument the app using Systrace markers to measure UI thread work per frame.

3. Capture baseline data on devices like iPhone 12, iPhone 13 Pro, and Pixel 5. Record the 95th-percentile duration of the "FabricUIThread" marker.

4. Split the marker into mount and layout to pinpoint hot paths.

5. Apply targeted optimizations:

a. Reduce mount cost by batching view creation and avoiding unnecessary requireNativeComponent.

b. Reduce layout cost by enabling Yoga's measure optimization, flattening deep hierarchies, and using absolute positioning where possible.

6. Automate regression detection by adding a CI step that runs the trace on an emulator and fails if the 95th-percentile exceeds the budget.

7. Document the budget in the codebase and ensure it's enforced via CI.

Implementing this workflow costs developer time for instrumentation and baseline measurement (2-3 days for a medium-sized app), but adds only ~1 minute per pipeline run to the CI runtime.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Jellyfin: tu propio servidor de streaming

Netflix, Disney+ y Spotify cuestan una fracción en India de lo que cuestan en Europa o Latinoamérica. Eso vivió un desarrollador que, al volver de vivir allí, se negó a pagar los precios occidentales…

  • India has higher prices for Netflix, Disney+, Spotify compared to Europe or Latin America
  • Developer, previously in India, moved to US, canceled streaming subscriptions
  • Created personal streaming server using free, open-source Jellyfin software

Do not guess which CSV column contains the URL

A resource importer can parse a CSV successfully and still read the wrong column. If the file changes from url,title to title,url , a hard-coded row[0] silently turns a display title into a…

  • CSV column with URLs can be first or second
  • Function needed to identify URL and title columns
  • Validate header, handle BOM and quoted fields

Entra Dynamic Group Not Updating: A Read-First Processing Status, Rule, and Attribute Triage

Helpdesk: "We created SG-Sales-All as a dynamic group yesterday and half of Sales still isn't in it. Priya moved from Support to Sales this morning and she's still getting the Support apps. And the new DEV-Corp-Laptops group hasn't picked up the twelve laptops we enrolled today.

  • Dynamic groups in Microsoft Entra update under specific conditions
  • Troubleshooting starts with verifying group status and attributes
  • Common issues include zero members, missing expected members, or processing errors

More from Friday 16 October →