The Universal First Transformation

Sep 16, 2024

The Universal First Transformation

Mo Khazil, Head of Mobile at Theodo UK, discusses the future of frontend development and how React Native is shaping cross-platform experiences in the universal-first era.

Author

Aditi Dixit
Aditi DixitContent Writer

Editor's Note: This recap from thegeekconf features Mo Khazil as he takes us on a journey through the evolution of frontend development, discussing the past, present, and future of cross-platform technologies. 

How Frontend is Changing: A Look at the Next 5 to 10 Years weโ€™re going to talk about how frontend development is going to change in the next 5 to 10 years. Throughout the day, youโ€™ve probably heard the phrase โ€œwrite once, run anywhereโ€ a couple of times already. Itโ€™s the ultimate goal for frontend developers and UI engineers, right? The idea that we could develop an app from a single codebase and run it on any platform we want. It turns out, though, that this idea is nothing new.

Letโ€™s take a trip back to the late 1990s. You come home after a long day of work, sit on the couch, turn on your TV, and what do you see? An ad for Java. The ad says something like, โ€œJava can change the way we view the world and the way we live. It entertains, communicates, transacts, speeds across the ground, soars through the air, seeks out new frontiersโ€”anywhere and everywhere, Java is there.โ€ Suddenly, Java is everywhere, and the phrase โ€œwrite once, run anywhereโ€ becomes the mantra. You could use Java to target the web, phones, and desktops. It was the magical technology that could run on any platform.

Fast forward a decade to the late 2000s, and weโ€™re in the age of Flash. Who here remembers Flash? Raise your hand if youโ€™ve used Flash. And for those of you who havenโ€™tโ€”congratulations! You missed out on what was, frankly, a terrible time for the web. Flash was everywhere in the late 2000s and early 2010s. It worked on Windows, Mac, Linux, and the web. It even supported mobile platforms like Android, Blackberry, Palm, and Symbian. Flash tried to take the โ€œwrite once, run anywhereโ€ approach and expand it to more and more platforms. They were even targeting gaming consoles like PlayStations, the Wii, and Xbox.

Both Java and Flash, in their respective times, were at the forefront of app development. They promised to let developers write once and run anywhere. But as we all know, they ultimately failed. โ€œWrite once, run anywhereโ€ turned into the joke of the developer community: โ€œwrite once, debug everywhere.โ€ Both technologies declined over time.

The Next Contender for Write Once, Run Anywhere

So, both Java and Flash failed. But around 2015, a new technology emerged, and itโ€™s been climbing the ranks ever since. And itโ€™s promising something very similar to what Java and Flash promisedโ€”โ€œwrite once, run anywhere.โ€ The question is, will this one succeed? Or are we chasing the same pipe dream?

My name is Moe. That was the longest introduction Iโ€™ve ever done to a talk, but weโ€™ll roll with it. I work at Theodo, and I head the mobile team in the UK. I work closely with Charlotte, who spoke earlier today. I also organize the React Native London Meetup, which is probably one of the most fun things I get to do in my job. I maintain the React Native TV blog, which is a knowledge base of React Native TV information.

A lot of the work I do has to do with universal apps, and recently, I gave a talk at a meetup where I mentioned, โ€œwrite once, run anywhere.โ€ During the Q&A, an older gentleman, who clearly has a much longer career than I do, asked me a question. He said, โ€œIโ€™ve been hearing the promise of write once, run anywhere since the 90s. It was the promise of Java and Flash, and both failed. What makes you think React Native will succeed?โ€ And he said it in a very patronizing tone, but his question was valid.

It all comes down to the architecture of how weโ€™re trying to target cross-platform applications.

Why React Native is Different: The Native Advantage

Letโ€™s take a look at how Java used to work. In a typical Java frontend application, youโ€™d have your Java source code that goes through a compiler, which compiles to bytecode. That bytecode runs on the Java Virtual Machine (JVM), which sits on top of the operating system. This custom runtime abstracts the app from the OS, meaning your app isnโ€™t running nativelyโ€”itโ€™s running in the JVM.

Flash worked similarly. Youโ€™d write ActionScript source code, itโ€™d compile into a file that runs in the Flash runtime, and once again, the app isnโ€™t running nativelyโ€”itโ€™s running in a custom runtime.

React Native, however, works differently. You write React code, and it goes through a bundler and build process. The native build process for each operating system compiles the app into native code, with JavaScript orchestrating the native functionality under the hood. On Android, a view in React Native becomes an Android view; on iOS, it becomes a UIView.

React Native is native.

It uses a common API with native components, so when you have a view in React Native, itโ€™s actually rendered using native components on each platform. Itโ€™s not a WebView. This is a subtle difference, but itโ€™s incredibly important. And thatโ€™s the key to React Nativeโ€™s success.

The Past, Present, and Future of Frontend Development

