<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Csaba8472</title>
    <description>The latest articles on Forem by Csaba8472 (@csaba8472).</description>
    <link>https://forem.com/csaba8472</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F789606%2F58b1269f-85c8-4581-b4d0-e67f15c575e0.jpeg</url>
      <title>Forem: Csaba8472</title>
      <link>https://forem.com/csaba8472</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/csaba8472"/>
    <language>en</language>
    <item>
      <title>App Release Copilot: AI-Powered App Store Metadata from Your Terminal</title>
      <dc:creator>Csaba8472</dc:creator>
      <pubDate>Sun, 15 Feb 2026 21:18:00 +0000</pubDate>
      <link>https://forem.com/csaba8472/app-release-copilot-ai-powered-app-store-metadata-from-your-terminal-9dd</link>
      <guid>https://forem.com/csaba8472/app-release-copilot-ai-powered-app-store-metadata-from-your-terminal-9dd</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;APP Release Copilot&lt;/strong&gt; — a chat-style CLI that generates AI-powered App Store Optimization (ASO) metadata for iOS apps, powered by the GitHub Copilot SDK.&lt;/p&gt;

&lt;p&gt;As an indie iOS developer, I've always found writing App Store metadata tedious and time-consuming. Crafting the perfect title within 30 characters, squeezing meaningful keywords into 100 characters, and writing a description that hooks users in the first 3 lines — it's a skill of its own. I wanted a tool that brings AI directly into my terminal workflow, right where I already spend most of my time.&lt;/p&gt;

&lt;p&gt;APP Release Copilot connects to GitHub Copilot through the &lt;code&gt;@github/copilot-sdk&lt;/code&gt;, integrates with a custom MCP server for real-time keyword traffic and difficulty scoring, and outputs metadata in your terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Slash-command interface&lt;/strong&gt; — &lt;code&gt;/title&lt;/code&gt;, &lt;code&gt;/subtitle&lt;/code&gt;, &lt;code&gt;/desc&lt;/code&gt;, &lt;code&gt;/keywords&lt;/code&gt;, &lt;code&gt;/release&lt;/code&gt;, &lt;code&gt;/promo&lt;/code&gt;, &lt;code&gt;/full&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natural language refinement&lt;/strong&gt; — type "make it shorter" or "focus on productivity" to iterate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live keyword scoring&lt;/strong&gt; — MCP-powered tool calls analyze keyword traffic &amp;amp; difficulty in real-time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Character limit awareness&lt;/strong&gt; — color-coded counts (green ≤80%, yellow ≤100%, red over limit)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic model selection&lt;/strong&gt; — pick from all available Copilot models at startup (GPT-4o, Claude Sonnet, o-series)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App Store competitor import&lt;/strong&gt; — &lt;code&gt;/url&lt;/code&gt; fetches any competitor's App Store listing for context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App icon &amp;amp; feature graphic generation&lt;/strong&gt; — &lt;code&gt;/icon&lt;/code&gt; and &lt;code&gt;/feature&lt;/code&gt; produce store-ready images via OpenAI or Gemini, with 16 style presets adapted from &lt;a href="https://github.com/betomoedano/snapai" rel="noopener noreferrer"&gt;SnapAI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beautiful TUI&lt;/strong&gt; — gradient ASCII logo, box-drawn panels, progress bars, model badges&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com/Csaba8472/app-release-copilot" rel="noopener noreferrer"&gt;github.com/Csaba8472/app-release-copilot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/OAx0X7WrYvg"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h3&gt;
  
  
  Typical Workflow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯  /title                     # Generate 5 title options (30 chars each)
❯  more like option 3         # Refine with natural language
❯  /keywords                  # Generate keyword string with live MCP scoring
❯  /desc                      # Full App Store description
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each generation shows real-time spinner states — "📊 Analyzing keyword scores..." when MCP tools fire, "✨ Writing title options... (12 lines)" as content streams in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Export Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"configVersion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"apple"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"info"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"en-US"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"foodie - ai cal food tracker"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"subtitle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Snap, Track &amp;amp; Eat Smarter"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Transform your meals into insights..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"keywords"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"calorie,tracker,food,photo,ai,nutrition,diet,meal,snap,health"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"releaseNotes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"What's new in foodie 2.0..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"promoText"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Track calories instantly — just snap a photo!"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;This project is deeply intertwined with GitHub Copilot at two levels:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Built ON GitHub Copilot
&lt;/h3&gt;

