<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Md Abdullah on Medium]]></title>
        <description><![CDATA[Stories by Md Abdullah on Medium]]></description>
        <link>https://medium.com/@mdabdullah.dev?source=rss-996f3c186e17------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*dOlYfGyjbQkVuXHcxQqT4A.jpeg</url>
            <title>Stories by Md Abdullah on Medium</title>
            <link>https://medium.com/@mdabdullah.dev?source=rss-996f3c186e17------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 05 Nov 2026 11:26:52 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@mdabdullah.dev/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[React Re-renders: The Simple Fix Most Small Apps Miss]]></title>
            <link>https://medium.com/@mdabdullah.dev/react-re-renders-the-simple-fix-most-small-apps-miss-39ce4595ea55?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/39ce4595ea55</guid>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Wed, 04 Nov 2026 15:00:15 GMT</pubDate>
            <atom:updated>2026-11-04T15:00:15.507Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CeBizMAVJ4eWueWn8bXvlQ.png" /></figure><p>Most React apps I look at are not slow because of bad architecture. They are slow because one small thing keeps re-rendering when it should not, and nobody notices until the whole page starts to feel heavy.</p><p>The pattern is always the same. A form or a dashboard that felt fast at launch starts to lag as features get added. Every keystroke has a small delay. Every click feels a beat behind. The code looks fine, the components look fine, but something is re-rendering far more than it needs to.</p><h3>The problem: everything re-renders, all the time</h3><p>Here is how it usually happens. There is a parent component holding state: a list, a filter, a search box. Every child below it receives data as props. When the state changes, React re-renders the parent, and by default it re-renders every child too, even the ones whose props did not change at all.</p><p>In a small app you never feel it. A few extra components re-rendering costs nothing. But the app grows, the list gets longer, and a tree that once had a handful of nodes now has hundreds. The same state change that used to be instant now re-renders the whole tree, and the page starts to drag.</p><p>The tricky part: React DevTools will not wave a flag at you. There is no error, no warning. The app just quietly does far more work than it needs to on every interaction.</p><h3>The simple fix: keep state close to where it is used</h3><p>The fix I reach for first is not memo, not useCallback, not a state library. It is moving the state down.</p><p>Most of the time, the state lives too high. A search input at the top of the page controls a list at the bottom, so the state sits in the shared parent and every sibling re-renders with every keystroke. But the only component that actually needs the search text on every keystroke is the input itself. The list only needs the final value, or better, the filtered result.</p><p>So I split it. The input keeps its own state locally and updates instantly. It tells the parent about the change only when it matters, on submit or debounced, and the parent re-renders the list once instead of on every keystroke. Same feature, a fraction of the renders.</p><p>The general rule: state should live in the lowest component that needs to react to it. Lift state up only when two siblings truly need the same value at the same time. Everything else is a re-render tax you are paying for no reason.</p><h3>When memo is actually the answer</h3><p>There is one case where moving state is not enough: a heavy child that receives stable props but re-renders because its parent does. A chart, a big table, an editor. For those, memo around the child plus a stable reference for the props is the right tool. But it is the second tool, not the first. Wrapping everything in memo from the start adds complexity without finding the real problem.</p><h3>The pattern</h3><p>Performance problems in small React apps are almost never about React being slow. They are about state living one or two levels too high, quietly multiplying work on every interaction. Move the state down first, measure, and only then reach for the heavier tools. The apps that stay fast are the ones where state lives close to home.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=39ce4595ea55" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Shopify Canvas Is Here: What to Know Before You Let AI Edit Your Theme]]></title>
            <link>https://medium.com/@mdabdullah.dev/shopify-canvas-is-here-what-to-know-before-you-let-ai-edit-your-theme-9c7a4f3f2260?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/9c7a4f3f2260</guid>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[shopify]]></category>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[online-business]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Tue, 03 Nov 2026 15:51:01 GMT</pubDate>
            <atom:updated>2026-11-03T15:51:01.828Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5wqUYtaKR_dORIi4G1UHLQ.png" /></figure><p>Shopify launched Canvas on October 1, 2026, and it changes how theme edits happen. You can now describe a change in plain English inside the admin, and Sidekick edits your theme code for you. No Liquid knowledge needed, no developer on call for every small tweak.</p><p>I work with Shopify themes every week, so here is my honest take on what this means for store owners.</p><h3>What it actually does</h3><p>You type something like “make the announcement bar sticky on mobile” and Sidekick finds the right files and makes the edit. For small, well-defined changes, this is genuinely useful. It lowers the cost of the tiny tweaks that used to sit in a backlog for weeks.</p><p>Right now it works with Shopify-built themes and custom themes. App blocks, app embeds, and translations are not supported yet, so if your store depends on those, Canvas cannot touch that part.</p><h3>The catch nobody mentions first</h3><p>A theme edited through Canvas permanently stops receiving theme updates. That is the big one. Theme updates carry security fixes and new features, and once Sidekick has edited your theme, that update path is closed.</p><p>Two more things worth knowing. A Sidekick change clears your undo history, so you cannot step back through earlier edits the way you normally would. And the edited theme files cannot be downloaded, which makes it harder to hand the theme to a developer later for bigger work.</p><h3>How I would use it</h3><p>Duplicate the theme first, always. Run Canvas edits on the copy, review the result, and only publish when you are happy. Treat it like a fast draft tool, not a final pair of hands.</p><p>For small cosmetic changes on a simple store, Canvas is a real time saver. For anything structural, checkout-adjacent, or performance-sensitive, I would still want a developer reviewing the diff. AI writes plausible code fast, but plausible is not the same as correct, and a theme is the thing your customers actually touch.</p><h3>The pattern</h3><p>Every wave of “no code needed” tooling follows the same arc. It removes the easy work first, which is great, and it quietly raises the value of the hard work that remains. Store owners who understand what Canvas can and cannot do will move faster than everyone else. The ones who let it edit blindly will learn about the update tradeoff the expensive way.</p><p>Duplicate first, review always, and keep a developer in the loop for the changes that matter.</p><h3><strong>About the author</strong></h3><p>I build stores and web apps for brands and businesses, from custom Shopify builds to ongoing maintenance and support. I also work as a silent white-label development partner for small agencies, always starting with a small trial project.</p><p>I am Md Abdullah, a Full-Stack Developer (React, Next.js, Node) and Shopify Specialist based in Dhaka, working remotely with clients worldwide.</p><p><strong>Contact : </strong><a href="https://abdullah.itservicesbd.com/">Website </a>, <a href="https://www.linkedin.com/in/mdabdullah-dev">Linkedin</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9c7a4f3f2260" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Telegram Mini Apps in 2026, what actually sells, and what does not]]></title>
            <link>https://medium.com/@mdabdullah.dev/telegram-mini-apps-in-2026-what-actually-sells-and-what-does-not-c42851c81e08?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/c42851c81e08</guid>
            <category><![CDATA[ton]]></category>
            <category><![CDATA[telegram-mini-app]]></category>
            <category><![CDATA[business-strategy]]></category>
            <category><![CDATA[telegram]]></category>
            <category><![CDATA[web3]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Mon, 02 Nov 2026 14:43:21 GMT</pubDate>
            <atom:updated>2026-11-02T14:43:21.289Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*83h608pBxedSyA_S9nHKXA.png" /></figure><p>When I tell people I build Telegram Mini Apps, the first question is always the same: what kind of app actually sells?</p><p>Most builders start from the wrong end. They pick the app first, a store, a game, a token dashboard, then go looking for someone who wants it. I have spent the last few weeks talking to sellers and watching what founders actually pay for, and the pattern is clear. The app is never the hard part. Finding one real pain is.</p><h3>What actually sells: one job, inside Telegram, this week</h3><p>The sellers I talk to run their whole business in DMs. Orders come as chat messages. Payments get confirmed by matching screenshots. The same “is this in stock?” question gets asked again and again. When an order goes missing, nobody can say whether it was ever real.</p><p>What sells to these sellers is small and boring: an order form inside Telegram, with the item code, the customer details, and the payment status in one place, so orders stop living in the chat thread. A catalog where the stock count is real. A way to see who ordered and who paid without scrolling through a week of messages.</p><p>Nobody buys “a platform”. They buy the end of one daily headache. If your Mini App removes one concrete pain a seller feels every day, it sells. If it needs the seller to change how they work first, it does not.</p><h3>What does not sell: the big build first</h3><p>The opposite pattern fails every time I see it. A full store with categories, search, and recommendations, built before a single seller takes one order through it. A token app with no users waiting on the other side. An admin dashboard built before the basic ordering even works.</p><p>Weeks go into the build, and then the hard part turns out to be finding one person who cares. The code was never the risk. The risk was building without a buyer.</p><p>I keep my own scope honest here too. I build the Mini App frontend and the wallet connection, I do not do smart contracts. Saying that up front has saved me from more bad projects than any portfolio ever did.</p><h3>The one fix: five questions before any code</h3><p>Before I write a line of code for a Mini App, I ask the seller five questions:</p><ol><li>How do orders reach you right now, DM, a form, or a site?</li><li>How long does it take to confirm a payment?</li><li>Do you track renewal or restock dates anywhere, and do any get missed?</li><li>How much effort is it to see who ordered and who paid?</li><li>If the shop, the orders, and the payments all lived inside Telegram, would that be worth a small monthly fee to you?</li></ol><p>If two or three answers describe real daily pain, there is a project. If the answers are vague, there is no project yet, and no amount of building will create one.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c42851c81e08" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why Your Shopify Store Feels Slow on Mobile, Even When It Looks Fine on Desktop]]></title>
            <link>https://medium.com/@mdabdullah.dev/why-your-shopify-store-feels-slow-on-mobile-even-when-it-looks-fine-on-desktop-87d9f43fc553?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/87d9f43fc553</guid>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[shopify]]></category>
            <category><![CDATA[web-optimization]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[mobile-optimization]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Wed, 28 Oct 2026 12:14:27 GMT</pubDate>
            <atom:updated>2026-10-28T12:14:27.971Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hOO_5qzW2C64a3hCVBiPjA.png" /></figure><p>Most Shopify store owners check their store on a desktop first. It looks good, it loads fast enough, and everything seems ready. Then a customer opens the same store on a phone, on a normal mobile connection, and the experience feels completely different.</p><p>That gap is where sales are lost. A visitor does not complain about load time. They just leave, or they hesitate at the exact moment they were ready to buy.</p><p>This is not about buying a faster theme. It is about finding what is actually slowing the store down, and fixing that first.</p><h3>Start with the mobile product page, not the homepage</h3><p>The homepage gets the most attention, but the product page is where money changes hands. If you want to check one page properly, check a product page on a phone.</p><p>Open it and watch what happens in order. Does the product image load first, or does a banner, a popup, and a review widget load first? Does the price and the buy button appear early, or do you have to wait for everything else to finish?</p><h3>The usual causes I see</h3><h3>1. Apps that are still running after you stopped using them</h3><p>Shopify apps are easy to install and easy to forget. Many of them keep loading code on every page, even if you no longer use the feature, or even if you removed the app but its code stayed in the theme.</p><p>Go through your installed apps and ask a simple question for each one: is this app earning its place on the product page? If the answer is no, remove it properly, and check the theme code after removal. An app that is not visible can still slow a page down.</p><h3>2. Images that are bigger than the phone needs</h3><p>A product photo does not need to be a huge file to look good on a phone. When images are uploaded at full size and then shown in a small space, the phone still has to download the full file.</p><p>Use images that are sized for the space they will fill, and let Shopify serve the right size for the device. This is a small fix, but on a page with several product photos, it adds up fast.</p><h3>3. Theme code that does too much work</h3><p>In Liquid, a common problem is a loop that loads more than it needs to. For example, a section that loops through a whole collection just to show a few related products, or a snippet that loads on every page even though it is only needed on one page.</p><p>The fix is not always to rewrite the theme. Often it is to move code so it only runs where it is needed, and to avoid loading the same data twice on the same page.</p><h3>4. Third-party scripts loading before the buy button</h3><p>Review widgets, chat tools, tracking scripts, and marketing tools all have a place, but they do not all need to load before a customer can buy. When too many of them load at the top of the page, the buy button and the price can be delayed, even if the page itself looks complete.</p><p>A good rule is simple: what helps a customer decide and buy should load first. Everything else can wait a moment.</p><h3>How I check a store</h3><p>When I look at a Shopify store for speed, I do it in this order:</p><ol><li>Open the product page on a phone, not just on a desktop.</li><li>Note what loads first, and what delays the price and the buy button.</li><li>List the apps and scripts on that page, and mark the ones that are not needed there.</li><li>Check image sizes and how they are served on mobile.</li><li>Look at the theme code for loops and sections that run on every page for no reason.</li><li>Fix the biggest delay first, then measure again.</li></ol><p>The goal is not a perfect score on a speed test. The goal is a page that feels fast to a real customer, on a real phone, at the moment they are deciding to buy.</p><h3>What to fix first</h3><p>If you only have time for one thing this week, do this: open your best-selling product page on your phone, and remove or delay one thing that is not helping a customer buy.</p><p>That could be an unused app, a popup that appears too early, or a script that loads on every page. One clean fix, measured before and after, is better than ten small changes you cannot track.</p><p>Speed work is not about making a store look fast in a test. It is about removing friction from the exact moment a visitor becomes a customer.</p><p><strong>About the author</strong></p><p>I build stores and web apps for brands and businesses, from custom Shopify builds to ongoing maintenance and support. I also work as a silent white-label development partner for small agencies, always starting with a small trial project.</p><p>I am Md Abdullah, a Full-Stack Developer (React, Next.js, Node) and Shopify Specialist based in Dhaka, working remotely with clients worldwide.</p><p><strong>Contact : </strong><a href="https://abdullah.itservicesbd.com">Website </a>, <a href="https://www.linkedin.com/in/mdabdullah-dev">Linkedin</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=87d9f43fc553" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why Is My Shopify Store Slow? The Causes I See Most Often, and What To Do About Them]]></title>
            <link>https://medium.com/@mdabdullah.dev/why-is-my-shopify-store-slow-the-causes-i-see-most-often-and-what-to-do-about-them-8b200672fb24?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/8b200672fb24</guid>
            <category><![CDATA[small-business]]></category>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[web-performance]]></category>
            <category><![CDATA[online-store]]></category>
            <category><![CDATA[shopify]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Thu, 22 Oct 2026 16:05:14 GMT</pubDate>
            <atom:updated>2026-11-02T15:05:04.342Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*krOgmsJuQRdxZS33NO_JrQ.png" /></figure><p>If your Shopify store feels slow, you are probably not imagining it. Store owners usually notice it in small moments first. A product page takes a beat too long to appear. The homepage jumps around while it loads. A customer on a phone has to wait before they can tap anything. None of these moments look dramatic on their own, but together they shape how trustworthy and easy your store feels.</p><p>I am a Shopify developer, and slow stores are one of the most common reasons owners come to me. The good news is that a slow store is rarely a mystery, and it rarely needs a full rebuild. Most of the time it is a handful of ordinary problems that built up quietly over months. This article walks through how to tell whether your store has a real speed problem, the causes I see most often, and what you can ask a developer to check.</p><h4>What slowness actually costs you</h4><p>Let me be careful here, because this topic attracts exaggerated claims. I will not give you a dramatic statistic, because honest numbers depend on your store and your customers. What I can say is simpler than any statistic.</p><p>People judge a store quickly. When pages hesitate, visitors get impatient and some of them leave before they ever see your products. When a page shifts around while someone is trying to read or tap, the store feels careless, even if your products and service are excellent. And most of your visitors are probably on phones, on connections far worse than your home wifi. A store that feels fine on your laptop can feel sluggish on a mid range phone on mobile data.</p><p>Speed is also one of the few parts of the shopping experience you fully control. You cannot control whether a visitor likes your prices or your style. can control whether your store respects their time.</p><h4>How to tell if your store really has a problem</h4><p>Before paying anyone to fix anything, do these simple checks yourself.</p><p>First, open your store on your own phone with wifi turned off, and browse it the way a customer would. Start at the homepage, open a collection, open a product, add it to the cart. Notice where you wait. That experience, not a score on a report, is what your customers get.</p><p>Second, look at the speed information Shopify itself gives you. In your admin, Shopify reports on your store speed and compares it with similar stores. Treat any score as a rough signal rather than a grade, but if Shopify says you are slower than comparable stores, pay attention.</p><p>Third, watch for specific symptoms while pages load:</p><ul><li>Text appears late, or shows in a different style first and then changes.</li><li>Images pop in one by one and push the text down the page as they arrive.</li><li>Buttons and menus do not respond for a few seconds after the page looks loaded.</li><li>The homepage feels fine but product pages or collection pages crawl.</li></ul><p>Each symptom points at a different cause, which is why a good fix starts with looking, not with installing something.</p><h4>The causes I see most often</h4><h4>1. Apps you installed, tried, and forgot</h4><p>This is the single most common cause. Almost every app that adds a popup, a reviews badge, a chat bubble, or a countdown timer needs to load its own code on your pages. Many load that code on every page of the store, including pages where the feature never appears. Install and remove apps over a year or two and the weight adds up. Some apps even leave pieces of their code behind in your theme after you delete them.</p><p>None of this means apps are bad. It means your store slowly collects passengers, and every so often someone needs to check who is actually still on board.</p><h4>2. Images that are far bigger than they need to be</h4><p>Product photography matters, and big beautiful images sell. The problem is not large images, it is sending a huge image file to a phone that will only display it in a small space on the screen. The visitor downloads the whole file, and on a slow connection that download is the wait they feel.</p><p>This often happens innocently. A supplier sends high resolution photos, someone uploads them directly, and the store has been serving those full size files ever since. A well set up theme asks Shopify for a properly sized version of each image instead, but not every theme does this well.</p><h4>3. Everything on the page trying to load at once</h4><p>A long homepage or product page might contain a hero image, a collection grid, a lookbook, testimonials, a gallery, and a video. If the browser tries to fetch all of it before showing anything, the visitor waits for content they may never scroll to. Pages should load what is on screen first and bring in the rest as the visitor scrolls. When that is set up wrong, the first impression suffers most.</p><h4>4. Fonts holding the page hostage</h4><p>Brand fonts are part of your identity, but a font file can delay your text from appearing at all. If you have ever opened a page and stared at a blank area where the headline should be, then seen the text flash in a moment later, you have met this problem. It is fixable, and it does not mean giving up your brand font. It means loading the font so people can read your page while the font arrives.</p><h4>5. A theme carrying years of small edits</h4><p>Stores evolve. A developer adds a feature here, a freelancer patches something there, a tracking script gets pasted in for a campaign that ended long ago. Together these edits leave a theme doing more work than it needs to, sometimes loading the same kind of script twice, or running code for features the store no longer uses. This is the least visible cause, and the one that most needs a careful pair of eyes rather than a quick fix.</p><h4>What to ask a developer to check</h4><p>You do not need to understand the technical details to get a good outcome. You need to ask for the right work and expect a careful process. Here is the list I work through myself:</p><ol><li>Audit every app and every script loading on the store. Remove what is unused, including leftover code from apps that were deleted.</li><li>Check image sizes across the homepage, collections, and product pages, and make sure the theme requests sensibly sized images for phones and esktops.<br>3. Make sure content below the first screen loads as the visitor scrolls, while the main image at the top loads right away.<br>4. Check how the brand fonts load, so text is readable immediately instead of appearing late.<br>5. Review the theme for old, duplicated, or unnecessary code, and tidy it cautiously.</li></ol><p>Just as important is how the work is done. Insist on three things. The work should happen on a duplicate of your theme first, never directly on the live store. Changes should be made one at a time and tested on the pages that make you money: product pages, the cart, and checkout. And you should get a short plain language summary of what was changed, so the next person who works on your store is not guessing.</p><p>Be cautious with anyone who leads with a promised score or a promised jump in sales. Honest speed work sounds less exciting. It sounds like an audit, a list of specific fixes, and careful testing. That is what actually helps.</p><h4>A note on starting clean</h4><p>Fixing an existing store is normal work, and most stores do not need to start over. But this is also why I care about building cleanly from the beginning when I build a store from scratch, as I did for Haya by Amina, a modest fashion brand on Shopify. A tidy theme is much easier to keep fast as the store grows. The client, Brian, has told me he is happy with the store and the ongoing support, and part of that support is exactly this kind of housekeeping.</p><p>Whether your store is new or years old, the principle is the same. Speed is not a one time project. It is maintenance, like keeping your shelves tidy, and a store that gets a little attention a few times a year rarely turns into a slow store at all.</p><p>If your store feels slow, start with the phone test. Then get an honest audit before you buy anything or rebuild anything. Most stores are a handful of fixes away from feeling fast again.</p><p><strong>About the author</strong></p><p>I build stores and web apps for brands and businesses, from custom Shopify builds to ongoing maintenance and support. I also work as a silent white-label development partner for small agencies, always starting with a small trial project.</p><p>I am Md Abdullah, a Full-Stack Developer (React, Next.js, Node) and Shopify Specialist based in Dhaka, working remotely with clients worldwide.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8b200672fb24" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mastering the Telegram Mini App (TMA) UX: 3 Critical Challenges Every Developer Faces]]></title>
            <link>https://medium.com/@mdabdullah.dev/mastering-the-telegram-mini-app-tma-ux-3-critical-challenges-every-developer-faces-2089eb022072?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/2089eb022072</guid>
            <category><![CDATA[telegram-mini-app]]></category>
            <category><![CDATA[telegram]]></category>
            <category><![CDATA[ton]]></category>
            <category><![CDATA[ui-ux]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Sun, 01 Feb 2026 05:47:58 GMT</pubDate>
            <atom:updated>2026-02-01T05:47:58.771Z</atom:updated>
            <content:encoded><![CDATA[<p>How to make your React app feel “Native” inside the Telegram ecosystem.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1021/1*XO88rluov_5JMoN4vPtZfg.png" /></figure><h3><strong>Introduction</strong></h3><p>We are witnessing a gold rush in the Telegram Mini App (TMA) ecosystem. Developers are rushing to port their React websites into bots.<br>But there is a problem.<br>Most of them feel like <strong>websites</strong>. They lag, they scroll weirdly, and the navigation breaks.</p><p>The difference between a “Bot” and a “Mini App” is the <strong>User Experience (UX)</strong>.</p><p>I recently built <strong>SwiftCart</strong>, a high-fidelity e-commerce engine on TON. During development, I encountered three specific constraints of the Telegram WebView environment. Here is how I solved them.</p><h4>Challenge 1: The “Drag-to-Close” Conflict</h4><p>Telegram has a native gesture: if you swipe down on the header, the Mini App closes.<br>This is a nightmare for apps with vertical scrolling. If a user tries to scroll up your product list, they might accidentally kill the app.</p><p><strong>The Solution: Overscroll Locking</strong><br>You cannot just rely on CSS overflow: hidden. You need to intercept the touch events.</p><p>I implemented a custom hook, useTelegramScroll, that detects if the user is at the top of the page (scrollTop === 0).</p><ul><li><strong>If at Top:</strong> I disable the default touchmove event.</li><li><strong>If Scrolled Down:</strong> I re-enable it.</li></ul><p>This forces the app to feel “grounded,” mimicking the behavior of a native iOS TableView.</p><h4>Challenge 2: Syncing the Native Back Button</h4><p>Telegram provides a native “Back Button” in the top-left corner of the header. However, by default, this button does nothing or closes the app.<br>It does <strong>not</strong> know about your React Router history.</p><p><strong>The Solution: The Router Bridge</strong><br>I created a synchronization layer between Next/Navigation and WebApp.BackButton.</p><p>code JavaScript</p><pre>useEffect(() =&gt; {<br>  if (path === &#39;/&#39;) {<br>    WebApp.BackButton.hide();<br>  } else {<br>    WebApp.BackButton.show();<br>    WebApp.BackButton.onClick(() =&gt; router.back());<br>  }<br>}, [path]);</pre><p>This simple logic makes the Telegram UI act as the navigation controller for your React app. It feels seamless to the user.</p><h4>Challenge 3: Wallet Connection Friction</h4><p>In a standard dApp, connecting a wallet (like MetaMask) opens a browser extension.<br>In Telegram Mobile, there are no extensions. You rely on Deep Links (Universal Links) to switch between the Telegram App and the Wallet App (Tonkeeper).</p><p><strong>The Solution: TON Connect UI Customization</strong><br>Instead of building my own modal, I leveraged the @tonconnect/ui-react library but customized the <strong>manifest</strong>.<br>By optimizing the ton-connect-manifest.json, I ensured that when a user clicks “Connect,” it instantly triggers the deep link to the installed wallet without an awkward “Select Wallet” redirection page.</p><p>I also implemented <strong>Optimistic UI</strong>. While the user is signing the transaction in Tonkeeper, my app shows a “Processing…” animation state, rather than a loading spinner. This psychological trick makes the 3-second delay feel instant.</p><h3>Conclusion</h3><p>Building for Telegram is not just about writing React code. It is about understanding the <strong>Container</strong>.<br>When you respect the platform’s constraints and hook into its native SDKs (Haptics, CloudStorage, MainButton), you stop building “Bots” and start building <strong>Applications</strong>.</p><p>If you are a founder looking to build a high-fidelity TMA, focusing on these UX details is what will separate you from the thousands of copy-paste clicker games.</p><p>Let’s build better apps.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2089eb022072" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why I’m Betting My Career on Telegram Mini Apps (And Why You Should Too)]]></title>
            <link>https://medium.com/@mdabdullah.dev/why-im-betting-my-career-on-telegram-mini-apps-and-why-you-should-too-24c3b4f1b9b9?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/24c3b4f1b9b9</guid>
            <category><![CDATA[ton]]></category>
            <category><![CDATA[telegram-mini-app]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Fri, 30 Jan 2026 09:41:32 GMT</pubDate>
            <atom:updated>2026-01-30T09:41:32.162Z</atom:updated>
            <content:encoded><![CDATA[<blockquote>The era of App Stores is ending. The era of the “Super App” is just beginning.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7FtrXIl0c3heEIG5TOVBzw.png" /></figure><h3><strong>Introduction</strong></h3><p>For the last five years, the path for a frontend developer was clear: Learn React, build a PWA, deploy to the web. Maybe, if you had the budget, you would wrap it in React Native and pray for App Store approval.</p><p>But in late 2024, I noticed a shift. The “App Store” model is breaking. Customer acquisition costs (CAC) are skyrocketing. Users are tired of downloading new apps.</p><p>Meanwhile, a quiet revolution is happening inside an app we all use every day. <strong>Telegram.</strong></p><p>With the launch of <strong>Telegram Mini Apps (TMA)</strong> and the deep integration of the <strong>TON Blockchain</strong>, Telegram has transformed from a chat app into a global Operating System.</p><p>Here is why I spent the last 60 days re-engineering my entire dev stack for this ecosystem, and why I believe 2026 will be the year of the Mini App.</p><h3>1. The “Zero-Friction” Acquisition Model</h3><p>In Web2, the funnel looks like this:</p><ul><li>Click Ad -&gt; Go to App Store -&gt; Wait for Download -&gt; Open App -&gt; Sign Up -&gt; Verify Email -&gt; <strong>Finally Use App.</strong></li><li><em>Drop-off rate: ~90%</em></li></ul><p>In the TMA ecosystem, the funnel looks like this:</p><ul><li>Click Link -&gt; <strong>App Opens Instantly.</strong></li><li><em>Drop-off rate: ~10%</em></li></ul><p>Because the user is already logged into Telegram, we get their identity, their profile photo, and their language settings <em>automatically</em> (via WebApp.initData). There is no “Sign Up” button. This is a UX dream.</p><h3>2. Payments are finally “Native.”</h3><p>Web2 payments are a mess of Stripe integrations, credit card forms, and region-locking.</p><p>In a Telegram Mini App, we have <strong>TON Connect</strong>.<br>With one tap, a user can connect their non-custodial wallet (like Tonkeeper). With a second tap, they can pay for a digital item using USDT or TON.</p><p>I recently built <strong>“SwiftCart,”</strong> an e-commerce store on TON. The checkout process doesn’t ask for a name, address, or card number. It just asks for a signature. It turns commerce into a 5-second interaction.</p><h3>3. The Tech Stack is (Surprisingly) Mature</h3><p>A common misconception is that “Bots” are just text-based scripts.<br><strong>False.</strong></p><p>A Telegram Mini App is a full-blown web application running inside a WebView container. This means we can use:</p><ul><li><strong>React 19 &amp; Next.js 16:</strong> For robust, server-side rendered architecture.</li><li><strong>Framer Motion / Three.js:</strong> For 60FPS, hardware-accelerated 3D graphics.</li><li><strong>Tailwind CSS:</strong> For rapid UI development.</li></ul><p>My project <strong>“FairGate”</strong> (a reputation-gated vault) uses advanced CSS glassmorphism and 3D tilt effects that rival any native iOS app. The constraint isn’t the technology; it’s the developer’s imagination.</p><h3>4. The “Vibe Coding” Advantage</h3><p>The speed of development in this space is blistering. Because we don’t have to build authentication systems or payment gateways from scratch, we can focus 100% on the <strong>User Interface.</strong></p><p>I’ve adopted an AI-augmented workflow I call <strong>“Vibe Coding.”</strong> By leveraging LLMs to handle the boilerplate of React components, I focus entirely on the <em>interaction design</em> — the haptics, the animations, the “feel” of the app.<br>This allows me to ship “Director-Level” MVPs in days, not months.</p><h3>Conclusion: The Super App Future</h3><p>We are moving towards a world where we don’t switch apps; we switch <em>contexts</em> within a single Super App. WeChat proved this in China. Telegram is proving it for the rest of the world.</p><p>I am placing my bet on TON and TMA because I want to build where the users <em>are</em>, not where I wish they <em>would be</em>.</p><p>If you are a founder or an agency looking to build on TON, the time is now. The infrastructure is ready. The users are waiting.</p><p>🚀 <strong>Let’s build something extraordinary.</strong></p><p><strong>I am officially open to collaborating</strong> with founders, Web3 agencies, and innovators who are ready to bypass the App Store friction and go straight to the user. Whether you have a specific project in mind or just want to discuss the future of the TON ecosystem, let’s talk.</p><p><strong>Connect with me:</strong> 🔗 <strong>LinkedIn:</strong> <a href="https://www.linkedin.com/in/mdabdullah-dev/">https://www.linkedin.com/in/mdabdullah-dev/</a> 📩 <strong>Telegram:</strong> <a href="https://t.me/abdullah_gram">https://t.me/abdullah_gram</a></p><p>#FutureOfTech #SuperApps #Web3Founders #TelegramDev #MassAdoption</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=24c3b4f1b9b9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Engineering the Future of Frictionless Solana Onboarding]]></title>
            <link>https://medium.com/@mdabdullah.dev/engineering-the-future-of-frictionless-solana-onboarding-8e4abdc3938a?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/8e4abdc3938a</guid>
            <category><![CDATA[passkey]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[solana-network]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[ux-design]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Wed, 31 Dec 2025 16:38:39 GMT</pubDate>
            <atom:updated>2025-12-31T16:38:39.239Z</atom:updated>
            <content:encoded><![CDATA[<p>In the fast-moving landscape of 2025, blockchain technology has scaled significantly, yet the user experience (UX) remains trapped in the past. We are still asking users to write down 12-word seed phrases and install third-party extensions before they can even send their first transaction. This is the “UX Wall,” and it is the primary reason Web3 adoption hasn’t yet reached the billions.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vfE-SKNC-aOPsmNlfYmCXw.png" /></figure><h3>The Vision: Identity is a Handshake, Not a Password</h3><p>The core philosophy of <strong>Sovereign</strong> is based on the “Biometric Handshake.” By leveraging the device’s native <strong>Secure Enclave</strong> (FaceID, TouchID, or Windows Hello), we transform the user’s physical presence into a cryptographic key.</p><p>Under the hood, we utilize the <strong>WebAuthn protocol</strong>. When a user “initializes” their wallet in our starter kit, the private key is generated and stored directly on the hardware. It never touches a database; it never leaves the device. This is true self-custody with a Web2-speed feel.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*F0MQc0jCuuHV9FURmES6Rg.png" /></figure><h3>Tactical Engineering: The “Ghost” Protocol</h3><p>Even with a biometric login, users still face the “Empty Wallet” hurdle. They need SOL to pay for gas before they can interact with the network.</p><p>In the Sovereign Starter Kit, I implemented a <strong>Gasless Relay Module</strong>. Using the LazorKit Paymaster, developers can now sponsor transaction fees for their users. I call these <strong>“Ghost Transactions”</strong>; the blockchain becomes invisible. The user signs a biometric confirmation, the Relayer pays the fee, and the transaction is finalized on-chain in seconds. For the end-user, it feels exactly like using Apple Pay.</p><h3>Design Philosophy: Solar-Obsidian &amp; Refractive Glass</h3><p>To win the attention of the next generation of developers, the UI must match the power of the protocol. I moved away from the standard “Cyber-Neon” look to create the <strong>Solar-Obsidian</strong> theme.</p><p>Using a rich palette of <strong>Crimson Red, Hot Pink, and Vivid Gold</strong>, the interface represents high-energy liquidity. Every component is built with <strong>Sovereign Glass</strong>, a refractive material that uses backdrop blurs and iridescent glows to create depth. It isn’t just a dashboard; it’s a mission control terminal for the decentralized internet.</p><h3>Developer Experience (DX) as a First-Class Citizen</h3><p>The goal of this bounty wasn’t just to build a product, but to help <em>other builders</em>. That is why the Sovereign Starter Kit features:</p><ul><li><strong>Neural Persistence:</strong> A state-driven session management system using <strong>Zustand</strong>. It intelligently detects existing hardware keys to restore sessions without redundant popups.</li><li><strong>Integrated Technical Portal:</strong> I built a markdown-to-React documentation engine directly into the app. A developer can read the “Handshake Protocol” guide and see the implementation code without ever leaving the interface.</li><li><strong>Modular Architecture:</strong> The project is structured using <strong>Next.js 16 </strong>patterns, allowing any developer to clone the repo and deploy a biometric-ready dApp in under five minutes.</li></ul><h3>The Road Ahead</h3><p>We are moving toward a “Seedless” future. The combination of Solana’s high throughput and LazorKit’s biometric abstraction is the key to onboarding the next billion users.</p><p><strong>LazorKit Sovereign</strong> is my contribution to this transition, a premium, open-source foundation for developers who refuse to settle for mediocre UX. The era of the seed phrase is over. The era of the Sovereign Handshake has begun.</p><p><strong>Explore the Sovereign Kit:</strong> [<a href="https://lazorkit-sdk.vercel.app/">https://lazorkit-sdk.vercel.app</a>]</p><p><em>Built for the LazorKit SDK Bounty / Superteam.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8e4abdc3938a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Visualizing the Xandeum Storage Layer with XandOS By MdAbdullah]]></title>
            <link>https://medium.com/@mdabdullah.dev/visualizing-the-xandeum-storage-layer-with-xandos-by-mdabdullah-7f386f1b39b4?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/7f386f1b39b4</guid>
            <category><![CDATA[product-design]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[solana-network]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Fri, 26 Dec 2025 03:47:41 GMT</pubDate>
            <atom:updated>2025-12-26T03:47:41.565Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CjzIx1L03WJKh4pP8Cb2sA.png" /><figcaption>gossip</figcaption></figure><p>The promise of Xandeum is staggering: a scalable storage layer for Solana capable of reaching exabyte capacity. But for a network this ambitious, raw data is not enough. To truly manage a global cluster of pNodes, operators and analysts need a “Mission Control” — a way to see the heartbeat of the gossip network in real-time.</p><p>This was the motivation behind <strong>XandOS</strong></p><h3>The Challenge: Beyond the Static Table</h3><p>Most blockchain explorers are “Snapshots.” They show you what happened a few seconds ago. When dealing with Xandeum’s Gossip Protocol, a snapshot isn’t enough. You need to see the peer handshakes as they happen. You need to see the “Credits” (performance scores) moving.</p><p>When I started building XandOS Pulse, I set three strict requirements:</p><ul><li><strong>Real-Time Fidelity:</strong> Data must be live, pulled directly from pRPC seeds.</li><li><strong>Industrial Design:</strong> The UI should feel like a piece of high-end hardware, not a generic website.</li><li><strong>Actionable Intelligence:</strong> Every pixel must help a node operator make a decision.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sc-FkBHZtztlHoCp7cVKPA.png" /><figcaption>overview</figcaption></figure><h3>The “Diamond Sovereign” Design Language</h3><p>I moved away from the standard “SaaS Blue” palette. Instead, I developed a design language I call <strong>Diamond Sovereign</strong>.</p><p>Built on a foundation of refractive obsidian glass and iridescent neon accents (Cyan-to-Fuchsia), the interface mimics a tactical military HUD. Using <strong>Framer Motion</strong>, I implemented liquid state transitions — when you switch from the Global Radar to the Node Registry, the data doesn’t just “load”; it blurs and materializes, maintaining the immersion of a professional command deck.</p><h3>Under the Hood: The Engineering of Pulse</h3><p>Design is only as good as the data powering it. To meet the bounty requirements, I built a custom <strong>pRPC Aggregator</strong> using Next.js 16.1 and Zustand.</p><ul><li><strong>Multi-Seed Parallelism:</strong> The engine queries 8+ Xandeum seed IPs simultaneously. This ensures that even if one seed is slow, the “Pulse” remains stable.</li><li><strong>Data Deduplication:</strong> Since different seeds might report the same pod, I implemented a server-side Map logic to deduplicate identities by pubkey, ensuring 100% accuracy in the node count.</li><li><strong>Neural Geo-Mapping:</strong> To provide geographic context without the latency of external API calls, I built an IP-prefix mapper that identifies node clusters across Germany, the US, the UK, and beyond, driving the <strong>Neural Radar</strong> map.</li></ul><h3>A Tour of the Command Center</h3><h4>1. The High-Density Registry</h4><p>This is a cryptographic ledger of the network. I replaced standard text with <strong>Liquid Progress Bars</strong> for memory allocation and <strong>Neon Status Pings</strong>. Operators can filter the 240+ nodes by status or region, allowing for “Forensic” level inspection of the cluster.</p><h4>2. The Neural Radar</h4><p>Xandeum’s strength is its decentralization. The Radar module provides a holographic 2D projection of the global footprint. It uses dynamic clustering marker sizes scale based on how many pods are active in a specific sector, providing an instant visual of network “weight.”</p><h4>3. The Gossip Terminal</h4><p>This is the heart of the system. It visualizes raw protocol handshakes and shard verification packets. Each log is color-coded by type (<strong>INBOUND, STORAGE, SECURITY</strong>), allowing technical analysts to monitor the handshake health of the peer-to-peer mesh.</p><h4>4. Hall of Champions</h4><p>Competition drives performance. The Hall of Champions sorts the entire network by <strong>Credits</strong> (Performance Scores), placing the top providers on a 3D podium. This creates a powerful incentive for operators to optimize their hardware and maintain 100% uptime.</p><h3>The Vision: Scalable Intelligence</h3><p>Xandeum is solving one of the most critical bottlenecks in the Solana ecosystem. As the network scales to exabytes, tools like XandOS Pulse will be essential to ensure that we can see, manage, and secure that data.</p><p>Building this platform was an exercise in bridging the gap between complex blockchain protocols and elite user experiences. I look forward to seeing the Xandeum ecosystem grow, and I’m proud to contribute this “Diamond-Tier” interface to the community.</p><p><strong>Experience the Pulse: </strong><a href="https://xand-os.vercel.app/">https://xand-os.vercel.app/</a></p><p><strong><em>Built for the Xandeum labs</em></strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7f386f1b39b4" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Build UI with AI: Exploring Google Stitch for Developers and Designers]]></title>
            <link>https://medium.com/@mdabdullah.dev/build-ui-with-ai-exploring-google-stitch-for-developers-and-designers-9b2385761e78?source=rss-996f3c186e17------2</link>
            <guid isPermaLink="false">https://medium.com/p/9b2385761e78</guid>
            <category><![CDATA[ui-ux-design]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[design-tools]]></category>
            <category><![CDATA[mvp-builder]]></category>
            <category><![CDATA[google-stitch]]></category>
            <dc:creator><![CDATA[Md Abdullah]]></dc:creator>
            <pubDate>Wed, 09 Jul 2025 14:36:55 GMT</pubDate>
            <atom:updated>2025-07-09T14:36:55.226Z</atom:updated>
            <content:encoded><![CDATA[<p>Google’s new Stitch tool lets you design UI from text prompts and sketches, no Figma skills required.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k0VG-gJwf9Fc6AeDvR9Alg.jpeg" /></figure><p>In May 2025, Google quietly dropped something big during Google I/O — a tool that might just change how we design interfaces forever. It’s called <a href="https://stitch.withgoogle.com/"><strong>Stitch</strong></a>, and it’s built for people like us — software developers, indie makers, and product teams who want to move fast.</p><p>No more waiting for a designer to hand off wireframes.</p><p>No more struggling with Figma layers at 2 AM.</p><p>With Stitch, you can <strong>generate working UI mockups</strong> — and even export them as <strong>Figma files or front-end code</strong> — just by describing your idea in plain English.</p><h3>✨ What Is Google Stitch?</h3><p><strong>Stitch</strong> is a new Google Labs experiment powered by <strong>Gemini 2.5 Pro</strong> (yes, the same model that understands images and text together). It lets you design user interfaces by:</p><ul><li>Writing a <strong>prompt</strong> (like “create a mobile screen for a shopping app”)</li><li>Uploading a <strong>sketch or wireframe</strong></li><li>Combining both for smarter results</li></ul><p>It’s fast, interactive, and even lets you regenerate multiple variations.</p><h3>💡 How It Works</h3><p>Let’s say you write:</p><blockquote><em>“Design a dark-themed dashboard with analytics cards, charts, and a sidebar menu.”</em></blockquote><p>Stitch instantly creates a full UI layout with colors, hierarchy, and components. You can adjust things like:</p><ul><li>Font styles</li><li>Button shape</li><li>Color palette</li><li>Layout direction</li></ul><p>And you’re not locked in. You can edit or regenerate layouts with new prompts.</p><h3>🧑‍💻 Why Developers Should Care</h3><p>Here’s the truth: many of us are <strong>not UI designers</strong>. We write APIs, build features, and worry about edge cases. But <strong>presentation matters</strong>, and users judge by design first.</p><p><strong>Stitch helps developers:</strong></p><ul><li>Create realistic UI mockups for MVPs and client demo</li><li>Save time on design handoff or freelancer management</li><li>Export editable Figma files for collaboration</li><li>Quickly prototype new ideas in minutes</li></ul><p>It’s like having a designer in your IDE — without the email chains.</p><p>We tested Stitch for one of our internal admin dashboards. In 3 minutes, we had a full layout. No need to involve a designer, no need to use Figma from scratch. It gave us a huge productivity boost.</p><p>Try it here: <a href="https://stitch.withgoogle.com">https://stitch.withgoogle.com</a></p><p>The future of UI is not just no-code — it’s <strong>no-design</strong> (at least in the early stage)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9b2385761e78" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>