Ion Prodan @iprodan.dev · 25/08/2026`sibling-index()`, and `sibling-count()` are Baseline, newly available since August 2026. 🤘 Before this, staggered animations or dynamic layouts meant writing a bunch of `:nth-child()` rules. Now you can do it cleanly ⤵️ 020
Ion Prodan @iprodan.dev · 24/08/2026CSS finally lets you animate elements when they first appear. 👇 `@\starting-style` is Baseline, newly available since August 2024. 🤟 90% Global usage! Before this, transitions didn’t run on an element’s first style update. You needed JavaScript hacks. 011
Ion Prodan @iprodan.dev · 22/08/2026I’m growing a community on Reddit, I think I’m doing pretty well! iff you’re like me, sharing code snippets, come join me in r/codesnip 💪 There’s an audience you don’t want to miss. 030
Ion Prodan @iprodan.dev · 20/08/2026Do you all remember the CSS `light-dark()` function? It just got an upgrade! It now accepts images too ⤵️ No more media queries just to swap background images. Still limited availability (Chrome 150+, Firefox 150+, Safari not yet). 091
Ion Prodan @iprodan.dev · 19/08/2026You can finally position tooltips, dropdowns, and menus relative to another element... in pure CSS. It became newly available in January 2026 when Firefox 147 completed the set. Oh man, I'm so happy about this 🤟 052
Ion Prodan @iprodan.dev · 18/08/2026I created a small interactive demo showcasing `contrast-color()`. Play with it here 👉🏻 iprodan.dev/l/contrast-c... 011
Ion Prodan @iprodan.dev · 17/08/2026#1. The web just got a little more intelligent. 🤟 Meet `contrast-color()`: You give it any color; it returns either `black` or `white`, whichever provides better contrast. ⤵️ Shipped in Chrome 147, Safari 26, Firefox 146, and Edge 147 (April 2026). Pure CSS that guarantees readable text 💪🏼 1262
Ion Prodan @iprodan.dev · 21/04/2026`image-set` should be the first choice when dealing with background images. Zero JS. Pure CSS! 💪 Widely available since September 2023 010
Ion Prodan @iprodan.dev · 09/04/2026I created a free tool that not only converts an SVG to an image, but also scales it up to 2K. 👇 Paste, or upload or edit, as you want! You actually have a (small) code editor there. 😎 Don't miss it 👉🏻 snipsco.com/tools/svg-co... 010
Ion Prodan @iprodan.dev · 05/03/2026This is the easiest way to switch between Dark/Light and System mode. 👇 Simply add an element with the selected `data-theme` mode, or remove it from the DOM to switch to System mode. It might not be perfect, but it's the fastest and simplest method! 🚀 000
Ion Prodan @iprodan.dev · 04/03/2026Sometimes, this is still the most reliable CSS debugger we have 💪 110
Ion Prodan @iprodan.dev · 05/11/2025New encapsulation in Angular 21, and nobody's talking about it! 😶 Handy for email builders, when you don't want any external styles to affect the builder elements, such as text and images, it should look the same as in an email service. Still in WIP, btw. 141
Ion Prodan @iprodan.dev · 04/11/2025You don't know what this is about💡! A long, long time ago, I wanted to 'emulate' the Angular router, but only using CDK Portals and also supporting different outlets, lazy loading, and smooth transitions. Wait for it, you'll like it! 🤟 030
Ion Prodan @iprodan.dev · 28/10/2025In Angular 21, we will probably have a structural directive `*routerOutletPlaceholder` for the Router placeholder. It hasn't been merged yet. The previous idea was to add support for `<ng-container routerOutlet />`, but it was reverted. What do you think about the placeholder? 050
Ion Prodan @iprodan.dev · 13/10/2025Speaking of the `URL` class, let's see if we understand the difference from the old way (see previous tweet). So, what's the output of this? 020
Ion Prodan @iprodan.dev · 08/10/2025Do you know you MUST provide a valid reply email address to stay compliant? Even your no-reply address must be able to receive emails and handle "unsubscribe' requests or anything else the user wants. It's no longer enough to just include a link! 010
Ion Prodan @iprodan.dev · 17/06/2025I agree, but I use exhaustMap more often when handling the requests. And I use `tapResponse` to handle error, next, and finalize. 120
Ion Prodan @iprodan.dev · 16/06/2025This is mostly all I need from rxjs! 😀 with a few exceptions! What's your most used rxjs operators? 211
Ion Prodan @iprodan.dev · 12/06/2025I remember talking about CDK Portals a long time ago! It’s a feature that still exists and is waiting to be used more. I had an idea back then to 'emulate' the Angular router, but with just portals 🙂. An experiment that would teach us, and you, in-depth how to use them. 010
Ion Prodan @iprodan.dev · 07/06/2025Angular's `canMatch` guard is great! It allows different pages on the same path. For example, authenticated users see the dash page, while others see the auth page. It matches children, but it sends 2 requests if `canMatch` returns false from a child path. I like this method. 020
Ion Prodan @iprodan.dev · 06/06/2025Not the best, but still good! What company details would you like to see next? I can show them to you for free today! 😀 All data should be publicly available. 020
Ion Prodan @iprodan.dev · 05/06/2025Help, please 🙏 Designers, how can I display all this data? Should I use a table or simple blocks? It's a lot of data to show! 000
Ion Prodan @iprodan.dev · 05/06/2025What if you could get all the company contact details by simply pressing a button? Coming soon to quiky.email 020
Ion Prodan @iprodan.dev · 23/05/2025It's my first time using #Angular's `define` option property, and I encountered an issue! Who knows what the issue is? 010
Ion Prodan @iprodan.dev · 15/05/2025The modern way of collecting info 🚀 Create an email agent, that collects all necessary details (it can ask, reply and so on) and add the user to a list. No more confirmation emails and form fields 👍 You are welcome! 010
Ion Prodan @iprodan.dev · 14/05/2025Hey Angular devs, what's the purpose of the `percent` pipe if you can show the percentages like this? Is the percentage different in other languages? I still use the `percent` pipe, though, but I see this and I think, why not? 🤔 #Angular 210
Ion Prodan @iprodan.dev · 24/04/2025I have collected several email marketing statistics on one page. You can view it here: aireply.email/stats, with links to sources. What other statistics should I include? 010
Ion Prodan @iprodan.dev · 07/04/2025That brings back good memories! ✨ Should I update my website like this or not? 010
Ion Prodan @iprodan.dev · 21/03/2025I did it! I set up my old monitor (the first one from the left) just for the AI agent, running in YOLO mode! Meanwhile, I am working on two other projects on the remaining monitors! Let's see how this goes! Share your workspace and how it looks! 130
Ion Prodan @iprodan.dev · 11/03/2025I used the @cursor.com.web.brid.gy IDE for the past 4 days, making over 250 fast requests. That's quite a lot for just 4 days! I like it! I completed 2 small projects - 80% just prompting. @github.com copilot feels extremely slow in comparison! One dilemma, though: VS Code isn't for me! 🫤 010
Ion Prodan @iprodan.dev · 11/03/2025Yo, fam! Ain’t this logo, like, TOTALLY SLAYIN’ compared to TikTok’s basic vibes? Hit that like, let’s get those VIEWS poppin’! 🔥💅 -- text by grok 😀 100
Ion Prodan @iprodan.dev · 01/03/2025LLMs are part of our daily work; you cannot deny that! A file explaining what your website is about for any #LLM is becoming standard, and an `llms.txt` file would improve your app's clarity for AI. That’s why I created an llms.txt generator! It's still a bit buggy, but take a look! llmtxt.dev 010
Ion Prodan @iprodan.dev · 26/02/2025Hey, dear devs! Does it matter if I include `type` here? In both cases, it works well, but what's the difference? #typescript 481
Ion Prodan @iprodan.dev · 25/02/2025I'm working now with Angular Material, and I have to say — this is so easy! - Light & Dark mode? Sure, one line! - Different themes? Sure, two lines! - Rewrites? Sure, one property! Thx #Angular team! 👏🏻 0132
Ion Prodan @iprodan.dev · 22/02/2025What do you do when you’re not coding? It’s time for a little bit of snow ⛄️ 030
Ion Prodan @iprodan.dev · 21/02/2025‼️ A rule I learned while working (a lot) with #Angular CDK Portals! Always ‘portal’ a component, not just a part, to take advantage of component lifecycle hooks and free memory when it’s destroyed. Otherwise, a portion of your parent component will remain in memory but hidden. 050
Ion Prodan @iprodan.dev · 20/02/2025They say using template-driven forms is easier! 😀 But seriously, how do you update the property if the property value is an array? Sadly, there’s no `ngModelArray`! 020
Ion Prodan @iprodan.dev · 17/02/2025Who's running the new #Angular schematics one after another without ensuring everything is fine? That's pretty risky for a client project, but for your own, go ahead and experiment! 051
Ion Prodan @iprodan.dev · 14/02/2025🤖 I asked LLM to build a Landing Page, and this is what it came up with. What do you think? Is it clear what I'm trying to sell? What would you change? All info is just dummy data! 150
Ion Prodan @iprodan.dev · 12/02/2025I didn't think about this until now, but we can inject `DestroyRef` and add `onDestroy` immediately! Is this a bad approach or a good one? 021
Ion Prodan @iprodan.dev · 11/02/2025That's something that can go wrong if you're not careful! This effect will never run. How do you skip the first run on effects? 010
Ion Prodan @iprodan.dev · 10/02/2025I'm working with template-driven forms, and I see `setTimeout` is still required to patch the value. Is there a way to avoid it? What are the other options? #Angular 160
Ion Prodan @iprodan.dev · 15/01/2025Does this query selector make sense? I'm very confused right now! 240