Urgent.News

What's breaking now, across thousands of outlets.

Tech

Startup‑time regression after enabling Hermes in a React‑Native app

The situation Say you are a lead mobile engineer on a two‑month sprint for a consumer‑facing React‑Native app (React‑Native 0.73). The product team has pushed a deadline to ship version 2.1, and the QA team reports that the app now takes ≈ 1.8 s to reach the first screen on a mid‑range Android 11 device (Pixel 5). The same build, but with the default JavaScript engine (JSC) enabled, consistently…

After implementing a tutorial that enabled Hermes for a React Native app on Android 11 devices, a regression was discovered causing a delay of approximately 0.6 seconds in app startup time. This regression had three consequences: a decrease in user conversion, additional debugging and potential rollback needed for release schedule, and required a post-mortem meeting to address team concerns.

The cause of the regression was the loading overhead of Hermes's bytecode, which increased the disk read latency on devices with limited I/O bandwidth. Additionally, the AOT compilation approach used by Hermes produced a single large bytecode file that needed to be mapped into memory, further slowing down startup time on low-end devices.

Certain third-party modules also had compatibility issues with Hermes, leading to fallback paths that resulted in increased bundle parsing and inflated startup time. Enabling Hermes for debugging connected to a slower WebSocket handshake, which added extra delay before the app could proceed. Finally, the build-time cost of enabling Hermes added approximately 30% to the Android build time, reducing the frequency of releases and increasing the risk of stale dependencies.

By following a step-by-step process to reproduce the regression, revert to the default JavaScript engine (JSC), profile the engine load time, verify bytecode size and memory mapping, and consider mitigations such as splitting the bundle, developers can understand the impact of Hermes on startup time and decide whether to keep it enabled for specific releases.

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

This story

This is one outlet's version. Read the fullest account.

Read the original at dev.to →

More in Tech

Pricing page vs terms: six mismatches I keep finding on launch day

Originally published on shipclarity.app . For the last month I've been reading the pricing pages of freshly launched products the way a person about to pay would: the plan card, the toggle, the FAQ…

  • Unlimited or lifetime promises on pricing page contrast with strict limits in terms
  • One-time purchase advertised as non-renewing, but terms state recurring billing
  • Refund policy contradicts claim of refund on pricing page

A school discount with no code, because the discount is the email domain

We used to give schools a discount code. A teacher asked for one, we minted it, and then we maintained the parts that follow from a code existing: an admin CRUD for the codes, a redemption table so…

  • Schools receive discount based on email domain, not code.
  • System checks email domain in registration database.
  • Most specific domain takes precedence in multiple matches.

The First Fifteen Minutes: One Preflight, One Fix

The thing that decides whether a new AI coding setup survives contact with a real repo is almost never the model — it is whether the first fifteen minutes end in something you can verify.

  • First fifteen minutes crucial for AI coding setup's success
  • Tracking time reveals friction points in setup process
  • Preflight script fixes configuration issues before editor opens

More from Monday 19 October →