Jamie Birch
banner
shirakaba.bsky.social
Jamie Birch
@shirakaba.bsky.social
💼 Software Engineer 👨‍🔧 Cross-platform hobbyist 📱NativeScript TSC 📺 ex-Smart TV dev 👨‍🔬 ex-virologist 🇯🇵 日本語 🆗
It's even worse on the latest releases of Safari. The scroll container doesn't even render! Wasn't expecting that.

macOS Tahoe 26.0 (25A353):
- Left: Safari 26.0 (21622.1.22.11.14).
- Middle: Safari on iOS 26.0.
- Right: Safari TP 227 (WebKit 21623.1.5).

Linking this as well.
September 17, 2025 at 1:09 AM
It seems it doesn't require a mix of horizontal-tb and vertical-rl. Purely vertical-rl is enough. Will link this video in the Bugzilla report.
September 17, 2025 at 1:01 AM
I think I've got a repro! Both a scrolling issue (as the pan gesture passes straight through the overlay) and a rendering issue (as the bottom portion of the overlay unexpectedly goes black).

Just cleaning it up, then will file it.
September 16, 2025 at 11:50 PM
I've just uploaded the lightning talk I gave on build profiling at React Native Meetup #20 (featuring Meta and Callstack) on Feb 18th.

- English: speakerdeck.com/shirakaba/bu...

- Japanese (original): speakerdeck.com/shirakaba/bi...

Someone should really look into the cmake settings for Android!
March 5, 2025 at 12:02 PM
Now streaming! We're going to be recreating the Xcode UI as a React DOM + Tailwind component for teaching purposes.

In this screenshot, the top bit is what I've completed so far, while the bottom bit is the reference image that we need to reproduce!

Stream here:
youtube.com/live/6jmLZ72...
March 5, 2025 at 5:45 AM
More progress on my Xcode classroom – a React DOM + Tailwind v4 component for making tutorials that involve Xcode!

Lately I've been improving window resizing. I wanted to match how Xcode collapses labels (yet not icons) when space is limited. Keep your eyes on the run destination!
March 5, 2025 at 4:43 AM
Continuing work on my fake in-browser Xcode mockup for making React Native tutorials. Spot the difference!

Built using React DOM and Tailwind v4. I can't use SFSymbols due to licensing, so I'm doing the best I can with Material Icons/Symbols 😅 it somewhat works!
February 26, 2025 at 2:05 PM
I've been making a docs site to share everything I've learned as a fullstack dev. 📜

When it came to documenting React Native, I decided that instead of using static screenshots of Xcode, it would be nice to have an interactive mockup of Xcode in-browser. So I began making one!
February 25, 2025 at 10:56 AM
Just successfully built a Node-API module for iOS, tvOS, visionOS, and macOS (with and without Catalyst), all packaged into a single XCFramework 🥹

Had to dig through the cmake internals to figure out how to build for Catalyst properly, but got there in the end! 😮‍💨
February 22, 2025 at 3:21 PM
I've started writing a docs website to share all the knowledge I've learned over nearly a decade of working with various technologies such as React Native.

As Docusaurus makes it so easy to set up (🙇‍♂️ @sebastienlorber.com), I've decided to provide screenshots in both light-mode and dark-mode!
February 15, 2025 at 1:53 AM
My ebook reader app continues to land on every single WebKit rendering bug:

Place a <div style="position: fixed"> into your <body>. That <div> will scroll just fine *until* you scroll the <body> along by one viewport, whereupon it cannot be scrolled.

… but *only* for `writing-mode: vertical-rl`! 😭
February 11, 2025 at 2:16 PM
What if I told you the Amazon Shopping app also used React Native
February 10, 2025 at 10:15 PM
Did a bit more work on my popover dictionary.

More and more edge cases to handle to get "ideal" layout. Still a few less-than-ideal cases to look into. Has started to turn the inflection point from "fun challenge" to "I wanna work on something else", but I seem to be getting closer to usability.
February 9, 2025 at 3:29 AM
I tried `gradle-profiler --profile async-profiler` and it made a cool flame graph but I don't see anything here I am familiar enough with to learn anything from. Think I'm rather looking for task-oriented profiles.
February 2, 2025 at 4:22 AM
Trying to learn about profiling Android builds to see where all React Native's build time is spent. Here, I'm using gradle-profiler.

Although my cold build time for a debug build is 6m 40s, my warm build time is consistently a mind-blowing 2.8 seconds. I despise Gradle, but I concede that's fast 🏎️
February 2, 2025 at 4:03 AM
Coming from iOS dev, I am staggered to see a React Native Android app complete a (warm) build in just 3 seconds.
February 1, 2025 at 10:07 AM
The official Android build docs mentioning that Android is "Kotlin-first". Huh!
February 1, 2025 at 10:02 AM
Oh dang, all that complicated popover positioning work that I was rigging up manully for my ebook reader app is actually supported at the CSS level in Chrome. This would have saved me so much time and tackled so many potential issues.

Can't come to WebKit soon enough 🥺 still not even in TP yet.
January 30, 2025 at 2:40 AM
And because it has the full power of Slack, I can make a canvas to do a fun little profile page. I can even use tables!
January 29, 2025 at 1:03 PM
So in my case, I create #times_shirakaba, and a CommunityHelper bot makes others in the Slack community aware of the channel; some folks I guess may be set up to auto-join it, while others may join manually if they like the looks of it.
January 29, 2025 at 12:59 PM
I profiled the build stages of a React Native 0.76 iOS app with New Arch enabled.

I found that most of the ~1 minute build time is due to RN core, of which a lot is blocked on Fabric.

But I was surprised to see that Expo Modules Core cannot be parallelised, and holds up all Expo Modules.
January 29, 2025 at 7:14 AM
Very interesting to take a build profile of an Expo / React Native app using xcode-build-times.

It's cool to see how massively parallel it is in general, but there are distinct stages where everything blocks on long builds for React-Fabric, ReactCodegen, React-RCTFabric, and Expo Modules Core.
January 29, 2025 at 6:40 AM
More progress on my Expo / React Native app for reading Japanese ebooks.

I've been doing lots of maths to make this popover lay out sensibly, such that it uses available space efficiently and avoids covering text you've already read (when possible). It's beginning to look usable now!
January 26, 2025 at 12:12 PM
Using Freeform to plan out how to place a dictionary popover in my hobby app.

It's deceptively complex. The text could be flowing horizontally, vertically, and LTR or RTL. Popovers may be narrow or wide and could viably fit above/below/beside the target text, but many placements just "feel" wrong.
January 25, 2025 at 1:39 AM
A great philosophy! Your instinct is good, so I don't think you need YouTube Studio to judge your content.

How does the signup form extract my name, by the way? 😅
January 24, 2025 at 10:23 AM