Loading video...

Video Failed to Load

Go Home

finally liquid glass web is here and it's open source. real WebGL refraction, chromatic aberration, liquid motion not usual backdrop-filter css hack. playground at code at MIT so do whatever you want with it #LiquidGlass #OpenSource #ReactJS #WebGL #UIComponents #FrontendDevelopment #CSS #JavaScript #WebDev #UI #UX #React #ComponentLibrary #OpenSourceSoftware #Frontend

65,100 views • 3 months ago •via X (Twitter)

35 Comments

Tirth Parmar's profile picture
Tirth Parmar3 months ago

Works on any browser :)

Tirth Parmar's profile picture
Tirth Parmar3 months ago

Github repo alternative cuz of shadow ban :(

Tirth Parmar's profile picture
Tirth Parmar3 months ago

Guys my GitHub account got shadow banned, 404 :(

sam fitch's profile picture
sam fitch3 months ago

It’s using webgl, so I assume background image. Not refracting the DOM. This didn’t work for me because I had to rasterise everything first

Tirth Parmar's profile picture
Tirth Parmar3 months ago

exactly, it takes a background Image prop and it samples that for refraction, so it’s a WebGL shader on a flat texture, not the live DOM. That’s why you had to rasterize first, no way around it with this approach. I also tried the SVG filter route but that had a bunch of performance issues too, especially with multiple elements or on scroll.

sam fitch's profile picture
sam fitch3 months ago

Yeah for my use case, needed to refract the live dom as rasterisation was never 1:1

exepert's profile picture
exepert3 months ago

This looks sick!

irshit's profile picture
irshit3 months ago

the backdrop filter blur everyone ships is fake glass it just blurs whats behind it real glass bends light through a normal map which is exactly why you need webgl to get the apple look only catch is text legibility on top tanks fast unless you tune the refraction carefully

Thiago Monteiro's profile picture
Thiago Monteiro3 months ago

finally someone did real refraction instead of faking it with a blur. instant bookmark

星野白夜's profile picture
星野白夜3 months ago

bro, I couldn't open your GitHub page, so I cloned it to GitHub for you. but rest assured, I clearly stated that you are the original author.🤓Here is the link:

Yahia's profile picture
Yahia3 months ago

Heat 🔥

Pankaj Kumar's profile picture
Pankaj Kumar3 months ago

loved some components man! hope u make more

Pavitra Golchha's profile picture
Pavitra Golchha3 months ago

Almost real 🤯🫡

Justin Campos's profile picture
Justin Campos3 months ago

Amazing! Thank you, Tirth 🙏🏻

叶子's profile picture
叶子3 months ago

👍🏻

nowmo.design's profile picture
nowmo.design3 months ago

Excellent 👌

Nick Venturi's profile picture
Nick Venturi3 months ago

im stealing this immediately for my next landing page 🧪

Ale-Hop's profile picture
Ale-Hop3 months ago

git repo down.. ; (

Tirth Parmar's profile picture
Tirth Parmar3 months ago

Maybe it’s a glitch, the link from my tweet is showing 404 on my phone but it works on PC. Idk how, but here it is:

Mike Acler's profile picture
Mike Acler3 months ago

@frowsac Seems your account does not exist...

Tirth Parmar's profile picture
Tirth Parmar3 months ago

@frowsac It got shadow banned 😢

Minhaj M.'s profile picture
Minhaj M.3 months ago

@agilek @frowsac wait is there any alternative ? like for your repo ?

Tirth Parmar's profile picture
Tirth Parmar3 months ago

@abedinminhaz70 @agilek @frowsac

c0xta's profile picture
c0xta3 months ago

I had a go at my own version:

RektHedz's profile picture
RektHedz3 months ago

2007 called…

Wu's profile picture
Wu3 months ago

good

Mert's profile picture
Mert3 months ago

Github page is not found ?

Tirth Parmar's profile picture
Tirth Parmar3 months ago

Shadow banned 😓

Hossain Jahed's profile picture
Hossain Jahed3 months ago

nice. pure WebGL over backdrop-filter is the only way this doesn't kill scroll jank on mid-tier devices. your chromatic ab config looks dialed. what's the perf hit at 60fps on a standard mobile gpu?

xxk8's profile picture
xxk83 months ago

Why is it 404?

Tirth Parmar's profile picture
Tirth Parmar3 months ago

Maybe it’s a glitch, the link from my tweet is showing 404 on my phone but it works on PC. Idk how, but here it is:

CEO of shadcn/ui's profile picture
CEO of shadcn/ui3 months ago

This is gorgeous! But what happened to GitHub? Is this malware? 😁

Tirth Parmar's profile picture
Tirth Parmar3 months ago

@nrgpu69121561 Its not malware, GitHub shadow banned my acc, try gitlab

CEO of shadcn/ui's profile picture
CEO of shadcn/ui3 months ago

Need to add Switch

Commie Tracker: Report All Commies's profile picture
Commie Tracker: Report All Commies3 months ago

You stole this

Related Videos

Anthropic's most viral feature is now open-source! Until now, Anthropic's Generative UI capabilities only existed inside its own products. CopilotKit🪁 just shipped Open Generative UI, an open-source implementation of Claude Artifacts that works in any app. The agent generates HTML/SVG at runtime, and CopilotKit streams it token-by-token into a sandboxed iframe inside the app's chat. So the user can watch the UI assemble itself in real time, not after the full response is ready. The sandbox is fully isolated with no access to the parent app, the DOM, or user data. So if the agent hallucinates broken markup or unexpected JavaScript, nothing leaks outside the iframe. Under the hood, the agent does not select from pre-built components. Instead, it generates arbitrary visuals from scratch every time. The output is unconstrained by default, but you can shape it by defining prompt-based skills that teach the agent specific visual formats or guidelines. For instance, a skill prompt can guide the agent toward producing a Chart.js dashboard with proper axis labels and responsive sizing, or an interactive 3D model with rotation controls. The video below shows this in action, and the output quality you see actually comes from the skills layer. Open Generative UI runs on AG-UI, so it works out of the box with LangGraph, CrewAI, Mastra, Google ADK, AWS Strands, and more. It also ships with a standalone MCP server that plugs into Claude Code, Cursor, or any MCP-compatible client. And the entire stack is built on top of CopilotKit, the open-source frontend framework for agents and generative UI. 30k+ GitHub stars, with SDKs for React, Next.js, Angular, and Vue. I have shared the GitHub repo and a live playground in the replies!

Akshay 🚀

87,048 views • 5 months ago

Build uncompromising high-performance, high-fidelity apps with React. What you see is not the Apple Messages app, nor is it meant to be 1:1. Rather it serves as an aspirational and real example of UI/UX that is possible. Every detail from the bubble animations to keyboard gestures to scroll view insets and safe areas to parallax timestamps required care and attention. Quality UIs come from caring hard. The little chat bubble tails that morph away when the next message animates in. Timestamps that scroll at a different rate than the bubbles. Peek gestures powered by UIKit that lift a chat bubble, tail and all, with a gentle haptic pulse. The subtle shadow of the text composer and responsively sliding down the keyboard in pixel-perfect concert. The composer shrinking its width to fit iPhone’s rounded bezel. The beautiful Liquid Glass refractions have the level of glassiness chosen by the user (new in iOS 27). Scroll view insets that adjust to fit the home bar and keyboard dynamically, creating a sense of depth as the chat bubbles are slightly visible as they scroll under the keyboard. Keeping the keyboard on screen if the prior screen already presented it. Sliding the keyboard and composer with the screen when the user drags to navigate back. I am excited to explore using the new iPhone Duo view controllers natively with React when the time comes. There is always room for innovation and improvement. This chat demo runs at 120 FPS on iOS 27 even on my phone that’s four versions old now. There are several approaches to high-performance lists. I explored a new Expo scroll view that uses the native gesture systems along with react-native’s VirtualView (codenamed “Fling” to reflect the speed of flinging a scroll view), which Meta’s React team designed to prioritize scroll momentum with React’s scheduler. There are tradeoffs with other scroll strategies for how the scroll views gracefully degrade, and they can be swapped out based on what’s best for your app’s use case. And, by virtue of using modern React, high-priority events like user gestures can preempt lower-priority ones like a network response. Let us dispel any myth that using React requires compromising on beautiful, smooth, user-friendly UI/UX that Uses the Platform. Let us dispel any myth frame-perfect UI coordination is not achievable. The Hermes thread and the UI thread can coordinate when needed, like for controlled text inputs. Let us dispel any myth that React Native’s performance is impacted by a bridge, let alone has a bridge. Bridgeless JSI and the Fabric renderer are here for apps that use the New Architecture. What about Android? The app runs and I’ll share a screenshot from my cloud agent’s emulator. With some attention to detail dedicated to Android I’m confident crafted UX is attainable. I’ve spent my tokens once and have a structural head start everywhere. One more thing! Most of this chat’s application code is written with , , , and other familiar elements. The styling is mostly CSS, including linear-gradient(), background-attachment: fixed, and semantic platform colors that adapt to dark mode. Not just appearance - CSS Animations and CSS Transitions run entirely natively. There are a handful of custom native components written in Swift and Kotlin, like the chat bubbles and a custom CAShapeLayer and UIBezierPath for the tails. Native coding is a first-class feature. The way to think about building beautiful apps this way is React and Native, not React vs. Native. Aspire high and raise your ambitions for what is possible!

James Ide

140,188 views • 23 days ago

NOBODY wants to send their data to Google or OpenAI. Yet here we are, shipping proprietary code, customer information, and sensitive business logic to closed-source APIs we don't control. While everyone's chasing the latest closed-source releases, open-source models are quietly becoming the practical choice for many production systems. Here's what everyone is missing: Open-source models are catching up fast, and they bring something the big labs can't: privacy, speed, and control. I built a playground to test this myself. Used CometML's Opik to evaluate models on real code generation tasks - testing correctness, readability, and best practices against actual GitHub repos. Here's what surprised me: OSS models like MiniMax-M2, Kimi k2 performed on par with the likes of Gemini 3 and Claude Sonnet 4.5 on most tasks. But practically MiniMax-M2 turns out to be a winner as it's twice as fast and 12x cheaper when you compare it to models like Sonnet 4.5. Well, this isn't just about saving money. When your model is smaller and faster, you can deploy it in places closed-source APIs can't reach: ↳ Real-time applications that need sub-second responses ↳ Edge devices where latency kills user experience ↳ On-premise systems where data never leaves your infrastructure MiniMax-M2 runs with only 10B activated parameters. That efficiency means lower latency, higher throughput, and the ability to handle interactive agents without breaking the bank. The intelligence-to-cost ratio here changes what's possible. You're not choosing between quality and affordability anymore. You're not sacrificing privacy for performance. The gap is closing, and in many cases, it's already closed. If you're building anything that needs to be fast, private, or deployed at scale, it's worth taking a look at what's now available. MiniMax-M2 is 100% open-source, free for developers right now. I have shared the link to their GitHub repo in the next tweet. You will also find the code for the playground and evaluations I've done.

Akshay 🚀

50,323 views • 10 months ago

I've been building a music player with Next.js for fun. Here's a quick demo of how it works (it's open source!) • Demo: • Code: If you want to learn more about how it's built, here's more details ↓ I'm using Postgres (with Drizzle) to store information about the songs and playlists. Audio and image files are stored in Vercel Blob (object storage), and the URLs are then referenced in the database. For the UI, I'm using shadcn/ui (so Tailwind CSS and Radix). This made it easy to copy/paste in some nice components, like the dropdown menus. I built the entire first version of the UI in v0 and then iterated from there, feeding it my Drizzle schema as a source in the project and having it scaffold some of the boilerplate for me: I added support for keyboard navigation (using arrow keys) or vim motions (j/k to go up/down, and h/l to go between playlists and tracks). Also, space to toggle the now playing song, and / to focus the search input. The search function has a nice utility to highlight the currently searched text on the page in yellow. Then, I was exploring how to pass metadata from my application to macOS or iOS. Turns out there's an API for that – MediaSession. Web apps can share metadata about what media is playing (title, artist, album artwork) and sync play/pause/seek with system media controls. Works across modern browsers — even integrates with iOS dynamic island and shows up on lock screens: I set up my app like a PWA – it has a manifest.json file, so it can be installed to my iOS home screen or added to my dock on macOS. On iOS, it then uses the full screen height `100dvh` (dynamic viewport) and has padding on the bottom for the safe area with the `env()` CSS function. Finally, I was able to use the Vercel AI SDK in a script to clean up the metadata on audio files I downloaded from YouTube. Bonus: I even was able to dogfood the React Compiler, which helped me fix a performance bug! That's all! It's fun to make personal software:

Lee Robinson

118,631 views • 2 years ago

Baseten Head of AI Model Training Charlie O'Neill says the future is many specialized LLMs dedicated to specific tasks, with bigger labs deployed on the frontiers of areas like science and math: "People are thinking about intelligence capabilities in the wrong way. People are thinking about intelligence relativistically. They say, 'OK, the open-source gap is like 6 months behind closed-source, and GLM 5.3 is as good as Opus 4.8,' or whatever." "The best way to think about what models can do for you, and for the world, is in an absolute sense." "So for any given task that you want to do with an LLM, there's some intelligence threshold where below that you can't do the task, and above that you have very diminishing returns to more intelligence on the task." "So when you think about it that way, the game of LLMs over the last 5 years has been, 'OK, we have these things we want to do with them. Closed source hits it first... but open-source can eventually do that task. And then for many reasons, once you have the base level of intelligence required to do it, you probably do want to swap to open-source." "It's not really about the [frontier lab] God model being better. Like, if I'm filing a tax return, there is a limit to how much intelligence I need to do that particular thing." "So I think the world is going to look like — frontier closed-source labs are going to continue to push the frontier. You do want to use the most intelligent model. You have very inelastic demand for intelligence when you're doing frontier science or frontier math." "But for a lot of the economically valuable things, it looks a lot like, 'I'm a Cursor, or I'm one of these big companies who are realizing I can't just be a wrapper anymore. I've been through the life cycle of building a product that people love. And I should be using that information to make my model better at the things that I care about, and not at anything else.'"

TBPN

50,531 views • 1 month ago

CSS Trick 🧲 You can create magnetic links with the power of custom properties and some JavaScript 💪 a { translate: calc(clamp(-1, var(--x), 1) * var(--pad-x)) ...; transition: translate var(--s, 1s) var(--ease, var(--elastic)); } a:hover { --s: 0s; } The trick here is to pad out the list items wrapping your links and use that as a translation limit 🛑 Start by using some JavaScript to calculate a value between -1 and 1 for both the x/y axis on pointermove for each list item, not the link! 🔗 If your pointer was at the center of the item, you'd get [0,0]. If it was in the top right, you'd get [1,-1] ☝️ It's worth checking out the JavaScript snippet to see how the mapping function works. Essentially, you create a function that when given a value between two bounds, will give you a mapped value back 🤙 const mapX = mapRange( item.offsetWidth * -0.5, item.offsetWidth * 0.5, 1, -1 ) Then, on pointermove, you plug the pointer position in to get the value back out and pass that into your CSS const x = mapX(item.centerX - event.x) document​.documentElement​.style.setProperty(--x, x) When the pointer leaves the list item, you make sure to reset these values back to 0 ✨ Once CSS has your values, it's the trick of updating the translation of each part You know that in each axis, you only want to translate the link by the padding amount li a { translate: calc(clamp(-1, var(--x), 1) * var(--pad-x)) calc(clamp(-1, var(--y), 1) * var(--pad-y)); transition: translate var(--speed, 1s) var(--ease, var(--elastic)); } This will translate the link within the list item by the desired amount. The cool part here is that you can set an offset for the text inside the link and have that move at a different rate ⭐️ By only updating the --pad-x/y custom properties for the inside the link, you can control how much it moves nav a span { --pad-x: 0.25rem; --pad-y: 0.25rem; } And the last piece, how do you update the behavior for transition speeds? And so it springs back like that? Again, use custom properties ✨ a:hover { --s: 0s; } a { transition: translate var(--s, 1s) var(--ease, var(--elastic)); } By default, a link will use --elastic easing via linear() and have a transition-duration of 1s. When a link is hovered that speed becomes 0s because you want the link to magnetise to your pointer. How about that little gap between when your pointer enters the item but hasn't hovered the link? Set a different transition so it transitions to being hovered 🫶 nav li:hover a { --ease: ease-out; --speed: 0.1s; } That's kinda it! 🙌 Use JavaScript (~40 loc) to get the information and then let CSS do all the lifting for you 💪 Any questions or suggestions, let me know 🙏 If you want a walkthrough video, also let me know please 🙏 CodePen.IO link below 👇

jhey ʕ•ᴥ•ʔ

164,863 views • 2 years ago

Hermes just made its in-app browser a whole lot more useful. You can now keep multiple browser tabs open inside Hermes Desktop instead of every new page replacing the one you were already using. And that matters more than it sounds. Because this is not just about “having tabs.” It means Hermes can work across multiple pages without forcing you to keep losing your place every time you open the next thing. Research one source, keep it open, open another tab, compare them side by side, and keep moving. Check a few products before buying something. Look at multiple hotel or travel options at once. Keep a YouTube tutorial open in one tab while Hermes looks through docs or another page in the next. And because this lives inside Hermes Desktop, you are not limited to one basic browser view either. You can keep multiple tabs open. You can view two pages side by side. You can stack them top and bottom. You can even run a four-panel view when you want several pages open at once. So the browser inside Hermes is starting to feel a lot more like a real workspace instead of one page you keep replacing. There is also some nice polish that comes with it. Browser tabs now label themselves based on the page, and the address bar behaves more cleanly while pages are loading. And remember, this is the same in-app browser Hermes can already read, click through, type in, scroll, and annotate. So this is not just a prettier browser. It is a more capable workspace for the browser Hermes is actually using. If Hermes is going to do more of your work on the web, this is exactly the kind of browser upgrade it needed.

Hermes Release Watch

52,493 views • 1 month ago

Great question! 🤔 How do you simulate *multiple* layers of glass/refraction in video games? In the last breakdown, I discussed how to create a glass shader in Unity URP. In essence, we were taking the render of the scene from the camera without any transparent objects. This is available in URP as the global _CameraOpaqueTexture. This is good enough for most use-cases, and more or less the classic way of doing it. 🔍 What is _CameraOpaqueTexture? As the name implies, there are no transparent objects rendered into this texture, so it's not possible by default to have something like a transparent-type ocean material/shader rendered through a refractive glass shader (which samples and distorts this texture to render on its surface, as if it's transparent). ⚠️ Why it’s tricky: It's much easier to sort without much further setup if you don't have refraction, and only a transparent material, because in that case you're not simulating the transparency yourself via sampling the rendered scene texture. But for refraction, it's required-- unless you want to go down the ray/path tracing route. You could simulate accurate, real dispersion... and that's about as expensive as it sounds, and it requires a rework of your entire rendering. --> 🚫 It's not a viable suggestion to offer. 📚 There are well-known terms regarding transparency sorting you can search up, but as you've specifically asked for refractive boxes, I'll discuss briefly about that. 🧱 Simulating layers of refraction: For this kind of rendering, you need some way to render the backfaces before rendering the front. And the backfaces that are rendered may contain whatever data you'd like for additional processing in the layer front-facing mesh render. 🧪 Examples: You could render the back face as a glass shader of its own, as an intermediate step after _CameraOpaqueTexture. Then you sample this texture instead and you end up with multi-layered refraction, "just like that". You can also render the back normals only, via a fully opaque shader, and use that to manually account for that during the front render. You could even bake in data needed for thickness in realtime. 🛠️ Without making it complicated for yourself, the most straightforward method is via render textures, and you can easily set some fractional resolution. Cameras in Unity have an open slot for target textures to render to. You can use custom render textures to process _SelfTexture2D. ⏱️ It's great to do low-resolution processing for more complex tasks, like blurring and caustics. You can get massive performance boosts, considering the square law and number of pixels/fragments that need calculations (quadratic scaling). 🚧 I've not fully exploited the possibilities myself, but research/development with PRISM is ongoing!

Mirza Beig

61,581 views • 1 year ago

What they don't tell you about vibe coding: • Moltbook exposed 1.5M auth tokens. The owner hadn't written a single line of code. • Tea App leaked 72,000 government IDs. The database was just open, no sophisticated hack needed. • A researcher took control of a journalist's computer through her own vibe-coded game, without a single click. The code ran fine in all three cases, tests passed, reviews looked clean, and nothing raised a flag. That's the problem nobody is talking about. Teams are shipping faster than ever. AI writes the code. CI catches build failures. Tests catch regressions. Observability catches outages. But nobody is asking the one question that actually matters: What can an attacker do with this, right now? Because the bottleneck is no longer writing code. It's understanding what that code actually exposes once it's live. PR reviews miss auth edge cases. Unit tests don't probe broken access control. Staging environments don't simulate adversarial behavior. And business logic flaws look completely fine until someone decides to break them on purpose. Strix is an open-source tool that fills this gap. It reviews your running app the way an attacker would: - Crawls the app and maps every exposed route and flow - Probes abuse paths dynamically, not just at build time - Returns findings with proof-of-concepts and suggested fixes Strix was benchmarked against 200 real companies and open-source repos, where it found 600+ verified vulnerabilities including assigned CVEs. It's designed to fit into how modern teams already work. Run it before a release, after major changes, or continuously as the app evolves. If your team is shipping AI-generated code and you don't currently have a way to answer "what does this actually expose", it's worth looking at. GitHub link in the next tweet.

Akshay 🚀

52,399 views • 6 months ago