Every Frame Perfect: Why Modern Apps Feel Janky
Explore the Hacker News trend 'Every Frame Perfect' and understand why modern apps feel glitchy despite powerful hardware in India's mobile-first market.

- NV Trends
- 11 min read

Have you ever purchased a brand new, top-of-the-line smartphone, boasting 12GB of RAM and a buttery-smooth 120Hz display, only to find that your everyday banking or shopping apps still stutter? You swipe to go back, and for a fraction of a second, the screen tears. You tap a button, and the animation glitches, showing overlapping text before finally settling into its new state. Despite carrying supercomputers in our pockets, the software we use daily often feels strangely unpolished and fragile.
This widespread frustration recently culminated in a massive, fiery debate on Hacker News, centered around a concept coined by prominent developer Nikita Prokopov (known online as tonsky). The concept is elegantly simple but incredibly demanding: “Every Frame Perfect.”
The principle argues that modern software user interfaces (UIs) should never exist in a broken or invalid state—not even for a single millisecond. It is a rallying cry for a return to digital craftsmanship, a demand that developers care as much about the microscopic transitions between screens as they do about the final static images. But why is this so hard to achieve? Why does software from multi-billion dollar companies still feel cheap? And more importantly, why does this matter immensely for the millions of Indians coming online every year?
Let us dive deep into the philosophy of “Every Frame Perfect,” the technical debt hiding in your favorite apps, and the ongoing war between development speed and visual integrity.

