Loading video...

Video Failed to Load

Go Home

A technically interesting challenge when building Pengu was generating transparent images for each user’s unique Pengu. With over 350 clothing items and countless possible combinations, plus varying device sizes, pre-generating images in the cloud quickly became infeasible. To solve this, we moved the computation to the device itself by...

28,696 views • 11 months ago •via X (Twitter)

18 Comments

dennis's profile picture
dennis11 months ago

if you stop sharing these insights i'll 🔫

Fabian Kamberi's profile picture
Fabian Kamberi11 months ago

Saturday means Kanye on all speakers at the office

Daehyeon Mun's profile picture
Daehyeon Mun11 months ago

Interesting. This is a similar approach I tried for Callie 😸

NicheGuys's profile picture
NicheGuys11 months ago

sunday! we are waiting GitHub link =))) <3

Sebastian Penafiel's profile picture
Sebastian Penafiel11 months ago

This one was quite the challenge to come up with at the time. 🔥

enes's profile picture
enes11 months ago

I 🐧 pengu

Max's profile picture
Max11 months ago

Remember it quite well. Was an interesting system design challenge 🔥

Nnaemeka.dev's profile picture
Nnaemeka.dev11 months ago

🔥

小贺's profile picture
小贺11 months ago

👏

Trent's profile picture
Trent11 months ago

That’s a clever workaround. I had no idea Pengu was even made in Godot

Nico's profile picture
Nico11 months ago

Cool name

Zen's profile picture
Zen11 months ago

omg @Sidaelle this is how they built pengu!!!!!

Mohamed Rasheq's profile picture
Mohamed Rasheq11 months ago

Interesting challenge. 🔥🔥

Alzea | Orenji Studio's profile picture
Alzea | Orenji Studio11 months ago

This is cool man 👀

Frozair's profile picture
Frozair11 months ago

So this only works for react native? What's the difference when using gdscript and targeting mobile devices?

Parav's profile picture
Parav11 months ago

is that similar to how offscreencanvas works on web?

AtheX Web3's profile picture
AtheX Web311 months ago

wen docs?

Jannis Ringwald's profile picture
Jannis Ringwald11 months ago

Checkout my latest post

Related Videos

Build uncompromising high-performance, high-fidelity apps with React. What you see is not the Apple Messages app, nor is it meant to be 1:1. Rather it serves as an aspirational and real example of UI/UX that is possible. Every detail from the bubble animations to keyboard gestures to scroll view insets and safe areas to parallax timestamps required care and attention. Quality UIs come from caring hard. The little chat bubble tails that morph away when the next message animates in. Timestamps that scroll at a different rate than the bubbles. Peek gestures powered by UIKit that lift a chat bubble, tail and all, with a gentle haptic pulse. The subtle shadow of the text composer and responsively sliding down the keyboard in pixel-perfect concert. The composer shrinking its width to fit iPhone’s rounded bezel. The beautiful Liquid Glass refractions have the level of glassiness chosen by the user (new in iOS 27). Scroll view insets that adjust to fit the home bar and keyboard dynamically, creating a sense of depth as the chat bubbles are slightly visible as they scroll under the keyboard. Keeping the keyboard on screen if the prior screen already presented it. Sliding the keyboard and composer with the screen when the user drags to navigate back. I am excited to explore using the new iPhone Duo view controllers natively with React when the time comes. There is always room for innovation and improvement. This chat demo runs at 120 FPS on iOS 27 even on my phone that’s four versions old now. There are several approaches to high-performance lists. I explored a new Expo scroll view that uses the native gesture systems along with react-native’s VirtualView (codenamed “Fling” to reflect the speed of flinging a scroll view), which Meta’s React team designed to prioritize scroll momentum with React’s scheduler. There are tradeoffs with other scroll strategies for how the scroll views gracefully degrade, and they can be swapped out based on what’s best for your app’s use case. And, by virtue of using modern React, high-priority events like user gestures can preempt lower-priority ones like a network response. Let us dispel any myth that using React requires compromising on beautiful, smooth, user-friendly UI/UX that Uses the Platform. Let us dispel any myth frame-perfect UI coordination is not achievable. The Hermes thread and the UI thread can coordinate when needed, like for controlled text inputs. Let us dispel any myth that React Native’s performance is impacted by a bridge, let alone has a bridge. Bridgeless JSI and the Fabric renderer are here for apps that use the New Architecture. What about Android? The app runs and I’ll share a screenshot from my cloud agent’s emulator. With some attention to detail dedicated to Android I’m confident crafted UX is attainable. I’ve spent my tokens once and have a structural head start everywhere. One more thing! Most of this chat’s application code is written with , , , and other familiar elements. The styling is mostly CSS, including linear-gradient(), background-attachment: fixed, and semantic platform colors that adapt to dark mode. Not just appearance - CSS Animations and CSS Transitions run entirely natively. There are a handful of custom native components written in Swift and Kotlin, like the chat bubbles and a custom CAShapeLayer and UIBezierPath for the tails. Native coding is a first-class feature. The way to think about building beautiful apps this way is React and Native, not React vs. Native. Aspire high and raise your ambitions for what is possible!

James Ide

141,222 views • 1 month ago