Lynx: Open Source Native Cross Platform framework used in TikTok
69 comments
·March 5, 2025woleium
huxpro
The Lynx project was originally named independently without thinking this far ahead. Since so much code and so many users already rely on it, we decided to stick with the name rather than change it just for open-sourcing.
DannyPage
Open-sourcing is/was the perfect time to change it. Otherwise it might be even more painful if a name change is needed later.
bangaladore
And why exactly would a name change be needed later?
Names are just names, many people have the same names, and projects can too.
BrouteMinou
Stop playing dumb, you perfectly understand.
jaredwiener
Try running NextJS on your NeXT
Klonoar
Project name reuse has been a thing since the dawn of projects.
tpoacher
It's not even a good name for a cross platform tiktok network.
I would have stolen a name like Transmission, or Bing instead.
nemothekid
>Are we intentionally reusing project names now? Lynx [1] is a fairly popular tui browser.
The kids who built this are probably younger than the Lynx project and likely don't know it exists.
classichasclass
Lynx absolutely supports TLS (2.8 and later, possibly earlier).
zimpenfish
> Lynx absolutely supports TLS
And has done (in various forms) since at least 2001!
jakereps
I can't tell if this is satire or a hidden advertisement for various tui browsers? A project that is a "popular tui browser" (for the literally dozens of people that use tui browsers?) does not have ownership claim to the name of a big cat genus which has 4k+ other results on GitHub with the same name.
FuriouslyAdrift
Lynx pre-dates Mosaic... "As of 2025, it is the oldest web browser still being maintained"
jjmarr
It's not even the only TUI browser pronounced that way. See: links
woleium
i am not affiliated with any of the projects, its just what i use.
mftrhu
Lynx is a well-known project which has been around for far longer than Github even existed - since 1992, in fact - which is in any case irrelevant, since it's not developed on GitHub: the commits for ThomasDickey/lynx-snapshots are snapshots of the code from the website proper.
jakereps
Removed the star count as any sort of “evidence” to popularity - the point still stands though. It feels absurd to claim a name being “reused,” or implied stolen, when the name is a generic animal name.
jamespo
Just tried to browse the web on my Atari Lynx.
Apocryphon
Indeed, they should rename it to Jaguar.
polyrand
I remember listening to a Syntax FM[0] with Zack Jackson from ByteDance, which mentioned this framework briefly. Some quotes and notes from that part of the podcast:
- All ByteDance products, even native apps, are web-based
- They have an in-house framework called "Lynx" which is essentially their version of React Native[1]
- "All apps are Lynx apps. Everything is a Lynx app. It's all backed off the same stack."
- This approach allows them to maintain a unified architecture while having specialized teams focus on different aspects (algorithms, compiler, kernel, etc.)
[0]: https://syntax.fm/show/860/module-federation-microfrontends-...
[1]: The one being released, in the podcast they confirmed they would be open-sourcing it this year
suzakus
I work at ByteDance (though not for long). Most of the "sexy" part of the app is native, or C++ crossplatform for things that would normally be in C++. I'm not sure I'm allowed to share what Lynx is used on, but it's a small subset of the app.
suzakus
I went to watch the podcast – he's heavily overplaying how much cross platform web dev is used on the native platforms. He doesn't seem to be in the biggest channels for both iOS and Android developers (the largest 'IOS'/'Android' release/global channels).
polyrand
Thanks. What do you mean with "native" (vs. C++)?
What I assumed from the podcast is that there's a lot of internal reusable tools in C++, and the web-based stuff is mostly about the UI layer.
Is there a lot of WASM to use both at the same time?
suzakus
Native as in Swift/Objective C (iOS) or Kotlin/Java (Android). Probably 99% of the UI (and lower layers, outside of specialty cases!) is based in that. C++ is used for typical high performance cases; e.g. Video rendering (though there's more than that).
There's a lot of internal tools. I don't know what they're written in. I would not be surprised if it's Lynx, but I'm a mobile developer on the TikTok app, and haven't ever looked into it.
I haven't come across any WASM in my time here, but I'm not in a position to declare that it doesn't exist.
hnlurker22
Apple and Google need to talk. They need to collaborate on something truly native to put an end to these bloated frameworks. My goodness the amount of engineering work being put into terrible mobile experiences is worse than how much Nasa is spending to look for water in space.
Any mobile app designers out there think TikTok has good UX? I mean scrolling video is great, but everything else?
endofreach
> Any mobile app designers out there think TikTok has good UX? I mean scrolling video is great, but everything else?
You wouldn't ask a doctor if she thinks crack is great, right?
wiseowise
Google already did the talking for both of them. It’s called Flutter.
xnx
TikTok is impressively multi-device. It works well on Android, iPhone, Android TV, and web.
Compared to Instagram, where the web version has always been behind the mobile version, TikTok really seems to make each device version the best possible.
vips7L
I'm pretty sure for Instagram it's by design, not because of their technical stack.
serial_dev
Instagram web is so bad that it’s the only logical explanation.
kridsdale1
I have worked in the Instagram ios source. It is FUCKING AWFUL.
They’re impressive in their business success given their code quality.
diggan
Got curious enough to wanting to give it a go, so on the quickstart page it says:
> Lynx Explorer is a sandbox for trying out Lynx quickly.
And then it asks me to use either the iOS Simulator or the Android Simulator, which based on experience, neither are made for anything resembling "quickly".
Anyone know if there are any "pure-web" instructions around? Skimmed around the docs, website and repository but didn't find anything that looked like it was made for just web setup.
hkalbasi
> iOS Simulator or the Android Simulator, which based on experience, neither are made for anything resembling "quickly".
It's not adb / avd or some device emulator. It's an app that you install on your device, and then it can load your app from your development device using a link. I was able to run it in 5 minutes without having android studio or any other android development kits on my laptop.
Nelkins
I see there's Lynx for Web[0]. Does that also adhere to the two-threads model (one for UI, one for background)? Also, is this something that React/Native may adopt itself one day? Curious to know if this is a technique that may be adopted by the React ecoystem itself, or if it's just too far outside the bounds of what React is supposed to handle.
[0] https://github.com/lynx-family/lynx-stack/tree/main/packages...
Nelkins
I'm also a little confused about how to get started. According to the docs you have to embed it into an existing app[0], but the quickstart suggests otherwise[1].
[0] https://lynxjs.org/guide/start/integrate-with-existing-apps....
[1] https://lynxjs.org/guide/start/quick-start.html#quick-start
diggan
Thanks for finding that, was out after the web portion myself (https://news.ycombinator.com/item?id=43269966)
As far as I can tell, it has the same model, at least judging by the directory names (web-worker-runtime, web-worker-rpc, web-mainthread-apis, etc).
rubicks
No. No, it isn't. Lynx is a browser I use in the terminal. This is something else.
gorbypark
Seems interesting. Coming from the react native world, competition is good! This seems to have a from scratch layout engine, which is pretty exciting. It looks like it supports some of the more recent/advanced CSS features. It also has a javascript engine based on QuickJS.
I can't wait for a more technical deep dive into how this works and compares to react native.
klabb3
Native now means mobile only? That’s a depressing state of affairs. Cross platform and then not even mentioning you’re limited to 2 out of the 5 more popular OSs. Just say you rewrote React Native if that’s all.
pjmlp
I see very little native on that.
mytenthaccount
Support for CSS transitions (and animations) on a native UI thread would be huge. React Native Renanimated is cumbersome and painful to use everywhere.
Sadly I finally ditched my MacBook for a Linux PC since Expo/EAS has liberated me from needing Xcode. I won’t be able to try this out for iOS development.
qq99
> However, Lynx isn't limited to React
I think this could be huge! I'd love to see a SolidJS version
Are we intentionally reusing project names now? Lynx [1] is a fairly popular tui browser. I guess it doesn’t support ssl or tls, so is now obsolete? W3M [2] is a decent tui alternative that does. Or if you use kitty, awrit [3] is nice, with images and mouse support (it renders chromium in a terminal window)
[1]https://en.m.wikipedia.org/wiki/Lynx_(web_browser)
[2] https://w3m.sourceforge.net/
[3] https://github.com/chase/awrit