What @reczko_konrad built is the closest thing to magic I've seen this year.
Couldn't stop thinking about the concept of drawing with light. So I built this small React Native prototype on top of his shader.
Depth-aware light injection in TypeGPU
I got a 448x448 monocular depth model down to ~8 ms on my M4 Pro across ~250 dispatches, which is fast enough to use in realtime :D
Since the inference is written directly in TypeGPU, I can just feed the depth buffer straight into the lighting pass. It never has to leave the GPU or go through any extra synchronization/interop step
Inference, lighting and draw all go through the same command encoder.
3. to avoid too much randomness and keep the icon easy to recognize, I'm only updating the display text (e.g. 122, the number of animations) and the spiral.
2. to generate a new app icon on every build i'm using a ci hook from @expo called "eas-build-pre-install". It runs automatically before installing the deps on EAS.
thank you!! great feedback too, I'll definitely have a try. The way this works is that the letters move around, trying to match a pattern defined by an image. I think it could be improved quite a bit by making a few changes to the original image (maybe removing the planets?), but tweaking the opacity might help a lot too
Great books always feel like the letters themselves are alive.
I’ve had this idea in mind for a while, and it was so fun to prototype with React Native Skia.
1. note: these results have no statistical significance - they're just the output of my local runs (macbook pro m3).
The bsky e2e suite starts with a setupServer call, I cut that time from the measurements and started after it.
3. I had to rethink the initial architecture a lot. Previously it was built on top of the React Native newArch assumption.
Now it doesn't make assumptions.
The search no longer happens via the Fabric tree - it's based on a native
UIView traversal. This works perfectly in React Native because, of course, React Native components are real native components.
Why? The prev idea is still my favorite but has a lot of edge cases (e.g. what about all the components that go undetected by a Fabric tree traversal?). Removing the newArch assumption also simplifies maintenance a ton and (potentially) opens the door to all native apps.
4. the main idea is simple. Instead of using XCUITest, we can rely on the Fabric shadow tree to detect the items, then cross check with the a11y tree and the viewport.
2. It's no longer a native package, but a dev dependency (still requires idb right now, but no prebuilds). You can install it and test it in less than 10 seconds.
Heading back home from @appjsconf. This conf has something magical.
I learned something new from every talk, but more importantly, I’m heading home with so many great memories.
5. once we find the item, we can synchronously measure its coordinates and pass them to IDB, which will simulate a real finger tap at those x,y coordinates. That’s really it.
4. the main idea is simple. Instead of using XCUITest, we can rely on the Fabric shadow tree to detect the items, then cross check with the a11y tree and the viewport.
3. why faster? Ennio interprets the maestro yaml only for react native apps, which allows it to make additional assumptions. It assumes RN + newArch and communicates via Hermes inspector.
2. I'm building Ennio with 1:1 parity with maestro yaml - tapOn, assertVisible, scroll, runFlow, retry, env interpolation. drop your existing flows in, they should just work (hopefully).
I've been recently experimenting with a new way to run e2e flows in React Native. Same maestro e2e test, same yaml, but 2-3x faster.
learn about Ennio 🧵
11/ Skia can feel overwhelming to learn, but I’ve found that over the past three years, more than 50% of my Skia animations were built on a Skia Path, which has proven to be the most flexible component I’ve ever used.
6/ Prototyping a spring animation is hard. But with Reanimated v4, all you need to define a spring animation is a perceptual duration and a damping ratio (0.9 ↔ 1)
3/ By doing that, you’ll just lose the native feeling. What’s happening here instead is that there’s a single invisible ScrollView that lets you control all of them with one shared value.
7. spring-config-consistency: enforces that spring animations either have all three spring physics parameters (mass, damping, stiffness) or none of them (quite helpful when migrating from reanimated v3 -> v4)
6. require-hitslop-small-touchables: requires hitSlop prop on touchable elements that are smaller than a configurable threshold (default: 40pt) to improve tap target size