&lt;p&gt;APP Release Copilot isn't just built &lt;em&gt;with&lt;/em&gt; Copilot — it runs &lt;em&gt;on&lt;/em&gt; it. The entire AI backbone uses the &lt;code&gt;@github/copilot-sdk&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;CopilotClient&lt;/code&gt;&lt;/strong&gt; manages authentication, sessions, and model lifecycle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming sessions&lt;/strong&gt; with event-driven architecture (&lt;code&gt;assistant.message_delta&lt;/code&gt;, &lt;code&gt;tool.execution_start&lt;/code&gt;, &lt;code&gt;session.idle&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP server integration&lt;/strong&gt; — the SDK connects to my custom MCP server at &lt;code&gt;aso-mcp.vercel.app&lt;/code&gt; for real-time keyword traffic/difficulty scoring via the &lt;code&gt;get_keyword_scores&lt;/code&gt; tool&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quota tracking&lt;/strong&gt; — usage snapshots from &lt;code&gt;assistant.usage&lt;/code&gt; events update the status bar in real-time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic model listing&lt;/strong&gt; — &lt;code&gt;client.listModels()&lt;/code&gt; fetches available models at startup, so users always see what's currently offered&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system prompt is a carefully crafted ASO expert persona with character limits baked in, so the AI natively respects the 30-char title limit, 100-char keyword budget, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Built WITH GitHub Copilot
&lt;/h3&gt;

&lt;p&gt;During development, GitHub Copilot was my constant pair programmer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architecture decisions&lt;/strong&gt; — Copilot helped design the event-driven streaming architecture, suggesting the &lt;code&gt;SessionEvent&lt;/code&gt; switch-case pattern for handling deltas, tool executions, and quota snapshots&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ASO domain expertise&lt;/strong&gt; — the system prompt itself was co-authored with Copilot, refining App Store best practices like "use singular keyword forms (Apple matches plurals automatically)" and "don't repeat title words in keywords"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal UI&lt;/strong&gt; — the gradient ASCII logo, box-drawing helpers, and progress bar utilities were iterated on with Copilot's suggestions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edge cases&lt;/strong&gt; — the double Ctrl+C exit pattern, &lt;code&gt;ExitPromptError&lt;/code&gt; handling for every &lt;code&gt;@inquirer/prompts&lt;/code&gt; call, and graceful cleanup sequences all came together faster with Copilot's awareness of Node.js patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Made the Difference
&lt;/h3&gt;

&lt;p&gt;The biggest impact was on the &lt;strong&gt;MCP integration&lt;/strong&gt;. Wiring up the Copilot SDK's MCP server support — where the AI autonomously decides to call &lt;code&gt;get_keyword_scores&lt;/code&gt; during keyword generation — would have taken much longer without Copilot understanding the SDK's patterns. The streaming event model, in particular, has nuances (when to resolve the Promise, how to track tool completions) that Copilot navigated with me step by step.&lt;/p&gt;

&lt;p&gt;The result is a tool I actually use for my own apps.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt; TypeScript, &lt;code&gt;@github/copilot-sdk&lt;/code&gt;, &lt;code&gt;@inquirer/prompts&lt;/code&gt;, Commander.js, Chalk, Ora, Clipboardy&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; MIT&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>Binding Lottie (or any other Swift framework with UI) in MAUI</title>
      <dc:creator>Csaba8472</dc:creator>
      <pubDate>Tue, 12 Jul 2022 06:57:23 +0000</pubDate>
      <link>https://forem.com/csaba8472/binding-lottie-or-any-other-swift-framework-with-ui-in-maui-543m</link>
      <guid>https://forem.com/csaba8472/binding-lottie-or-any-other-swift-framework-with-ui-in-maui-543m</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This post is part of &lt;a href="https://goforgoldman.com/2022/05/19/maui-ui-july.html" rel="noopener noreferrer"&gt;#MAUIUIJuly&lt;/a&gt;. It's a great initiative to share helpful content with the community.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Lottie?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Lottie is a library for Android, iOS, Web, and Windows that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile and on the web!&lt;br&gt;
For the first time, designers can create and ship beautiful animations without an engineer painstakingly recreating it by hand.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why bind?
&lt;/h2&gt;

&lt;p&gt;When I wrote my app which needed Lottie animations, I found &lt;a href="https://github.com/Baseflow/LottieXamarin" rel="noopener noreferrer"&gt;LottieXamarin&lt;/a&gt; library, but that only works with Xamarin.Forms not with MAUI. I tried to update &lt;a href="https://github.com/Baseflow/LottieXamarin/pull/379" rel="noopener noreferrer"&gt;it&lt;/a&gt;, however I've run into multiple issues and at the same time I've realised only older Lottie versions can be binded, because from March of 2019, &lt;a href="https://github.com/airbnb/lottie-ios/releases/tag/3.0.0" rel="noopener noreferrer"&gt;Lottie is a Swift library&lt;/a&gt;, which means it can't be binded easily. With the binding solution I'll show below you can bind the latest version.&lt;/p&gt;

&lt;p&gt;The other option is &lt;a href="https://platform.uno/blog/skottie-now-available-for-skiasharp/" rel="noopener noreferrer"&gt;Skottie&lt;/a&gt; which was released after I'd already done my Lottie binding. I think Skottie is a viable alternative, based on your project needs can you select the best option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;I have two great resources for binding a library:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/bgK_6anwMcw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/xamarin/ios/platform/binding-swift/walkthrough" rel="noopener noreferrer"&gt;Swift binding walkthrough&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To bind Lottie I chose slim binding approach, please check the video for the details.&lt;/p&gt;

