You can also read:
☀️ Quick Takes
Is this Video Clickbait?
Our analysis suggests that the Video is not clickbait because it addresses the issues with React Native and provides reasoning and examples that align with the title's claim.
1-Sentence-Summary
Favorite Quote from the Author
I think React Native should discourage the use of controlled inputs because they are currently deeply broken, and I have no confidence that they will ever be fixed.
Key Ideas
🐢 Controlled inputs in React Native cause performance issues like cursor lag, dropped keystrokes, and incorrect input handling.
⚡ Uncontrolled inputs perform better, especially in slow apps. React Hook Form is recommended but may still face issues in React Native.
🔌 The disconnect between controlled inputs and native performance undermines React Native’s goal of platform fidelity.
🌐 Input control issues persist across platforms, indicating a broader problem with controlled inputs beyond React Native.
🔄 React Native’s new architecture doesn’t fix core input issues, including infinite loops in multi-line inputs.
🚨 The React Native team has not prioritized fixing these input issues, eroding user trust and damaging the experience.
🛠️ Onboarding for React Native has worsened, with Expo taking on too much responsibility, leading to a poor getting-started experience.
⚠️ React Native must focus on ensuring native controls don’t degrade user experience, treating any degradation as critical.
❌ React Native has strayed from React’s original ethos of setting users up for success, particularly in handling input controls.
📃 Video Summary
TL;DR
💨 React Native's controlled inputs are broken, causing cursor lag, dropped keystrokes, and incorrect input. These issues stem from React managing the input state, which leads to performance problems.
Uncontrolled inputs perform better since the browser handles their state. Despite a new architecture, React Native hasn't fixed these bugs, and the team hasn't prioritized them. The recommendation is to avoid controlled inputs entirely and use default values instead. React Hook Form is suggested for managing uncontrolled inputs but may still face issues in React Native.
Controlled Inputs Are a Mess in React Native
🐢 React Native's controlled inputs are fundamentally broken. They cause cursor lag, dropped keystrokes, and incorrect input handling. Typing too fast can result in the cursor jumping to the wrong position, making it impossible to type smoothly. This is not just a minor bug; it’s a Hello World-level issue that affects even the simplest apps.
"The cursor should not lag behind typing because it causes incorrect user input."
Uncontrolled Inputs: A Better Option, But Not Perfect
⚡ Uncontrolled inputs perform better because they rely on the browser or native system to manage the input state. This avoids the performance issues seen with controlled inputs. Libraries like React Hook Form are recommended for managing uncontrolled inputs, but even they might face issues in React Native due to how they interact with the framework.
The Disconnect Between React Native and Native Performance
🔌 The core problem is that controlled inputs in React Native break the promise of platform fidelity. React Native is supposed to wrap native components, but when you use controlled inputs, you’re no longer relying on the native system to handle input. Instead, React takes over, and that’s where things go wrong. Leaving the native layer to handle inputs is bad, no matter how optimized the JavaScript is.
Input Issues Aren’t Just a React Native Problem
🌐 These input control issues aren’t exclusive to React Native. Similar problems occur in other frameworks and even native apps when input control is handled outside of the operating system or browser. The issue is broader than just React Native, but it’s especially noticeable here because of how React Native is supposed to work with native components.
New Architecture, Same Old Problems
🔄 React Native’s new architecture doesn’t fix these core input issues. Even with the new Fabric architecture, problems like infinite loops in multi-line inputs persist. This shows that the issue is deeply rooted in how React Native handles controlled inputs, and it’s not something that will be easily fixed by architectural changes alone.
Lack of Priority Is Eroding Trust
🚨 The React Native team has not prioritized fixing these input issues, which is damaging user trust. These bugs are not just annoying; they’re fundamental problems that make it hard to build reliable apps. The fact that these issues haven’t been addressed despite being reported for months is a serious concern.
"This is contributing to the perception that React Native is incapable of producing high-quality native apps."
Onboarding Has Gone Downhill
🛠️ The onboarding experience for React Native has worsened over time. Expo has taken on too much responsibility, and as a result, the getting-started experience has suffered. Important things like lint rules are being overlooked, making it harder for new developers to get up and running smoothly.
Native Controls Shouldn’t Degrade UX
⚠️ React Native needs to focus on ensuring that native controls don’t degrade user experience. Any degradation in performance or behavior should be treated as a critical issue. Losing keystrokes or having cursor glitches is unacceptable at the framework level, and these problems need to be addressed with high priority.
React Native Has Lost Its Way
❌ React Native has strayed from React’s original ethos of setting users up for success. Historically, React’s default patterns were designed to help developers avoid common pitfalls. But with controlled inputs in React Native, this is no longer the case. The framework needs to return to its roots and ensure that basic functionality like input handling works as expected without requiring workarounds or hacks.
Conclusion
🌚 React Native's failure to address basic input issues, like controlled input lag and cursor problems, undermines its ability to deliver high-quality native apps. The framework's original goal of ensuring a smooth user experience is compromised, and the onboarding process has been neglected, with Expo now handling much of it.
Until these bugs are fixed, developers should avoid controlled inputs and focus on using uncontrolled ones for better performance.