Blog
ENGINEERING

Why ByteDance Built Lynx? Because React Native Left a Gap

Mike Miller

April 01, 2025

Why Bytedance Built Lynx Header

Table of contents

React Native wasn’t enough. Lynx is ByteDance’s answer — and it might be a glimpse of what’s next for mobile development.


Key Takeaways

  • ByteDance built Lynx to address performance and flexibility gaps they saw in React Native — not to compete with Flutter.
  • Lynx offers native rendering, background-threaded APIs, and support for multiple JavaScript frameworks, making it especially appealing to web developers.
  • While promising, Lynx is still early. Its long-term success depends on ecosystem growth and broader community adoption.

1. Why ByteDance Chose to Build, Not Adopt

Summary: ByteDance built Lynx because existing frameworks like React Native didn’t meet their needs — technically or strategically.

If React Native had delivered everything teams needed, ByteDance wouldn’t have built Lynx.

That’s where this starts. ByteDance — the company behind TikTok and dozens of other apps — released its own JavaScript-to-native mobile framework. Not because there weren’t options. React Native and Flutter have been around for years. But neither gave them what they were looking for: the performance of native, the flexibility of the web, and the freedom to choose their own direction.

Lynx wasn’t built to enter the framework wars. It was built to solve a specific set of problems ByteDance saw in their own stack. And that decision says a lot about where cross-platform development is today — and where it’s still falling short.

Looking for a full comparison? Check out our breakdown of Lynx vs React Native vs Flutter in 2025.


2. The Technical Gaps Lynx Is Designed to Fill

Summary: Lynx improves on performance, developer experience, and flexibility with native rendering, background-threaded APIs, and real CSS support.

Lynx is a JavaScript-to-native framework, but the details matter. It’s designed for performance from the ground up. First render times are near-instant. Expensive work is pushed to background threads. It’s built to feel smooth, even before you start optimizing.

But what makes it stand out is how it fits into existing web development workflows. It doesn’t require React. You can use Svelte, Vue, Angular — whatever makes sense for your team. And you can write real CSS, the same way you would on the web. No styled-components or custom abstractions.

That blend — performance like a native app, with tooling and patterns from the web — is what makes Lynx interesting. It doesn’t ask developers to choose between speed and familiarity.


3. React Native Developers Are the Real Target

Summary: Lynx is best suited for teams already working with React Native or other web frameworks — not Flutter developers.

Lynx often gets mentioned alongside Flutter, but they’re solving different problems.

Flutter has its own rendering engine. It uses Dart. Everything is drawn from scratch — every button, every animation, every pixel. That gives you consistency, but it’s not native in the traditional sense. And if you’re coming from the web, Flutter can feel like learning a new platform entirely.

Lynx is closer to React Native. It renders native components and runs on JavaScript. It fits more naturally into web-centric teams. And if you’re already using React Native, moving to Lynx might not be trivial — but it wouldn’t require rewriting everything from scratch, either.

Flutter tends to make more sense for developers with native or mobile backgrounds. Lynx feels like it was built for the web-first world.


4. Owning the Framework Means Owning the Future

Summary: By building Lynx in-house, ByteDance gains full control over its mobile stack and long-term roadmap.

React Native is open source, but it’s still driven by Facebook. For a company like ByteDance, that’s a dependency — and maybe an uncomfortable one. Building Lynx wasn’t just about making something faster or more flexible. It was about taking control of a critical part of their stack.

Owning the framework means setting the priorities. Making changes when they’re needed. Building for your own roadmap, not someone else’s. In the long run, that kind of control can be more valuable than any individual technical feature.

It’s not just a framework — it’s infrastructure.


5. Lynx Has a Solid Core — But It’s Not Ready for Everyone

Summary: The fundamentals are strong, but the surrounding ecosystem is still immature and may slow adoption for now.

Lynx has a lot going for it — but it’s still early.

The fundamentals are solid, but the ecosystem around it — the libraries, tools, community support — will take time to grow. That matters. A good framework isn’t just about architecture. It’s about whether people want to build with it.

Right now, there are tradeoffs. You might need to write more code by hand. AI coding tools like Cursor or GitHub Copilot won’t recognize the APIs yet. Docs will be thinner. You’ll spend more time figuring things out. That’s the cost of being early.