Letโ€™s take a look at how frontend development has evolved. From 1995 to 2005, we were in the desktop-first era. Windows dominated, and if you wanted to write a document or send an email, you needed desktop client applications.

From 2005 to 2015, we moved into the web-first era, where the web became powerful enough to replace desktop apps. Chrome took off, and we saw web-based services like Google Drive, Gmail, and Facebook replace traditional desktop apps.

Since 2015, weโ€™ve been in the mobile-first era, where everything revolves around mobile apps. WhatsApp replaced phone calls, Instagram became the social network of choice, and mobile apps became the default way to interact with the world.

But hereโ€™s the thing: the mobile-first era is over.

Technologies follow an S-curveโ€”they start strong, grow exponentially, then plateau. And mobile technology has plateaued. Weโ€™ve reached a point where the vast majority of the global population has smartphones, and mobile development is no longer the frontier it once was.

The Universal First Era: Whatโ€™s Next for Frontend Development

So, if the mobile-first era is over, whatโ€™s next? I believe weโ€™re entering the universal-first era. In this new era, itโ€™s not just about mobile or desktopโ€”itโ€™s about seamless experiences across all the devices we use in our daily lives. From smartphones to smartwatches to smart fridges, everything is becoming interconnected.

Take Appleโ€™s Vision Pro, for example. When you put on the Vision Pro, your entire interface changes. But the most impressive thing is the seamless handoff between devices. You can be working on your MacBook and then seamlessly continue on your Vision Pro without missing a beat. Weโ€™re seeing similar trends with other devices, and itโ€™s clear that the future of front end development lies in building these universal experiences.

React Nativeโ€™s Role in the Universal First Era

So, whatโ€™s the best technology for building universal apps? Is it Flutter? Kotlin? Native development? The answer, I believe, is React Native.

React Native provides a platform-agnostic API to define UIs that map to native components. It started with mobile, but today, you can target desktops, web browsers, TVs, and even AR and VR devices. Tools like Expo Router have already solved the handoff between platforms, and React Native has native support for Vision OS โ€” no other cross-platform technology has achieved that yet.

Watch the full video โฌ‡๏ธ

Find the speaker here: Mo Khazali

Subscribe to Our Newsletter

More from the engineering frontline.

Dive deep into our research and insights on design, development, and the impact of various trends to businesses.
Insight
Building Local LLMs Using Dart FFI And llama.cpp: Beyond Wrapper Packages
Sep 11, 2026

Building Local LLMs Using Dart FFI And llama.cpp: Beyond Wrapper Packages

Build local LLMs in Flutter with Dart FFI and llama.cpp, and see how native bridges, GGUF models, memory management, and token streaming enable private, on-device AI.

Insight
My Flutter App Froze With Three Photos on Screen. Here's What I Was Doing Wrong
Sep 11, 2026

My Flutter App Froze With Three Photos on Screen. Here's What I Was Doing Wrong

This blog explains how rethinking Flutterโ€™s image-processing architecture fixed severe performance issues and improved rendering efficiency.

Insight
Building a Production-Ready Canva-like Editor with Konva.js, React 19 and Next.js 15
Sep 10, 2026

Building a Production-Ready Canva-like Editor with Konva.js, React 19 and Next.js 15

This blog explains how to build a production-ready canvas editor with Konva.js, React, and Next.js, covering architecture, performance, and key engineering decisions.

Insight
Why AI Agents Fail in Production: Building Systems That Recover | Pushkar
Sep 10, 2026

Why AI Agents Fail in Production: Building Systems That Recover | Pushkar

Pushkarโ€™s thegeekconf mini talk explores why AI agents that perform well in demos often struggle in production, and how loud failures, clean context, step monitoring, guardrails, and better agent loops can make them more reliable and predictable.

Insight
What a PHP-to-NestJS Banking Migration Taught Us About Architecture, Security, and Trust
Sep 8, 2026

What a PHP-to-NestJS Banking Migration Taught Us About Architecture, Security, and Trust

This blog explores the architecture, security, performance, and documentation lessons from migrating a legacy PHP/Laravel banking platform to NestJS.

Insight
Building Is Not Shipping: An AI Agent for App Store Submissions | Gracey Dugar
Sep 8, 2026

Building Is Not Shipping: An AI Agent for App Store Submissions | Gracey Dugar

Gracey Dugar's thegeekconf mini 2026 talk explores why app store submission stalls most AI agent workflows, what an agent needs to finish the job, and a live demo from a single prompt to a published app.

Insight
Building Production-Grade Video Thumbnail Scrubbing in the Browser: HLS, Frame Extraction, Caching, and Performance Trade-offs
Sep 7, 2026

Building Production-Grade Video Thumbnail Scrubbing in the Browser: HLS, Frame Extraction, Caching, and Performance Trade-offs

This blog explains how to build responsive video thumbnail scrubbing in the browser for local files and HLS streams, covering frame extraction, caching, and performance trade-offs.

The Right Conversation Can

Save You Six Months.

Book a call