The Illusion of Speed and the Reality of Jank
To understand the core of the argument, we must first separate “speed” from “perfection.” When tech enthusiasts review the latest Android or iOS devices, they often focus on raw frame rates. If an interface runs at 60 or 120 frames per second (FPS), it is generally considered “smooth.” However, running at 120 FPS merely means the screen is refreshing 120 times every second. It says absolutely nothing about what is being drawn on the screen during each of those refreshes.
This is where the “jank” happens. Jank is that subtle, hard-to-describe feeling that something is wrong. It is the visual friction you experience when a UI animation drops a frame, or worse, renders an incorrect frame.
What is an “Invalid State”?
Imagine you are using a popular food delivery app to order biryani on a Friday night. You tap on a restaurant’s profile. The app transitions from the home screen to the restaurant menu. In a truly perfect app, that transition is a seamless slide or fade.
But in a flawed app, if you were to record the screen and play it back frame-by-frame, you would see horrors:
- Frame 1: You tap the button.
- Frame 2: The background shifts, but the text from the previous screen is still lingering, floating in empty space.
- Frame 3: The new restaurant image loads, but it hasn’t been cropped yet, bleeding over the edges of its designated box.
- Frame 4: The UI finally snaps into its correct, intended place.
That is an invalid state. For two or three frames (equivalent to perhaps 30 to 50 milliseconds), the application was lying to you. It was showing you a corrupted, broken version of itself. You might not consciously process those specific frames, but your brain registers the inconsistency. It makes the software feel cheap, untrustworthy, and hastily assembled.
The “Every Frame Perfect” philosophy dictates that if you pause an animation at literally any microsecond, the resulting screenshot should look like a deliberate, beautifully designed layout. Nothing should overlap improperly. No text should clip outside its container. Shadows shouldn’t appear a frame later than the objects casting them.
The Cult of “Move Fast and Break Things”
If the solution is simply to code better, why don’t companies just do that? The answer lies in the modern culture of software engineering, heavily influenced by Silicon Valley’s mantra: “Move fast and break things.”
In today’s hyper-competitive tech landscape, time-to-market is considered more valuable than perfection. Startups and established giants alike operate on strict Agile methodologies, pushing updates weekly or even daily. The goal is to release a Minimum Viable Product (MVP), gather user data, and iterate.
The Rise of the Web Wrapper
To facilitate this breakneck speed, the industry has largely shifted away from building native applications (apps built specifically for Android using Kotlin, or for iOS using Swift) in favor of cross-platform frameworks. Tools like React Native, Flutter, and web wrappers like Electron allow developers to write a single codebase and deploy it everywhere.
While this saves millions of rupees in development costs and allows companies to push features simultaneously to all users, it comes with a severe performance tax. Cross-platform apps essentially run an abstraction layer between the code and the device’s hardware.
When you ask a native app to animate a button, it talks directly to the phone’s Graphics Processing Unit (GPU), resulting in butter-smooth, frame-perfect motion. When you ask a web-wrapped app to do the same, the command has to pass through several translation layers, a JavaScript bridge, and a rendering engine before it finally reaches the screen. This latency is the breeding ground for the glitchy, invalid frames Prokopov criticizes. The browser engine is desperately trying to guess how to lay out the screen in real-time, and often, it guesses wrong for a frame or two before catching up.
The Indian Context: Why Perfection Matters More Here
While a tech worker in San Francisco might roll their eyes at a janky animation on an iPhone 15 Pro, the impact of poor UI is magnified significantly in the Indian market. India is arguably the most dynamic, mobile-first economy in the world, with hundreds of millions of users accessing the internet exclusively through smartphones.
The Hardware Reality
Despite the booming market, the reality is that the vast majority of Indians are not using top-tier flagship devices. The backbone of India’s digital revolution is the Rs. 10,000 to Rs. 20,000 mid-range Android smartphone. These devices are incredibly capable, but they do not have the brute-force processing power to mask poorly written, bloated code.
When a cross-platform app drops frames or struggles to render transitions correctly, it is merely annoying on a premium device. On a budget smartphone, it can result in the app freezing entirely, causing the user to mistakenly double-tap, accidentally close the app, or abandon their transaction out of sheer frustration. In India, performance is an accessibility issue. If your app is not “Every Frame Perfect” (or at least close to it), you are actively alienating a massive segment of your potential audience.
The Psychology of Trust in Fintech
Perhaps nowhere is this principle more critical than in India’s booming financial technology (Fintech) sector. The Unified Payments Interface (UPI) has revolutionized how India transacts. We use apps like PhonePe, Google Pay, Paytm, and traditional banking apps (like SBI YONO or HDFC) multiple times a day for everything from paying a roadside tea vendor Rs. 10 to transferring Rs. 50,000 for rent.
Money is deeply psychological. When you are transferring hard-earned rupees, you demand absolute certainty and security. Consider the user experience of making a large payment:
- You enter the PIN.
- You hit “Submit.”
- The screen transitions to a processing state.
If, during that critical transition, the UI stutters, text overlaps, or the screen briefly flashes white, it induces a moment of panic. Did the payment go through twice? Did the app crash while deducting my money?
Visual glitches erode user trust. A perfectly animated, smooth transition conveys stability, security, and competence. An app that cannot even manage to move a text box smoothly across the screen does not inspire confidence in its ability to securely manage a bank account. For Indian developers, polishing the UI to near-perfection isn’t just about aesthetics; it is about building and maintaining the trust required to handle the nation’s finances.
The Counter-Argument: Motion Blur and Human Perception
As with any major debate on Hacker News, Prokopov’s rigid demand for perfect frames met with strong pushback from a significant portion of the engineering community. The counter-argument heavily relies on the biology of human vision and the history of film.
Do We Actually See Every Frame?
Critics of the “Every Frame Perfect” philosophy point out that human eyes do not process the world like a digital camera snapping individual photos. We perceive continuous motion. In fact, our brains actively filter out visual information during rapid eye movements (a phenomenon known as saccadic masking) to prevent us from becoming dizzy.
In cinema, motion blur is a critical tool. If you pause an action movie during a fast car chase or a martial arts sequence, the individual frame is usually a blurry, streaky, incomprehensible mess. It is literally an “invalid” image. Yet, when played at 24 frames per second, that blur is what gives the motion its smooth, natural, kinetic feel. If a film were shot with a hyper-fast shutter speed where every single frame was perfectly crisp, the resulting footage would look unnatural, staccato, and jarring (a common complaint about high-frame-rate movies).
The Pragmatic Engineering View
Many developers argue that applying strict 2D visual perfection to rapidly moving digital elements is a misunderstanding of perception. They argue that if a transition takes 200 milliseconds, the human eye cannot fundamentally process the exact layout of the elements at the 100-millisecond mark.
Therefore, spending weeks of engineering time to guarantee that a background shadow doesn’t clip through a text box for exactly two frames during a rapid swipe gesture is a massive waste of resources. The pragmatic camp believes that as long as the start state and the end state are perfect, and the motion feels smooth (even if the intermediate frames are technically “broken” if inspected closely), the software is successful. They argue that perfection is the enemy of the good, and chasing zero visual artifacts will only slow down innovation.
The True Cost of Perfection
The debate ultimately boils down to economics and the famous Pareto Principle (the 80/20 rule). Getting a UI to look 80% good takes 20% of the effort. Achieving that final 20% of pixel-perfect, every-frame-flawless polish takes 80% of the effort.
To build software that adheres strictly to the “Every Frame Perfect” rule, a company must:
- Invest heavily in Native Development: Moving away from cheaper cross-platform tools and hiring specialized Swift and Kotlin engineers.
- Implement Rigorous Profiling: Developers must constantly test their code using specialized tools that record screen renders frame-by-frame, hunting down micro-stutters.
- Slow Down Release Cycles: Quality Assurance (QA) teams need more time to manually verify animations on a wide array of devices, particularly low-end Android phones popular in the Indian market.
For a startup fighting for survival, this level of investment is often impossible. They must ship features to satisfy investors and retain users. However, for established tech giants with near-infinite resources (like Google, Meta, or Apple), the failure to deliver perfectly polished UI is often viewed as corporate negligence rather than an economic necessity.
How Can the Industry Improve?
The Hacker News discussion shouldn’t just be an airing of grievances; it should be a catalyst for change. Indian development teams, building for the “next billion users,” are uniquely positioned to lead a return to software craftsmanship. Here is how the industry can bridge the gap between rapid development and visual integrity:
- Prioritize Critical Paths: You might not need perfect frames in the depths of a “Settings” menu that users visit once a year. However, the core user journeys—opening the app, navigating the main feed, adding an item to a cart, and checking out—must be flawless. Invest native development time heavily into these critical paths.
- Design for the Median Device: Developers must stop testing exclusively on the latest iPhone or Samsung Galaxy Ultra. In India, apps must be built and profiled primarily on mid-range devices from Xiaomi, Realme, or Motorola. If the animations run perfectly on a Rs. 15,000 phone, they will fly on a flagship.
- Adopt Stricter Design Systems: Many visual glitches occur because different parts of an app are written by different teams using different logic. A unified, rigorously enforced design system ensures that components behave predictably during transitions.
- Embrace Progressive Enhancement: Use lighter, simpler animations for users on low-end devices or slow network connections, saving complex, multi-element transitions for high-end hardware that can render them perfectly.
Conclusion
The “Every Frame Perfect” debate struck a chord because it vocalized a frustration we all quietly endure. We have traded the localized, crafted perfection of early desktop software for the sprawling, omnipresent, but inherently fragile nature of modern, web-connected applications.
While demanding absolute perfection for every single frame of a 200-millisecond animation might be an extreme and economically unviable stance for many companies, the underlying sentiment is crucial. It is a demand for respect. It is a request that software developers treat their users’ attention and hardware with care.
In an era where Artificial Intelligence is increasingly capable of generating boilerplate code and basic applications in seconds, the true differentiator for human engineers will be craftsmanship. The future will belong to companies that recognize that software isn’t just about utility; it is about experience. Especially in markets like India, where the smartphone is the primary gateway to the digital world, an app that feels solid, trustworthy, and visually seamless will always win out over one that merely “works.” We may never achieve software that is truly perfect on every single frame, but striving for that ideal is exactly what the industry needs to build better, more reliable tools for everyone.
