| ▲ | donatj 4 days ago |
| > Fast-forward a couple of decades and we’re building highly interactive, component-based, state-driven, design-system-heavy applications Are we actually, in fact, if we're being honest? I haven't seen anything like that. 99.9% of applications I interact with are just a series of simple CRUD operations. Sometimes they add unnecessary complexity and flashiness and of course there are some games and such, but when it comes to actual business apps they all just boil down to updating text records in a database at a human pace. I am genuinely interested to hear examples of these "highly interactive" web apps others are building I keep hearing about but never seeing. |
|
| ▲ | motorest 4 days ago | parent | next [-] |
| > Are we, in fact, if we're being honest? Obviously, yes. > I haven't seen anything like that. 99.9% of applications I interact with are just simple CRUD apps. Irrelevant. Being CRUD is completely orthogonal to whether the WebApps are interactive or not. Look at Gmail. You can hand wave over it and claim it's a CRUD app. However, no one in their right mind would try to deny the app is a "highly interactive, component-based, state-driven, design-system-heavy applications". Also, it's silly to pretend that SPA-type apps are only justified if you check each box in the buzzword bingo card. One of the primary selling points of designing SPA or non-static lage, SPA-like WebApps is performance. Meaning, you are able to put together a highly performant web page if you do not require full page reloads each time anyone clicks on something, if you can easily implement optimistic logic in components, and if you can update only a subset of components when you receive a response from a request. I recommend discovering the concept of perceived performance and afterwards you read through common patterns and strategies to optimize perceived performance. After you do that, go through a though experiment where you start off with an old timey dynamic HTML/server-side rendered WebApp and consider the challenge of achieving the same type of improvements in user experience, or even doing the same tricks. You'll quickly arrive at the same conclusions at the whole world around you already arrived at. |
| |
| ▲ | donatj 4 days ago | parent | next [-] | | Explain what about Gmail is "highly interactive" because I'm genuinely not seeing it. You receive like an email a minute? There's a Web 1.0 form for sending emails. Where's this "high levels of interactivity"? It's a form and a list of emails that updates occasionally. It's literally basic web 2.0 junk from the early 2000s, the UI has barely changed since it launched. | | |
| ▲ | xnx 4 days ago | parent | next [-] | | Shortcut keys, auto-complete, custom-GUI elements for which no comparable standard element exists, drag and drop, image insertion/resizing, rich text formatting, auto-updates for new items, etc. It's possible to make a web 1.0 HTML email client but GMail is much much better. It's the difference between 1998 MapQuest and Google Maps. | | |
| ▲ | DanielHB 3 days ago | parent [-] | | There used to be a basic HTML version of gmail but it seems it just redirects you to normal gmail now. No one in their right mind who does a lot of emailing would use it compared to the normal one besides for ideological reasons. |
| |
| ▲ | motorest 4 days ago | parent | prev [-] | | > Explain what about Gmail is "highly interactive" because I'm genuinely not seeing it. That's perfectly fine. If you can't see it, you can't see it. You need to know what to look for to see it, though. If you're oblivious to web development then every page is just a page. > You receive like an email a minute? Irrelevant. The range of operations that Gmail supports and falls within the lazy classification of CRUD operations goed way beyond sending and receiving emails. For example, see gmail's support for tagging, email classification, multiple types of inboxes, etc. > It's literally basic web 2.0 junk from the early 2000s (...) Tell me you're completely clueless about web development and WebApps in general without actually saying it. Just keep in mind that you also have the option of not commenting on things you're oblivious about. | | |
| ▲ | Alejandro9R 4 days ago | parent | next [-] | | Yeah, he's completely clueless and has been commenting like he knows what he is talking about. Or is rage baiting on purpose. Sometimes its impressive the lengths people can go. Nonetheless, I've seen so many people on Hacker News beg for "simple websites" and that they are just "CRUD apps that don't need complexity" while completely dismissing what you've pointed out in the previous comment. Of course, there are webs which are developed with the worst practices and bloated to oblivion. But even the best websites with the greatest UI/UX and perceived performance will have at least some complexity to it to give that experience to the end user. UX and simplicity done right is really a craft that mixes creativity, human psychology and technical skill. | | |
| ▲ | skydhash 3 days ago | parent [-] | | I’ve seen the general public using those “improved” UI and UX and at best not giving a damn. At worst, they are very annoyed when things are hidden or jumping all over the place. A linear form with help messages is better than any gimmicky design one can think of. |
| |
| ▲ | ndriscoll 4 days ago | parent | prev | next [-] | | My memory is getting hazy, but wasn't Gmail originally just (something like) the simple HTML version, and it supported tags and classification from the beginning? Like I'm pretty sure I had filters to tag and skip inbox for newegg emails circa 2005 so I could have a separate "inbox" for them. Likewise for some mailing lists I was part of. | | |
| ▲ | Zanfa 4 days ago | parent [-] | | It was. And it was glorious. Fast and snappy, loaded instantly and felt responsive. Then they did the full SPA redesign… |
| |
| ▲ | robertlagrant 4 days ago | parent | prev [-] | | > Tell me you're completely clueless about web development and WebApps in general without actually saying it. Just keep in mind that you also have the option of not commenting on things you're oblivious about. Petty sniping is not welcome. |
|
| |
| ▲ | ksec 3 days ago | parent | prev | next [-] | | Is Hey a WebApp or CRUD app ( with added interactivity )? When people say CRUD App, I assume they mean web page + sprinkle of JavaScripts. | |
| ▲ | timw4mail 4 days ago | parent | prev [-] | | And yet 90+% of those SPA-apps have worse performance. | | |
| ▲ | rcxdude 3 days ago | parent | next [-] | | This. I fully get the in-theory argument that a thick SPA can make for a smoother experience, but that just makes it all the worse that all but the most exceptional SPAs are significantly worse in terms of responsiveness than a series of server-side rendered pages. (even gmail, which is pretty good they go, is laggy and can easy eat up 1GB of RAM) | |
| ▲ | tracker1 3 days ago | parent | prev [-] | | The fact that people will copy/pasta from stack exchange, or add in massive packages from npm that do things other packages in other areas already do doesn't mean it has to be that way. A dresser can be hand crafted from solid oak and built to last centuries, or it can be flat-pack barely better than cardboard with fake plastic oak veneer. You can make a fully functional SPA with less than 1mb of payload, or you can create the hot garbage that is Jack In The Box's menu website, that delivers 48mb of insanely bloated JS garbage. And I only harp on them because it's the single worst SPA example I've seen to date. For that matter, I think with some nice tooling HTMX can be a pretty great experience for most in-between usage. |
|
|
|
| ▲ | burnte 4 days ago | parent | prev | next [-] |
| I totally agree, maybe 1 in 100 web pages actually NEED any of the code they run. Mostly it's reinventing the wheel. Where a flat site with fixed HTML and pretty CSS would be fine, they add a splash page so they can show a logo, they'll break navigation and reimplement the browser inside the page with JS so you can't use the back button, they'll style everything on the fly when nothing is dynamic, etc. Nonsense. |
|
| ▲ | eadmund 4 days ago | parent | prev | next [-] |
| > 99.9% of applications I interact with are just a series of simple CRUD operations. The vast majority of web apps out there could be implemented as REST systems (in the real, Fielding, HATEOAS sense, not the JSON-over-HTTP sense). There are a few out there which need to be web apps, but those are relatively rare. |
| |
| ▲ | robertlagrant 4 days ago | parent [-] | | Only if you trust the client, presumably. | | |
| ▲ | ndriscoll 4 days ago | parent [-] | | I don't see how that's related. The HATEOAS idea was that you send the client the relevant data and next set of possible actions with each response (e.g. a web page with forms for possible things they can do). If they try to perform in invalid action, you still just reject on the server. The client doesn't tell the server what it can do. The point is you need the logic on the server since you can't trust the client, but you can make the client "dumb" with just super generic ability to show data and submit forms, and then you don't need to write your application logic a second time in the client. The server sends it instructions for the generic renderer to perform. |
|
|
|
| ▲ | _fat_santa 4 days ago | parent | prev | next [-] |
| Easy. It's just about any react/angular/vue based site written these days. Take GMail, Jira, your health insurance portal, TurboTax, and a littany of other sites. Practically every one of these uses components, internal state, and design systems to make the site highly interactive, just about every "web app" falls into this category. |
| |
| ▲ | donatj 4 days ago | parent | next [-] | | All of those examples boil down to very simple forms, web 1.0 style forms. CRUD. Fill out an email form, hit submit. Fill out my tax form, hit submit. Fill out a ticket form, hit submit. It's prettied up CRUD, but it's CRUD. There's no high levels of interactivity, nor any sort of need for client side state in any of them. | | |
| ▲ | ndriscoll 4 days ago | parent | next [-] | | The tax one is especially funny: those "applications" just walk through the same information you'd write on the paper forms! I do free filing every year and "paper forms on the screen with a 'calculate' button for some fields" is the literal UI. | |
| ▲ | ozim 4 days ago | parent | prev [-] | | Wow I see you never had to edit more than 20 things on a list in a Web 1.0 submit form style. Like go over 20 jira tickets to update the names or adjust different properties on different ticket. | | |
| ▲ | mdavidn 4 days ago | parent | next [-] | | Jira itself does bulk editing with traditional web forms. I'm thinking of that "wizard" flow: The bulk edit operation itself is the "HTTP resource" the user builds up and submits. | | |
| ▲ | ozim 4 days ago | parent [-] | | Bulk editing yes. Now read again "different properties on different issues". Like you are not going to bulk edit task requirements or set title for 20 tasks to the same thing. |
| |
| ▲ | timw4mail 4 days ago | parent | prev | next [-] | | Jira is a horrible tool I only use because I am forced to. | |
| ▲ | skydhash 4 days ago | parent | prev [-] | | The old way was ctrl-clicking to open the form in a new tab/windows. And when AJAX, it was easy to use jQuery to make update request. |
|
| |
| ▲ | mdavidn 4 days ago | parent | prev [-] | | All of your examples could've been built using traditional HTML web forms. Better examples would be things like Google Maps, Lucidchart, Google Docs, Photoshop, Zoom, any 3D rendering. These applications can only work with components and internal state. 99% of web "apps" don't need the complexity. |
|
|
| ▲ | oneeyedpigeon 4 days ago | parent | prev | next [-] |
| I feel exactly the same way as you, and I get flashbacks to every time someone talks about the new framework on the block that serves to fix a problem that 0.1% have, while making things worse for the other 99.9%. |
| |
| ▲ | alternatex 4 days ago | parent [-] | | Even though your first instinct might be to immediately pull away when people talk about SPAs, remember that this discussion is about how using a SPA feels vs a server-rendered app that refreshes on every user action. It's not a discussion about the technologies used to build it. There are plenty of JS frameworks and some have a more ergonomic dev experience than others, but what is an undeniable fact is that most users prefer SPAs for highly interactive apps. There is a ton of research into user retention that proves this. Google aren't building SPAs because they like Angular. |
|
|
| ▲ | pyrale 4 days ago | parent | prev | next [-] |
| It really depends on what you call CRUD, but for instance, in the past, I've had frontends hiding the crud behind more "friendly" gestures. For instance, a write such as rescheduling a sale could be done with drag&drop, reads would feed a local store of events/sales that could be browsed either as a workweek panel of which sales are happening, or as a monthly calendar aggregating sales and showing which day is a "hot" day and which day is quiet and needs more blockbusters to drive sales. Add in search features, graphs of forecasted sales and a news feed on the sales a specific user was managing. It's not that complex or fancy compared to what can be found in b2c, but it's not just a crud where users are directly tasked to update values in fields either. And yes, it could have been a crud, but I believe our users would have been worse off. |
| |
| ▲ | skydhash 3 days ago | parent [-] | | You can have interactivity within a single form, whithout having a whole app code humming in the background. And with the drag and drop example, I often see designers missing the obvious accessibility issue where the user can’t use a mouse. | | |
| ▲ | pyrale 3 days ago | parent [-] | | So you’d need to select a sale, enter a change form, select a new date and validate the change. As opposed to moving the item on your planning. Accessibility issue is a good point, but the accessible way doesn’t need to be the only way. | | |
| ▲ | skydhash 3 days ago | parent [-] | | > So you’d need to select a sale, enter a change form, select a new date and validate the change. As opposed to moving the item on your planning. That's pre-javascript workflow. You can have your DnD without making your app an SPA. And why not have the DnD and the more complete change form? | | |
| ▲ | pyrale 3 days ago | parent [-] | | You're mixing two things here: having an app with more than just CRUD interactions, and making that app an SPA. My point was giving an example of an app that's a bit more featured than just some forms in a CRUD interface, not that you can only do that with a SPA. > And why not have the DnD and the more complete change form? It was, in fact, what we did. |
|
|
|
|
|
| ▲ | timw4mail 4 days ago | parent | prev | next [-] |
| It's all the buzzwords to justify the overcomplexity of web frontends. |
|
| ▲ | mickael-kerjean 4 days ago | parent | prev | next [-] |
| I work on exactly this kind of app, and it’s open source: https://github.com/mickael-kerjean/filestash. It’s a Dropbox-like file manager that instead of owning your data integrates with your existing storage, authentication, and authorization systems. Under the hood, there’s a lot going on, very recently I added plugins to handle various kind of file types that are not typically handled by browser, we're talking > 100 kind of file types handled entirely in the browser for niches like astronomy, data engineering, GIS, 3D models, dev and even embroidery patterns |
| |
|
| ▲ | austin-cheney 4 days ago | parent | prev [-] |
| > I haven't seen anything like that. 99.9% of applications I interact with are just a series of simple CRUD operations. The painful reality is that this is true, but only at work. There is so much that you use written in web technologies that are no CRUD. Some of that is Electron apps like VS Code and some of it is applications packaged in docker containers. Almost all of this non-work and non-CRUD stuff is open source. If you aren't writing code outside of work, where its only CRUD, your perspective of the universe is about 2mm wide. That is where the Dunning-Kruger starts to set in and why all this shit gets reinvented every couple of years. Its easy to think that: 1) you are awesome and 2) the world is painful when your perspective of the universe is only 2mm wide. For everybody else, these things that most developers complain about really aren't painful enough to warrant any call to action because there are other things that bring substantially greater pain. |