Hirbod
banner
hirbod.dev
Hirbod
@hirbod.dev
SWE @expo.dev 𝝠

⚡️ hirbod.dev
🐙 https://github.com/hirbod
✖️ https://x.com/hirbod_dev
I had a lot of moments reconsidering life choices or just raising alpacas instead of migrating, but it’s finally done. New architecture, @expo.dev SDK 53 (RN 0.79.1), and the fastest React Native app we’ve ever built (and I’ve ever seen!). Thanks to all contributors. Amazing achievement.
April 29, 2025 at 4:02 AM
Imagine, that change made our app the snappiest and fastest react native app I've ever seen. The fucking FPS counter is finally going up, not down when tapping a button. :D
April 29, 2025 at 1:37 AM
I added a simple "fuck off" as Label and the rare bug is gone. This is just madness and a really bad default by RNGH and React Native. 2/4
April 29, 2025 at 1:37 AM
I was exploring a hard to debug memory leak in react native for at least 6 hours today. Turns out that when you don't add accessibilityLabel to RectButton or Pressable, it will fucking traverse all children to find a Text node or View with accessibilityLabel. This is insane. 1/4
April 29, 2025 at 1:37 AM
He said „also example ist best of all worlds“ which I translated to „holy grail“. I am not spreading misinformation
April 3, 2025 at 8:36 PM
Am I taking it too far with @swmansion.com CSS animations? It’s so fun. I am definitely pushing the limits with this example. I love REA v4. Such an amazing beta release. Mark my words: pretty sure this example will run at 60fps soon!

Gist: gist.github.com/hirbod/48e45...
January 25, 2025 at 3:15 PM
Runs on @expo.dev custom dev client and @swmansion.com Reanimated v4 CSS Animations. Was 5 min initial work and a few minutes to understand sync measurement with Fabric :D

If you want to play with it: gist.github.com/hirbod/dc161...

The future is React Native.
January 25, 2025 at 12:47 AM
15 years...
January 22, 2025 at 11:06 PM
RIP to our beloved companion. The last six months have been incredibly difficult for our family, and now we have lost another family member. We will always cherish the memories and unconditional love you gave us. You’ll forever be in our hearts.
January 22, 2025 at 7:21 PM
Imagine we used to write animations like this. @swmansion.com has come a long way.
January 21, 2025 at 10:43 PM
Like so
January 20, 2025 at 8:22 PM
Get children they said, it will be fun they said.
January 15, 2025 at 1:19 AM
I’m actually really proud so far. I know I could just use FFProbe or MediaInfoLib (WASM), but my aim was to get to the bottom of this using TS only - and it just worked™.

MP4, MOV, MKV, WEBM - basically every video, audio, and ISO/IEC 23091-2:2021 mapping is supported.
January 6, 2025 at 1:49 AM
I've reached feature parity across all containers. My media parser now extracts all fields and has much better performance using BitReader, DataView, and caching. I might explore streaming instead of loading the entire file into memory for parsing. 🧵
January 6, 2025 at 1:49 AM
The effort it took me to come this far is indescribable.
My JS parser is almost on par (at least for the most common codecs) with FFProbe. Almost all fields are now resolved. WebM/Matroska is missing color and HDR detection. Once that's done, I’ll consider AVI/TS.
January 3, 2025 at 9:10 PM
I was going back and forth with Claude on a very specific problem for like 30 minutes, and it kept getting worse with every iteration. I threatened that something "really bad" would happen if it messed up one more time, and it just gave me a working fix. What is this bullshit? 😂
January 3, 2025 at 2:04 PM
Alright, I successfully extracted all the media fields I could natively pull on iOS and Android with ease, now using a fully custom media parser in TS. Next, I just need to map those cryptic codec names to more common values and add the audio bitrate (e.g., 320kbps).
January 2, 2025 at 6:44 PM
My media parser processes 29 videos (2.41 GB) in ~1 second, extracting key metadata without <video />. It’s not 100% accurate yet for all fields, but it’s blazing fast, and I’m working to make it the fastest in the world!
December 31, 2024 at 3:44 PM
Reminds me of a picture I took 15 years ago from my friends puppy 😅
December 24, 2024 at 1:07 PM
react-native-volume-manager is much more than a volume listener. Plays super nice with @expo.dev expo-video (not expo-av) and let you enable and disable the audio session and category, informs the OS in a way so your music can resume automatically, too. (AppState, useLayoutEffect etc)
December 15, 2024 at 4:50 PM
Yes, the VSCode extension is bad, and we had to disable import sorting; it wrecked our entire codebase. We ended up adding `"organizeImports": false` to `biome.jsonc` + changes in my image. I've never heard of oxlint. We'll also need to reinstall ESLint because of the React compiler.
December 12, 2024 at 10:06 AM
Funny thing, the upgrade to ^1.7.2 is our PR #2000
December 11, 2024 at 7:47 PM
Can the Bsky Team just buy this domain already? I think I'll update my hosts file to redirect it to bsky.app.

I've opened this site by mistake at least 50 times already.
December 10, 2024 at 1:00 AM
Handing over a Samsung A13 to the legend @jayz.us for the upcoming LegendList and discussing features and APIs in Frankfurt :)
December 9, 2024 at 1:51 PM
Discovered a bug with @expo.dev router and react-native-screens after upgrading to SDK52 (not seen with react-navigation v7). Navigating from a screen with a header to one without, containing a ScrollView, causes a layout shift when interacting with the view.

github.com/expo/expo/is...
December 5, 2024 at 1:54 AM