Rob Hogan
352 posts

Rob Hogan
@robjhogan
React Native (mostly Metro) @ Meta https://t.co/ofBaF9BqMw
Cambridge, UK Katılım Şubat 2015
343 Takip Edilen556 Takipçiler

@thymikee @Kelset Optimisations available in 0.84 under `unstable_transformProfile=hermes-stable` for the adventurous - currently that disables transpiling classes, soon it will remove several other unnecessary transforms once we’ve tested them in FB. It’ll be the default for the next release.
English

@HeadForPoints No mention of BA in the article, but they operate short haul (inc business) from Stansted in the summer, and have shared Escape in previous years.
English

The Escape lounge at London Stansted is to permanently close headforpoints.com/2025/12/29/esc…
English

@Baconbrix @tmikov @CipolleschiR @cortinico Features should come more quickly now though - there was quite a lot of internal infra to untangle to allow us to roll out use of SH features without breaking legacy Hermes builds. The class transform will be the first next week. More to follow.
English

@Baconbrix @tmikov @CipolleschiR @cortinico Module systems are trickier than most language features because obviously they’re heavily linked to resolution + bundling. I don’t think Hermes should internalise RN (or even JS) resolution, but I’d like to see a meeting in the middle with something like the ESM bundle proposal.
English

@Baconbrix @tmikov @CipolleschiR @cortinico Features behind a Hermes flag will be the next priority, but as @cortinico says we don’t want to make RN open source users our beta testers ahead of Meta apps. I am keen to make sure OSS gets these features as soon as we’re confident in them.
English

@Baconbrix @krystofwoldrich @expo @huntie In principle, yep, but -
- we were keen not to fork implementation / UX / maintenance by platform
- it’s actually a higher value feature on Android due to emulator routing (10.0.2.2 etc)
This particular bug actually looks like Error mangling instead though
English

Looking at @expo SDK 53 readable React errors got me thinking, why not to symbolicate all errors logged in the RN console.
github.com/krystofwoldric…

English

@krystofwoldrich @Baconbrix @expo @huntie Ah good spot, so this looks like a different issue related to mangling of the native Error object, preventing CDT parsing the stack - closely related IIUC: github.com/facebook/react…
We're going to discuss this later today and see if we can move this along
English

@robjhogan @Baconbrix @expo @huntie I see that the stack of the console call is symbolicated already, but the logged content (e.stack) is not. I don't know how different would be the path of symbolication one or the other. Just thought it's worth mentioning.
English

@Baconbrix @krystofwoldrich @expo @huntie ...for which we have an implementation, but it's disabled due to some perf issues on Android we're working on.
English

@Baconbrix @krystofwoldrich @expo @huntie CDT does handle this generally, symbolicating using the source maps it fetches up front. But IIRC it can go wrong when hostnames in stacks (ie device-relative URLs) don't match source URLs in the source maps fetched from the proxy/Metro. loadNetworkResource should fix that...
English

@hirbod I have seen React Native sometimes using a different Node version than what's available in PATH, so it could be the reason 🤔
Otherwise the specific error about require of ESM won't be there, since this is specifically supported in newer versions of Node.
English

Hey @satya164, I have been working on an project where react-native-monorepo-config was installed, but it would fail with require() of ES Module metro.config.js is not supported. Renaming to .mjs or defining "type" module didn't work. The only way I could make it work was like so

English

@birch_js @Baconbrix @hirbod @expo @inkdrop_app It’s a bit of both - some of the bigger, older apps haven’t been migrated just yet.
English

@Baconbrix @hirbod @expo @inkdrop_app Oh totally, I assumed Meta would be using it internally for their React Native projects, so I’m surprised.
In that thread, Meta mention that they use the “latest main” of Hermes internally, but I guess that means “latest legacy Hermes” rather than “latest Static Hermes”?
English

Alright, took me a while to figure out, but react-native-quick-base64 wasn't working at all on newer iOS and React Native / @expo versions. PR for @inkdrop_app incoming. And now we're talking about TUS upload speed :D. What a weekend so far!
English
Rob Hogan retweetledi

The most important skill for a software engineer IMO is debugging. Writing code is easy. Willingness and ability to debug through layers of abstraction, through code you didn't write, perhaps deep into other areas of the stack (libraries, frameworks, the server, the browser engine, etc.) can prevent you from ever being "blocked".
This is a skill I see lacking in a majority of developers these days. Too many people just stop as soon as they hit code they didn't write. They just report it to another team, file a GitHub issue, etc. And then complain when it isn't addressed for them immediately.
Your dependencies are your code. You are responsible for them. You can't rely on other people to fix problems you run into all the time. Understand your stack deeply. Learn to debug. It'll help you immensely.
English

@satya164 @AndaristRake @grabbou Exactly. Because RN aligns for web APIs where it makes sense, users may find adding `browser` to their config improves compat with packages that don't specify RN - more browser-like than node-like.
Ofc, we'd prefer authors to explicitly consider RN, so `browser` isn't default.
English

@robjhogan @AndaristRake @grabbou You mean you expect that people may tweak their config to use the browser condition as well?
Otherwise, to me, react-native, node, and browser feel like a similar level of specificity as each is their own env.
Should've put it before 'module' though, it makes more sense.
English

React Native 0.79 (Metro 0.82) enables package.json#exports by default.
It was added back in 2019 in Node.js 12 for ESM, but the ecosystem is still catching up, and Node.js itself has undergone significant changes regarding how it works with ESM & CommonJS.

English

@AndaristRake @satya164 @grabbou IMO it would be better to put `react-native` before `browser` for that reason. It’s more specific, and RN will always assert it.
Still, most packages aren’t going to specify `react-native` and in those cases `browser` is more likely compatible than other (Node)
English
Rob Hogan retweetledi

I’m hiring for the 𝝠 Expo Router project! We’re building:
◆ Universal file-based routing
◆ One-click native & web deployment
◆ Expo for web
◆ Server-driven UI
Come build the universal React framework and push mobile dev to its absolute limits! 🚀
expo.dev/careers/softwa…
English

@birch_js IIUC this is motivated by cocoapods maintainers themselves: blog.cocoapods.org/CocoaPods-Supp…
English