&lt;p&gt;This post would like to give a high level overview how view binding can be done, for the details please check the resources above and &lt;a href="https://github.com/Csaba8472/LottieMaui" rel="noopener noreferrer"&gt;LottieMaui&lt;/a&gt; repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's start with Android
&lt;/h2&gt;

&lt;h3&gt;
  
  
  LottieProxy
&lt;/h3&gt;

&lt;p&gt;LottieAnimationViewWrapper does what the name suggest. It wraps LottieAnimationView which means, it initializes, exposes the View and makes the caller able to set the animation. The class itself is in an android library.&lt;/p&gt;

&lt;p&gt;In the video above there is a script which downloads all the dependencies. &lt;a href="https://github.com/Csaba8472/LottieMaui/blob/main/LottieProxy/mylibrary/build.gradle#L45-L90" rel="noopener noreferrer"&gt;Here&lt;/a&gt; you can find it, so you can easily paste it in your gradle.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Lottie.Proxy.Binding
&lt;/h3&gt;

&lt;p&gt;Nothing to see here, this is to connect the .net world with the android library. This project simplifies our job with not forcing us to bind 100% of any library, but only what we need (and already wrote in LottieProxy).&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  Then make it work on iOS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  LottieProxyiOS
&lt;/h3&gt;

&lt;p&gt;On iOS side to keep it clean, I've used &lt;a href="https://github.com/Carthage/Carthage" rel="noopener noreferrer"&gt;Carthage&lt;/a&gt; to get Lottie. The wrapping is pretty much the same, the goal is to make sure we can set the animation and get the view.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;I've borrowed the &lt;a href="https://github.com/Csaba8472/LottieMaui/blob/main/LottieProxyiOS/build.fat.sh" rel="noopener noreferrer"&gt;build script&lt;/a&gt; from the Swift binding walkthrough. &lt;/p&gt;

&lt;h3&gt;
  
  
  LottieProxyiOS.Binding
&lt;/h3&gt;

&lt;p&gt;After you run &lt;a href="https://docs.microsoft.com/en-us/xamarin/ios/platform/binding-swift/walkthrough#prepare-metadata" rel="noopener noreferrer"&gt;sharpie&lt;/a&gt; you'll get an interface close to this:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;The good thing is you have 100% control over what will be binded, so if you run any issue, it's much easier to fix as you would do the binding against the whole Lottie framework.&lt;/p&gt;

&lt;p&gt;Don't forget to include all the frameworks and you see absolute paths here because relative paths don't always work for me.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  Common
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Lottie.Maui
&lt;/h3&gt;

&lt;p&gt;Okay, we have the Lottie binding, now what? Let's use one of the greatest addition of MAUI, handlers. You'll find in this post the steps for LottieMaui, and please find &lt;a href="https://github.com/dotnet/maui/wiki/Porting-Custom-Renderers-to-Handlers#example" rel="noopener noreferrer"&gt;here&lt;/a&gt; the detailed description.&lt;/p&gt;

&lt;p&gt;First step is to define our interface:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Then implement the interface:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Then create the LottieHandler with mappers. This is a partial class, the most interesting things will be happening in the Platform folder. Basically, there will be connected the binded C# libraries with our cross-platform app. As you see below I've only implemented what I needed. I wanted to show an animation loop, so I only implemented those parts. Later, anything else can be easily added.&lt;/p&gt;

&lt;p&gt;Don't forget to add the handler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;handlers.AddHandler(typeof(ILottieView), typeof(LottieHandler));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;h3&gt;
  
  
  Lottie.Maui iOS handler
&lt;/h3&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Lottie.Maui Android handler
&lt;/h3&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;And last but not least, you can add LottieView to your app, and you'll have the looping animation:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foh8zwzg1jcuog9ub3ne7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foh8zwzg1jcuog9ub3ne7.gif" alt="app animation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you made it here, you're awesome! I hope this post is going to be helpful.&lt;/p&gt;

&lt;p&gt;I mentioned above, I implemented all this for my app, which is a Microsoft To Do client for Apple Watch and Wear OS devices. You can download from the &lt;a href="https://apps.apple.com/us/app/wrist-list-for-microsoft-to-do/id1566765622" rel="noopener noreferrer"&gt;AppStore&lt;/a&gt; and from &lt;a href="https://play.google.com/store/apps/details?id=com.hcsaba.mstodo" rel="noopener noreferrer"&gt;Play Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find all the code here: &lt;a href="https://github.com/Csaba8472/LottieMaui" rel="noopener noreferrer"&gt;https://github.com/Csaba8472/LottieMaui&lt;/a&gt;&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>maui</category>
      <category>lottie</category>
    </item>
  </channel>
</rss>
