Cross-platform engineer trying to make native app dev as pleasant as web dev

Tokyo-to, Japan
Interesting benchmark results – a rare upset for Bun! But I’m confident they’ll turn it around, based on their previous responses to performance issues. Sometimes all it takes is shining a torch on something.
Bun is fast, until latency matters for Next.js. We benchmarked the same Next.js app across Node.js, Deno, Bun, and Watt (our multi-threaded Node-based runtime) under identical load on AWS EKS. Throughput looked fine across the board. Latency told a very different story. 🧵
2
749
Jamie Birch retweeted
Hermes V1 will ship as the default in React Native 0.84 for both iOS and Android. This means: • 2-8% faster startup time • 40%+ faster runtime • faster Metro compilation (less Babel transforms) Just landed in 0.84.0-rc.1
10
32
461
44,376
Firefox 147 just landed & it's pretty huge in terms of web features: 🎉 CSS anchor positioning 🎉 The navigation API 🎉 View transition types 🎉 Brotli support in Compression/DecompressionStream 🎉 CSS module imports And more! developer.mozilla.org/en-US/…
11
56
437
36,758
But please Apple (and regulators), for the love of god, free web views for *all* purposes, not just for browser apps. I’m gonna be so old by the time I can release a working ebook reader app on the App Store, because WebKit has so many show-stopping bugs with RTL Japanese text.
3
447
Just saw the effects of Japan’s Mobile Software Competition Act (MSCA) today when opening a link on iOS 🥳
1
5
882
Jamie Birch retweeted
ECMAScript excitement 😉 🚨🚨🚨 IT'S ABOUT TIME! 🚨🚨🚨 Congrats to @ManishEarth on shipping the Temporal API in Chrome 144 Stable today 🎉 developer.chrome.com/blog/ne… Temporal is the replacement for the Date API.
7
58
367
34,282
📣 Announcing a boring (but important) dev tool! `npx flatten-gitignores`: a CLI tool for flattening all the .gitignore files in your monorepo into a single file. Use it to generate better .prettierignore and .easignore files! I cut 4.55 GB off my @expo EAS archive with this!
3
5
58
3,317
🎙️JavaScript Friends Anyone free to chat in a Twitter Space? I'm jet lagged and effectively on Pacific Time, so might be able to catch some people for once. I see @jamonholmgren's up 👀
1
1
4
844
NativeScript’s ability to eject from its web-like abstraction at any time to directly call native APIs from JavaScript really shines here. 🏅 Once Node-API lands in React Native, enabling NativeScript-in-React-Native, this is the kind of task I’d reach for NativeScript for.
Stream Markdown natively on iOS + Android 📲 nstreamdown Inspired by @vercel, freshly crafted by @teamnstudio
1
1
74
6,536
Jamie Birch retweeted
Chrome DevTools now supports *individual* network request throttling! Folks have been asking for this for years! DevTools now allows developers to simulate slow network conditions for specific requests rather than the entire page. This helps in testing how a web application performs and handles issues when specific resources (like images, scripts, or API calls) are slow to load.
74
383
3,159
281,384
The new pure AI algorithm is the death of Twitter for me. Since November, I have barely seen any posts from fellow React Native developers, and brainrot has been turned up to the max. All I see is grifter accounts posting irrelevant junk and bot networks rewarding them for it.
We will make the new 𝕏 algorithm, including all code used to determine what organic and advertising posts are recommended to users, open source in 7 days. This will be repeated every 4 weeks, with comprehensive developer notes, to help you understand what changed.
4
22
5,136
I've been making some great progress on React Native Fiddle the last couple of days 👨‍🔬 I've been working on npm package support, to allow fiddles with community libraries. I also added support for @bunjavascript, so packages now install in 1.5s (compared to 24s with npm)! 🚀
1
17
1,410
🎙️Now streaming! I'm live-coding my work building React Native Fiddle (a JSFiddle/Codepen solution for React Native macOS). Today, I'm implementing support for installing new npm packages into templates, and trying to solve an 11-second slowdown during init. Link below!
1
1
6
419
Jamie Birch retweeted
One of the big challenges on the T3 Chat mobile app is rendering Markdown performantly. We want everything in T3 Chat to be rendered buttery smooth, and Markdown is the format that essentially every LLM uses to communicate. It's not just rendering a single Markdown instance, either. This is a chat app, so it's a list (potentially very long list) with potentially really long LLM messages full of GFM (Github-flavored markdown). Using Remark (via react-native-remark) is unfortunately really slow in this scenario. Remark is a good JS-only library, but this just pushes its capabilities beyond what it can do. In our tests, long complex Markdown messages cause the UI to drop frames ("jank") -- often many frames. You can see in the screenshot of our custom in-app profiler that the Remark test was at 185 ms for a single Markdown render, which would drop 11 frames. Not all of that was Remark itself, but it would be hard to optimize to a reasonable level. We tried writing a highly optimized Remark AST to React Native component renderer. (That's the "Fast" column in the screenshot.) Still fully JS, but with a lot of care put into making it as fast as possible. It was more than 2X (sometimes drastically more) as fast. But we were still dropping frames. I've long said that in targeted situations, if you can't achieve the performance you need with React Native and JS, you should drop into native and let RN orchestrate the result rather than struggling to squeeze more perf out of it or worse yet giving up and shipping something that doesn't perform well. So it was time to move to native code. We integrated a native Markdown parser (written in C) and wrote a custom Expo Module that runs the parser and then renders iOS and Android native UI components using the resulting AST. It's all orchestrated by React Native and its layout engine Yoga. With this combination, even the most lengthy, complex Markdown components render an order of magnitude faster and in the vast majority of cases, we aren't dropping a single frame. Something like 11X faster than the Remark implementation. We're literally getting to the point where the native UI components have become the bottleneck. I don't want to oversell it, but this is pretty exciting. We have more testing to do and we need to make sure that the long-term maintainability of this native C library and the custom Expo Module is sustainable, but I thought I'd share some of the hard work being done by the team. I'm pretty pumped about this in particular!
85
41
1,128
124,847
Jamie Birch retweeted
JavaScript trademark update: - Oracle requested (and we agreed to) a 60-day extension in the cancellation case ttabvue.uspto.gov/ttabvue/v?… - We’re now deep in discovery, producing extensive evidence that “JavaScript” is used generically across the industry and does not refer to Oracle products.
20
82
1,282
89,360
Back in 2019, I implemented virtual list support for my framework, React NativeScript. It rendered a fully native view graph (iOS UITableView and Android ListView) using React. It worked rather well – no white flash, dynamic sizing, fully declarative. Pretty proud of it!
Correct me if i'm wrong but: A signal based mobile framework (think solid-native) would allow to granularly update native views with very little overhead Allowing to bridge UICollectionView and potentially make the fastest cross platform virtualised list
3
1
30
5,019
Jamie Birch retweeted
React Native has solidly taken the lead as the most popular SDK flavor shipping on RC after starting the year behind Flutter and plain native. Pretty obvious why.
27
25
271
70,568