Show HN: Performative-UI – A react component library of design tropes
vorpus.github.io774 points by lizhang 12 hours ago
774 points by lizhang 12 hours ago
hope you enjoy
I've worked on several projects where people looked at the site, which was simple and straight to the point, and people would straight up tell me they didn't take it seriously because it didn't have these performative UI things on it. It's like when a Youtuber's audience complains about how they're constantly asking you to subscribe. The reason it happens is because the statistics say it works. It really comes down to first impression. Your website design is your company’s first impression. If the design is clean, people will believe the product is clean and robust as well. Similar to how people think things that cost more and probably high quality and better overall. As for this website, the best component is the ASCII animation in the hero and you can’t even copy that component. In fact, that nice ASCII hero is what gave me a good first impression to go thru all the components. Ah it’s in the hero section, kind of scanned that section but had lost interest by that point So the thing that made you go through all the components didn't even hold your attention enough to make your argument true I was on mobile and a lot of the pages are overflowing. After going thru half, it got a bit annoying. I actually keep a directory of all these tailwind/shadcn registry websites and this one drew me in more than others. explain why Craigslist, temu, etc. are all popular then? :p Sometimes utility can be so good, users don’t care about design. I was also thinking of it as a business coming to a SaaS website. B2C is filled with so many dark patterns, first impression probably plays less of a role. Craigslist became popular when that was the clean look for a website, and then never bothered updating. Network effects in action. Temu offers people the ability to save money. If your product is "X, but cheaper" you can have a worse UI than X. Amazon is a hideous looking website too and always has been. Ebay is similar too in that aspect and plenty of others. I don't think the commentary being made here is that startup websites should not be flashy. Just that, maybe they don't all need to look exactly the same as each other. I think homogeneity is an unavoidable end game for the internet (unfortunately). At work we’ve been discussing whether to migrate off our home grown component library to Material UI. I shudder at the thought, personally. However, a compelling reason to use a ubiquitous framework is that the ubiquity means folks intuitively know how to interact with your product. Like many of us I was born into a deeply customizable Internet, all of my websites were green or red on black. They were a glorious amalgam of fixed width fonts and <blink> tags. With occasional wingdings characters for fun and games and complex <table>/<tr>/<td> tags for really epic layouts. They were l33t, honestly ^_^ But, as time goes on and more and more people use this thing, converging on the one-true-UX feels like a net good thing assuming the fundamentals are right. To some degree the LLM-ization of the Internet is essentially the end game of squashing the personality out of the Internet which bootstrap started. We’re on the cusp of spoken word being the core UX of computers with a fall back to reading the LLM transcript, neither of which benefits from <blink> Homogeneity doesnt need to be the endgame just a pitstop along the way. We should have a universal tool for creating unique things. If everything is unique the cognitive load is high we get lazy and output all converges on shallow stuff that is the same. If the tools are homogenous we learn something once and spend energy on making the diffetences > a compelling reason to use a ubiquitous framework is that the ubiquity means folks intuitively know how to interact with your product Not that I disagree with you, but I'll also offer a tradeoff. When people expect to pick up your app intuitively, it can also just mean them using the app absent-mindedly, which can mean them skipping the manual and jumping straight to trying to tie up the support lines. Whereas if your ui asks for a user's full focus up front, yes there are downsides to that but they're also more engaged. I guess the issue is that when someone can't use a product immediately, they have an urge to abandon it altogether, not learn how to use it. It depends highly on the application. If the application domain is inherently complex and or used in business contexts, then they will have to learn how to use it regardless. Intuitiveness only works for somewhat cookie-cutter applications. Consider Excel: Excel is not intuitive to people who have not used excel. We can make it easier to use, but regardless the user will have to learn the fundamentals of a spreadsheet (and even how the data is stored in memory!) in order to successfully use excel. The reason I say users even have to understand how data is stored in memory is because of types. Dates are not strings, for example. Related: institutional isomorphism https://en.wikipedia.org/wiki/Isomorphism_(sociology) We're migrating our Material UI components to homemade components, since MUI doesn't cater to our needs anymore. It seems to me the parent commenter is saying the opposite: looking exactly like each other _is_ the point. It's a form of social signaling, to indicate that a project "belongs" to the in group of high-flying successful AI hype projects. Note I'm not arguing that this is a good strategy. But given that so many people follow it I imagine it's not as bad as it appears on the surface. It's a bit of in-group signaling but I think, importantly, also date signaling. A 2026 hype website looks different from a 2020 hype website looks different from a 2010 hype website. Having a generic 2026 hype website look tells visitors that you're either new or update your website's design to follow current trends. They do the same with cars, where it's even more important and even more explicit. The design language has to change every couple years so that you can tell when somebody is driving a car older than 5 or so years. For example, currently we're doing blobs but with a few sharp features and muted colors. Before that it was more colorful and more metallic paint. Before that, in the 00s, it was pure blobs. Before that it was all sharp edges etc. Now sharp edges are beginning to make a comeback. That's why I don't think we'll ever have the "one true design language". Fads and trends will continue, repeating themselves to a degree but also changing in new ways. I use a Substack site for the conference that I run. The popup and subscribe buttons everywhere used to annoy me...but they work. Went from 0 to almost 1,000 subscribers on an otherwise low traffic site and it's by far the best way to reach people. Another way to get a lot of traffic is getting the top reply to the top comment on the top hacker news post. Speaking of which... https://github.com/SpyC0der77 I was in the Winston-Salem Flywheel coworking for eight years, good place. I hope the Greenvile site is as good. Same for clickbait thumbnails, people hate them, and yet don't really click on non clickbaity ones. In the marketing world this is called revealed preference. This stuff is A/B tested to death. Anyone trying to sell something is best served by watching people's behavior instead of listening to what they say, as the two are often different if not polar opposites. The perspective marketing world seems toxic. From the perspective of the "consumer", it sure does feel like we are being "ignored", "tricked", or "bamboozled" when our stated preferences are ignored in favor of "revealed preference". It isn't that we have a "preference" for these things, it is far more likely that a user just doesn't have their guard up 100% of the time, and these psychological manipulations are designed to cut through that. Sure, these strategies probably net clicks, but they aren't from people who "chose" your product, they are clicks from people who were manipulated into clicking. I suppose whether you think that is okay depends on your industry and ethics. Yeah, it is highly toxic. I'd assume that in most cases those "revealed preferences" are specifically engineered, not organic. It's taking advantage of biological reflexes and calling it a true preference. It's behavioral marketing, vs status/aspirational marketing. A stated preference isn't necessarily current or situational (I will choose to run instead of watching another 45 minutes of Youtube videos). A situational preference is often inertia, and behavioral marketing will directly hinder the meta cognitive processes that usually give us the agency to override our default mode choices (John has been on YouTube for the last 20 minutes, what next suggestion is not likely to keep him there?) Better for you(the seller) vs better for me (the buyer) Two agents with two different utility functions fighting each other, it's an adversarial relationship/game. The fight is for your limited attention span. Clickbaity titles or least informative ones, 20min of rambling for what could've been a 2min video or article, spreading the meat of the info in the later half of the video for better retention instead of the beginning, highly misleading previews at the beggining, etc ... are good for the content producer but not so much for the content viewer that has to sift through it only to reliaze that didn't care about that particular thing. Not limited to videos, but also things to buy the meat of the technical/practical description of the product get worse and worse each year and the other proxy signals for them too. Seems like marketing is a lot like military conflict drown the enemy in lot of noise to drop the SNR. what's that you want to buy a 4k video projector and set a filter for it? here it is for cheaper. Oh, you wanted the actual dots on the wall resolution to be 4k instead of max supported input signal, oops. You're used to higher price meaning better quality? guess we'll flood that price point with shitier quality progressively until we find your limit I guess in the social sciences world this is called institutional erosion... Youtube is a perfectly "unbiased" "democratic" repository, where crazy people shouting conspiracies and prize-winning documentaries have the same thumbnail and half-line of text for you to discover if they are any good. I really wish there was a way to filter out the soy-O-face thumbnails entirely. I do not like them. I do not want to see them. Its like when people say they hate politicians all the while they've been voting for the same Senator for the past 30 years. The funny thing is, the techniques shown here are the ones that were once considered something only advanced front-end developers or publishers could do. Seeing that a former symbol of skill has now become a subject of satire makes me think that what we call 'high-level' ultimately comes from what others can't do. I personally never even thought about how to implement ASCII art animation. As someone who used to pride myself on being able to make complex graphical designs a reality, it has definitely put me into a little bit of an identity crisis. But ultimately I think it just pushes you to find the things that are still hard for AIs, which in turn continues to differentiate your work from what everyone can now generate. Feels similar to the move away from realism to impressionism as the camera became available. Yeah, it used to function as proof-of-work but then the market was flooded with cheap printed circuits that trivialized the workload I love how this is both hilarious and extremely well made. Great job! And I'm gonna be honest, I kind of want to use a few of these components for real (the ASCII art is fantastic). Agreed. I am impressed by both the satire of this, and the very high-quality implementation. It is so well executed, that it is hard to laugh at the absurdity of the lemmings-like patterns modern AI start-ups have fallen into. I was going to say that too. Some of these I definitely am guilty of. I have a few dozen that aren't on the list but it's a breath of fresh air to see it so well organized even though, we all know what it is :D fantastic job to the author(s). please share your few dozen components Why? They are silly gimmicks. You can easily prompt this. Claude:
“In react, make a full screen component that renders pixel squares that fade in and accumulate over a page component, taken as a target prop.” Stupid crap like that. What’s cool is for those fullscreen tutorials or app walkthroughs, this works REALLY well to highlight the box on screen. The death of development, ladies and gentlemen. don't be so gloom. code that's more difficult than a zero-shot is worthy of sharing. The most extreme virtue-signal is to go completely browser-default and have no styling whatsoever. Like lowercasing because your pinky can't be arsed to reach for the shift-key even though you've a billion dollars in series A. My god, it's perfect. > If you have any comments about our WEB page Haha, this webpage on the inter network is amazing Ew. I mean 500 bytes of CSS would make this so much better. No. It’s perfect as is. I can find everything I want. Everything is accessible to everyone and screen readers. Does not require JavaScript. The home page links are teeny tiny on a phone screen, borderline unreadable. That's because phone browsers have the insane braindead default of scaling everything into tiny unreadableness. You have to explicitly say "stupid browser, nobody ever wanted this shit, behave sensibly by including <meta name="viewport" content="width=device-width, initial-scale=1.0">. No idea why this idiotic custom still hasn't been purged from mobile browsers, but I guess it's just a valuable tradition now... Before mobile browsers arrived, everything was fine and nobody needed meta viewport stuff. That's why this 1997 era page doesn't have it. I've mostly stopped caring about using using proper capitalization, commas, grammar and spelling in my writing of comments, primarily as a signal that i'm not an llm. If you turn on HN's "Show Dead" setting, there are tons of LLM-generated comments on stories related to AI. You can see the human(s) behind the LLM trying to fiddle with the style of comment by making them skip proper grammar, capitalization, use or avoid certain phrases, and so on. The biggest tell for LLM content, though, is just the content as a whole: it sounds fake and ungenuine, like it passed through a committee of hostage negotiators to remove the speaker's own attachment/expectations. They can configure it to use all lowercase letters, skip em-dashes, make grammar mistakes, stop saying "it's not X, it's Y", or whatever, yet the content itself just has a fake quality to it that makes it stand out, which is why those comments still get flagged IMO. The uncanny valley of text. It looks and sounds like a human, but lacks the "soul" / humanity that our intuition somehow perceives. It's really strange... I see some text with obvious tropes and sometimes I read something and there's no obvious AI trope... but it's just not human? I had this conversation the other day. I'm a native German speaker originally, which is why I hand out commas like it's candy and capitalize things unnecessarily. Sometimes I notice these things and leave them in when I write something, since at least it gives you a good indication that a human wrote it... for now. I stopped doing that long before LLMs were commonplace because I couldn't see a point in it. Like, the entire concept of spelling and grammar is arbitrary anyway. Proper English and spelling of the 20th century is not the same proper English and spelling of the 18th century. For example, "you" was originally the formal form of the second person pronoun, and thee or thou the informal form. Many writers who try to write midieval period pieces tend to get this wrong though and just use thee or thou as a direct replacement for "you." And then English spelling and pronunciation is just chaotic anyway. I won't go out of my way to misspell things and I'll do my best to use the best grammar and spelling I can, but I'm not going to consult an llm or grammarly to make sure it'll get no notes from an English teacher when my only purpose is to comment on HN or write a quick update on slack. Claude's "write me a product description like a cool human would" is just using lower-case where it shouldn't be though. The problem is that omitting capitalization, commas, and so on signals, in addition to "not AI in default settings", but also "I'm part of the San Francisco AI in-crowd and Altman is my spirit animal". "Countersignaling" (https://en.wikipedia.org/wiki/Countersignaling) might be the better word: "Countersignaling is the behavior in which agents with the highest level of a given property invest less into proving it than individuals with a medium level of the same property." Array language proponents also like to do this. In their case I‘ll allow it, it matches the substance. lowercasing everything -- just means you're literate smart... poetic; because you read e.e.cummings and william carlos williams ... fin. These all look very professional for (basically) a parody library Definitely bookmarking for future ideas and inspiration, don't care if I'm shamed for it. What are the odds some companies end up using it for a real product? Honestly I can just swap these bad boys in and ship in less than a couple hours if it'd be funny enough. I don't think they're bad designs at all, and I don't think every aspect of my business needs to be unique and obsessed over. IMO this is like judging landscaping companies for all using similar looking shovels. Just because they're showing contempt for the process doesn't mean the process isn't refined Joking about something tends to require an interconnected understanding of it ...which might just show how predictable and similar all janky startup pages are. “TokenStream – Server-sent events (SSE) were added to the HTML5 spec in 2008 but never used until 2025.” I remember chunked transfer encoding shipped in 1997. It's been possible since then to readily and easily stream bytes of text or chunks of html the way everyone sees LLMs do today. I used this to write a web based telnet client in 1997, and later a text moo / chat for the web. In both cases used a frameset so your line to send was at bottom of screen, the incoming lines were server-sent as things happened server side, and scrolled the client as new lines came in. There were other things you could abuse before that, but less reliable. But yeah, talk about things nobody used.... COMET was so far ahead of its time. Sierra Online used it for their webchat in 1995 and it was absolutely the best webchat out there for years I don’t understand why the obnoxious popover didn’t automatically manifest when I scrolled its own doco. Needs more IntersectionObserver. Bonus points if the component props thereof are named like “selfArmTrigger”, I suppose. I get the whole trope thing and maybe I'm just an old man but I still am kinda impressed when Claude sh*ts out this type of UI 100 times faster than I ever could. It might also be that I never could have made UI even of this quality before AI. (˶ˆᗜˆ˵) Adding github link for those who want to use it (I do):
https://github.com/vorpus/performativeUI wait my readme isnt performative enough yet, let me add a chart showing the star history lol. Genuinely curious, what is your reaction to so much "actually, this is great and useful" feedback? That ascii lava lamp effect is low key really cool Yeah probably my favorite of the bunch too. I bet there’s a fun project to do to make a customizer for that. The animated graph nodes background is obligatory for token sale marketing sites during 2017/18 ICO boom https://vorpus.github.io/performativeUI/#/components/node-gr... It's still better than the sh*t developers produced three years ago. Some people just like to feel superior by shaming others' work. You can easily tweak the visual output if you want to, but it's good enough for most use cases and better than what developers used to produce. So, it's progress. This is like building nerve agents for funsies. I am torn between respect and terror. Actually quite good for a meme library! Unironically considering using some of this, or pulling some inspiration from it at least. Also, I'm curious as to when the animated gradient text started being a popular thing. I started doing it back in 2021 or so. I think I was inspired by some of Apple's webpages at the time. Some of these are actually nice and appropriate to use in certain contexts. Also this issue is hilarious:
https://github.com/vorpus/performativeUI/issues/2 The lib is a joke I know, but these will absolutely get your prototype greenlit. I love the research. Those 6 files plus a 2 sentence prompt were probably enough for Claude to one-shot the entire library. https://github.com/vorpus/performativeUI/blob/main/research/ Oh wow, it uses normal css, how delightful! https://github.com/vorpus/performativeUI/blob/main/src/style... it's obviously a satire and that makes me feel bad because some components are actually cool and i'd like to use them ... I find it funny that a website showcasing pretty preformative ui and yet fails so miserably at functional ui where it's painful to be used mobile When Agentic browsers become the norm, surely we will go back to the days of super plain HTML pages? Dickover is suspiciously missing. How will I ask visitors to subscribe to my newsletter? This needs an additional subscriptions service tier, that's even more performative and even more AI I assume this is where charlatan companies like Vercel get their UI from I’m interested but cannot be bothered doing 60 clicks trying to see it all. NGL I'm going to steal/borrow/leach all sorts of these for my product. When in Rome! Man... That's satire on a whole another level. What a technical and deep sense of humor. Now I can produce slop without AI. Why would you do that, when you can make shit nobody needs 10x faster with AI The author should have AI set up a simple deployment to EC2 and Azure and make an endless series of semantically meaningless AI companies with web sites and submit them everywhere. The web sites should also do this themselves. Neat, opened an issue there for a finicky bit of code that'd help me quite a bit. /s Yawn. This is just bootstrap all over again. So what if people who don't have design skills can now create pleasant looking websites? The thing about humor is that you don't have to tell people when you don't get a joke, you can just quietly continue to live your life while you wait for your next chance to be temporarily happy.
avaer - 10 hours ago
theturtletalks - 9 hours ago
zevyoura - 9 hours ago
theturtletalks - 9 hours ago
vasco - 6 hours ago
theturtletalks - 5 hours ago
aaronharding - 9 hours ago
theturtletalks - 9 hours ago
HWR_14 - 6 hours ago
beezlewax - 6 hours ago
wavemode - 10 hours ago
dayjah - 9 hours ago
enos_feedler - 3 hours ago
hntiz - 8 hours ago
NewsaHackO - 8 hours ago
preg_match - 7 hours ago
maxweylandt - 9 hours ago
kid_cubi - 9 hours ago
jsdalton - 9 hours ago
muvlon - 4 hours ago
brightball - 5 hours ago
SpyCoder77 - 2 hours ago
nwatson - 4 hours ago
epolanski - 10 hours ago
thewebguyd - 10 hours ago
4chandaily - 9 hours ago
thewebguyd - 9 hours ago
Lalabadie - 8 hours ago
gryn - 8 hours ago
marcosdumay - 8 hours ago
all2 - 7 hours ago
wnevets - 8 hours ago
jdw64 - 8 hours ago
wbobeirne - 3 hours ago
arboles - 6 hours ago
prplfsh - 8 hours ago
pseudosavant - an hour ago
reactordev - 8 hours ago
lizhang - 8 hours ago
reactordev - 8 hours ago
reassess_blind - an hour ago
reactordev - an hour ago
padolsey - 10 hours ago
thomascgalvin - 9 hours ago
andy_ppp - 8 hours ago
sph - 8 hours ago
God, that takes me back. MSHTML, the mismatched tags, <font>, table layout, the webmaster that added the Google Analytics snippet before the DOCTYPE tag <meta name="GENERATOR" content="MSHTML 8.00.6001.18828"></head>
<body link="#800080" bgcolor="#ffffff" text="#000080" vlink="#ff0000"><b><font size="6">
<p align="center">B</font><font size="4">ERKSHIRE </font>
SpyCoder77 - an hour ago
halapro - 8 hours ago
isatty - 4 hours ago
crabmusket - 4 hours ago
holowoodman - 3 hours ago
psadauskas - 10 hours ago
nozzlegear - 10 hours ago
oneneptune - 8 hours ago
otter-in-a-suit - 8 hours ago
abustamam - 6 hours ago
frantathefranta - 10 hours ago
quotemstr - 9 hours ago
xnx - 7 hours ago
MrBuddyCasino - 10 hours ago
cmrdporcupine - 10 hours ago
tfitz237 - 11 hours ago
sv123 - 9 hours ago
csomar - 10 hours ago
scottyah - 9 hours ago
yieldcrv - 8 hours ago
Boxxed - 10 hours ago
Terretta - 9 hours ago
ChiperSoft - 8 hours ago
inopinatus - 3 hours ago
wuliwong - 9 hours ago
grassfedgeek - 9 hours ago
lizhang - 9 hours ago
consumer451 - 9 hours ago
jrflo - 11 hours ago
tyleo - 10 hours ago
elwell - 3 hours ago
aogaili - 9 hours ago
hypfer - 6 hours ago
loh - 5 hours ago
kfarr - 9 hours ago
gkfasdfasdf - 6 hours ago
alehlopeh - 4 hours ago
ChiperSoft - 8 hours ago
guybedo - 7 hours ago
starkgoose - 5 hours ago
tomaytotomato - 8 hours ago
butz - 8 hours ago
yosef123 - 10 hours ago
lloydatkinson - 3 hours ago
andrewstuart - 7 hours ago
cmrdporcupine - 10 hours ago
wg0 - 11 hours ago
MisterKent - 11 hours ago
sph - 10 hours ago
hyperhello - 10 hours ago
utopiah - 10 hours ago
marknutter - 10 hours ago
ghurtado - 10 hours ago