But that’s the tradeoff with anything new. If adoption grows, and the ecosystem catches up, Lynx could be a strong choice — especially for teams that want native performance without leaving behind the web development patterns they know.

It’s not a polished, ready-made replacement just yet. But it’s on a path that makes sense.


6. What Lynx Tells Us About the State of Mobile Development

Summary: Lynx reflects a broader shift: teams want more from their tools, and they’re willing to build their own when existing options fall short.

Lynx isn’t just a new option. It’s a signal.

It shows us that for some teams — even the ones with all the resources in the world — the existing tools weren’t enough. React Native had limitations. Flutter didn’t fit the workflow. So ByteDance built something else.

That doesn’t mean Lynx will take over. But it raises the bar. It challenges assumptions. And it opens the door for better ways of thinking about performance, flexibility, and ownership in mobile development.

Whether or not it wins, it moves the conversation forward. And that’s always worth paying attention to.


FAQ: Lynx vs React Native vs Flutter

What is Lynx?

Lynx is a JavaScript-to-native mobile framework created by ByteDance. It allows developers to build native mobile apps using modern JavaScript frameworks like React, Vue, or Svelte — while rendering real native components and prioritizing performance.

Is Lynx a React Native replacement?

Yes — Lynx directly competes with React Native. Both aim to bridge the gap between web and mobile development using JavaScript. But Lynx differentiates itself with native rendering, background-threaded APIs, and framework-agnostic design.

How is Lynx different from Flutter?

Flutter uses its own rendering engine and Dart programming language. Lynx, on the other hand, leverages JavaScript and renders native components. Flutter is often preferred by mobile-native teams; Lynx is more approachable for web developers.

Why did ByteDance build Lynx instead of using React Native?

ByteDance likely wanted more performance, more flexibility, and more control than React Native could offer. Owning the framework means they can steer its roadmap without relying on Facebook’s priorities.

Should my team consider Lynx?

If you’re starting fresh and already work in the JavaScript ecosystem, Lynx could be a compelling choice. But it’s still early — so be prepared for lighter documentation and fewer community libraries compared to React Native or Flutter.

Similar resources

investigation workflow
CourierEngineering

How We Investigate Support Tickets at Courier

Courier's support team resolves complex issues 4X faster using parallel investigation. Here's how it works: when a ticket comes in, an AI agent starts exploring the codebase while the support engineer examines actual customer data. The agent traces code paths and searches past investigations. The human reads event logs and forms hypotheses based on real state. Running both simultaneously catches mismatches fast—the agent sees what could cause a problem, the human sees what actually happened. This post breaks down the workflow, tools, and documentation structure that makes it repeatable.

By Thomas Schiavone

December 18, 2025

whatsapp typing indicator
GuideProduct NewsEngineering

How to Use WhatsApp Typing Indicators on Twilio (Public Beta Guide)

Twilio now supports typing indicators for WhatsApp. When your backend takes a few seconds to generate a response, you can show users that something's happening instead of leaving them staring at a silent chat. The indicator appears when you call the new /v2/Indicators/Typing endpoint, automatically marks the message as read, and disappears after your response arrives or 25 seconds pass. This guide covers the API details, implementation patterns for Node.js and Python, when to use typing indicators, and current beta limitations.

By Kyle Seyler

December 03, 2025

nodemailer
Product ManagementEngineering

Nodemailer Alternative: Outgrowing DIY Email Infrastructure

Nodemailer works great for transactional email in early-stage products. But B2B customer journeys demand more: Slack notifications for engineering teams, Microsoft Teams messages for enterprise customers, in-app notification centers, SMS escalations, and push alerts. Building this yourself means maintaining integrations with SendGrid, Twilio, Firebase, Slack's API, and Microsoft Graph. Courier provides omnichannel notification infrastructure through one API, handling routing, preferences, delivery, and analytics across every channel.

By Kyle Seyler

November 26, 2025

Multichannel Notifications Platform for SaaS

Products

Platform

Integrations

Customers

Blog

API Status

Subprocessors


© 2025 Courier. All rights reserved.