<?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"><channel><title><![CDATA[Despia Blog - Everything about Hybrid Apps]]></title><description><![CDATA[Learn how to build better hybrid apps using Despia and your favorite JavaScript framework.]]></description><link>https://blog.despia.com</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 18:06:26 GMT</lastBuildDate><atom:link href="https://blog.despia.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Apple App Store Guidelines 2025: How To Make Your AI App Compliant (And Better)]]></title><description><![CDATA[Apple just raised the bar for AI apps, and that's a good thing.
The App Store is evolving to set clear standards for AI apps, which benefits everyone: users get transparency, legitimate developers get a level playing field, and the ecosystem gets hea...]]></description><link>https://blog.despia.com/apple-app-store-guidelines-2025-how-to-make-your-ai-app-compliant-and-better</link><guid isPermaLink="true">https://blog.despia.com/apple-app-store-guidelines-2025-how-to-make-your-ai-app-compliant-and-better</guid><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Fri, 14 Nov 2025 19:42:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/wAygsCk20h8/upload/22cb2e9b6c628cb711ac42fa8f900889.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Apple just raised the bar for AI apps, and that's a good thing.</strong></p>
<p>The App Store is evolving to set clear standards for AI apps, which benefits everyone: users get transparency, legitimate developers get a level playing field, and the ecosystem gets healthier.</p>
<p>If you're building an AI app, these new guidelines in 4.1(c) and 5.1.2(i) aren't obstacles. They're your roadmap to building something users can trust.</p>
<p>Here's everything you need to know about the changes, why they matter, and exactly how to make your app compliant. The good news? Most fixes take just a few hours and will actually improve your user experience.</p>
<h2 id="heading-understanding-guideline-41c-building-your-own-brand">Understanding Guideline 4.1(c): Building Your Own Brand</h2>
<p><strong>What changed:</strong> Apple now explicitly requires that you cannot use another developer's icon, brand, or product name in your app without written permission.</p>
<p><strong>Why this matters:</strong> This creates a healthier marketplace where apps compete on quality and features rather than borrowing recognition from established brands.</p>
<h3 id="heading-what-this-means-for-ai-app-developers">What This Means For AI App Developers</h3>
<p>Many developers building AI apps have used recognizable AI model names in their branding, often with good intentions. You might have:</p>
<ul>
<li><p>Named your app "ChatGPT Assistant" or "Claude Helper"</p>
</li>
<li><p>Used color schemes that match OpenAI or Anthropic branding</p>
</li>
<li><p>Referenced AI models in your title or subtitle</p>
</li>
<li><p>Created icons that evoke existing AI products</p>
</li>
</ul>
<p><strong>The good news:</strong> This is easy to fix, and doing so will actually strengthen your brand.</p>
<h3 id="heading-why-clear-branding-benefits-your-business">Why Clear Branding Benefits Your Business</h3>
<p>When you build your own distinct brand:</p>
<p><strong>User trust increases</strong>. People know exactly who they're dealing with <strong>Marketing becomes easier</strong>. You own your brand story instead of riding on someone else's <strong>Long-term value grows</strong>. Your brand equity is yours, not borrowed <strong>Retention improves</strong>. Users choose you for your features, not brand confusion</p>
<h3 id="heading-real-talk-about-pricing">Real Talk About Pricing</h3>
<p>Some AI apps charge premium prices ($15-20/week) compared to direct API access or official apps. This guideline isn't about pricing, it's about transparency.</p>
<p>If you're charging premium prices, that's fine as long as:</p>
<ul>
<li><p>Your branding is clearly distinct from the AI providers</p>
</li>
<li><p>You're transparent about what users are paying for</p>
</li>
<li><p>You're adding genuine value (better UX, specialized features, integrations, etc.)</p>
</li>
</ul>
<p><strong>The key is honest positioning, not specific price points.</strong></p>
<h3 id="heading-how-to-rebrand-your-ai-app-successfully">How To Rebrand Your AI App Successfully</h3>
<p><strong>Step 1: Define Your Unique Value</strong> What makes your app different beyond AI access? Focus on:</p>
<ul>
<li><p>Your specific use case (writing, coding, research, education)</p>
</li>
<li><p>Your unique UI/UX approach</p>
</li>
<li><p>Features you built beyond the API</p>
</li>
<li><p>The problem you solve</p>
</li>
</ul>
<p><strong>Step 2: Create Original Branding</strong></p>
<ul>
<li><p>Choose a name that describes what you do, not which AI you use</p>
</li>
<li><p>Design an icon that represents your app's purpose</p>
</li>
<li><p>Pick colors that match your brand, not the AI provider's</p>
</li>
<li><p>Write descriptions that highlight your features</p>
</li>
</ul>
<p><strong>Step 3: Update Your Positioning</strong> Instead of: "ChatGPT for Mobile" Try: "AI Writing Assistant with Smart Templates"</p>
<p>Instead of: "Claude Chat Client"<br />Try: "Context-Aware AI Research Tool"</p>
<h3 id="heading-examples-of-good-ai-app-branding">Examples of Good AI App Branding</h3>
<p>Apps that do this well:</p>
<ul>
<li><p><strong>Notion AI</strong>. Integrated AI that's clearly part of Notion</p>
</li>
<li><p><strong>Grammarly</strong>. Uses AI but brands around writing assistance</p>
</li>
<li><p><strong>Otter.ai</strong>. AI transcription with distinct brand identity</p>
</li>
</ul>
<p>These apps use AI technology but built their own recognizable brands.</p>
<h3 id="heading-quick-compliance-self-assessment">Quick Compliance Self-Assessment</h3>
<p>Take 5 minutes to review your app against these criteria:</p>
<p><strong>Branding Check:</strong></p>
<ul>
<li><p>[ ] My app name is distinct and doesn't use AI model names</p>
</li>
<li><p>[ ] My icon is original and doesn't mimic AI company branding</p>
</li>
<li><p>[ ] My description clearly explains what I built, not just which API I use</p>
</li>
<li><p>[ ] Users would understand this is a third-party app, not an official one</p>
</li>
</ul>
<p><strong>If you checked all boxes:</strong> You're in great shape for 4.1(c) compliance.</p>
<p><strong>If you need to make changes:</strong> Budget 4-8 hours for rebranding, and consider it an investment in your long-term brand equity.</p>
<h2 id="heading-understanding-guideline-512i-building-trust-through-transparency">Understanding Guideline 5.1.2(i): Building Trust Through Transparency</h2>
<p><strong>What changed:</strong> Apps must clearly disclose where user data is sent, specifically naming third-party AI services, and obtain explicit consent before sharing data.</p>
<p><strong>Why this is good:</strong> Transparency builds trust. Users appreciate knowing exactly what happens to their data, and apps that are upfront about it actually see better retention.</p>
<h3 id="heading-the-user-perspective">The User Perspective</h3>
<p>Imagine you're using an app and typing sensitive information: work documents, personal messages, creative writing. You'd want to know:</p>
<ul>
<li><p>Where is this data going?</p>
</li>
<li><p>Which company is processing it?</p>
</li>
<li><p>What are their privacy practices?</p>
</li>
</ul>
<p>That's all this guideline requires: answering those questions clearly before collecting data.</p>
<h3 id="heading-why-transparency-is-a-competitive-advantage">Why Transparency Is a Competitive Advantage</h3>
<p>Apps that implement clear data disclosures see several benefits:</p>
<p><strong>Higher Trust</strong>. Users appreciate honesty and are more likely to become long-term customers <strong>Better Reviews</strong>. Transparent apps get fewer complaints and better ratings <strong>Reduced Support Load</strong>. When users know what to expect, they have fewer questions <strong>Competitive Differentiation</strong>. You can highlight your privacy practices as a feature</p>
<h3 id="heading-how-to-implement-ai-data-consent-the-right-way">How to Implement AI Data Consent (The Right Way)</h3>
<p>The requirement is straightforward: before sending any user data to a third-party AI service, show a consent screen that:</p>
<ol>
<li><p><strong>Names the specific service</strong> (e.g., "OpenAI", "Anthropic", "Google")</p>
</li>
<li><p><strong>Explains what data is shared</strong> (messages, images, documents, etc.)</p>
</li>
<li><p><strong>Appears before data collection</strong> (not after the fact)</p>
</li>
<li><p><strong>Allows users to decline</strong> (and still use basic app features where possible)</p>
</li>
</ol>
<h3 id="heading-example-implementation">Example Implementation</h3>
<p>Here's a user-friendly consent flow:</p>
<pre><code class="lang-markdown">[First time user accesses AI feature]

MODAL APPEARS:

"AI Processing Disclosure"

"To provide AI-powered features, this app sends your [messages/images/data] 
to [OpenAI/Anthropic/Google] for processing.

Your data is subject to [Company]'s privacy policy. We do not store your 
data after processing is complete.

[Learn More] [I Understand] [Not Now]"
</code></pre>
<p><strong>Pro tip:</strong> The "Learn More" link should go to a clear, readable explanation, not a legal document. Explain in plain language what happens to user data.</p>
<h3 id="heading-making-consent-feel-natural">Making Consent Feel Natural</h3>
<p>Good UX around consent doesn't feel like a barrier, it feels like helpful information. Consider:</p>
<p><strong>Timing:</strong> Show consent right when users engage with AI features, not during onboarding <strong>Language:</strong> Use clear, friendly language instead of legal jargon <strong>Context:</strong> Explain why this disclosure matters (building trust, transparency) <strong>Options:</strong> Let users choose different privacy levels if possible</p>
<h3 id="heading-privacy-as-a-feature">Privacy as a Feature</h3>
<p>Some successful AI apps market their privacy practices as differentiators:</p>
<ul>
<li><p>"We use OpenAI's API with zero-retention"</p>
</li>
<li><p>"Your data is processed by [Service] and never stored"</p>
</li>
<li><p>"Full transparency: here's exactly where your data goes"</p>
</li>
</ul>
<p><strong>Users appreciate this honesty</strong>, and it can become a selling point rather than a hurdle.</p>
<h3 id="heading-technical-implementation-tips">Technical Implementation Tips</h3>
<p><strong>1. State Management</strong> Track consent status per feature:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> [hasAIConsent, setHasAIConsent] = useState(<span class="hljs-literal">false</span>);
</code></pre>
<p><strong>2. Persistent Storage</strong> Remember consent choices so users don't see the prompt every time:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">await</span> AsyncStorage.setItem(<span class="hljs-string">'ai_consent'</span>, <span class="hljs-string">'granted'</span>);
</code></pre>
<p><strong>3. Graceful Degradation</strong> If users decline consent, offer alternative features when possible:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">if</span> (!hasAIConsent) {
  <span class="hljs-comment">// Show template library instead of AI generation</span>
  <span class="hljs-comment">// Offer manual options instead of AI automation</span>
}
</code></pre>
<h3 id="heading-common-questions-about-512i">Common Questions About 5.1.2(i)</h3>
<p><strong>Q: Do I need consent for every API call?</strong> A: No, just once per feature category. Store their preference and respect it.</p>
<p><strong>Q: Can I bundle this with other privacy consents?</strong> A: No, third-party AI data sharing needs its own explicit consent moment.</p>
<p><strong>Q: What if my entire app is AI-powered?</strong> A: Show consent during onboarding, but make it clear and prominent, not buried in terms.</p>
<p><strong>Q: Does this apply if I'm using Apple's on-device ML?</strong> A: No, this is specifically about sending data to third-party services.</p>
<h3 id="heading-updating-your-app-privacy-section">Updating Your App Privacy Section</h3>
<p>Beyond in-app consent, update your App Store Connect privacy declarations:</p>
<ol>
<li><p>Go to App Privacy section</p>
</li>
<li><p>Declare "Data Linked to User" for AI processing</p>
</li>
<li><p>List specific third-party services (OpenAI, Anthropic, etc.)</p>
</li>
<li><p>Explain the purpose (AI features, content generation, etc.)</p>
</li>
</ol>
<p><strong>This takes 10 minutes and prevents review rejections.</strong></p>
<h2 id="heading-step-by-step-compliance-implementation-guide">Step-by-Step Compliance Implementation Guide</h2>
<p>Here's a practical timeline for making your AI app fully compliant. Most developers can complete this in a weekend.</p>
<h3 id="heading-phase-1-assessment-1-2-hours">Phase 1: Assessment (1-2 hours)</h3>
<p><strong>Audit Your Current State:</strong></p>
<ol>
<li><p><strong>Branding Review</strong> . Screenshot your app icon, name, and description . List any references to AI model names or companies . Note color schemes that might match AI providers . Document your current positioning</p>
</li>
<li><p><strong>Privacy Flow Review</strong> . Map out where your app sends user data . Identify all third-party AI services you use . Check where (if anywhere) you currently show consent . Review your App Privacy declarations in App Store Connect</p>
</li>
<li><p><strong>Feature Inventory</strong> . List all features that use AI . Note which ones require user data . Identify features that could work without AI as fallbacks</p>
</li>
</ol>
<p><strong>Deliverable:</strong> A clear checklist of what needs to change.</p>
<h3 id="heading-phase-2-branding-updates-2-4-hours">Phase 2: Branding Updates (2-4 hours)</h3>
<p><strong>If You Need to Rebrand:</strong></p>
<ol>
<li><p><strong>Brainstorm Your Unique Value</strong> . What problem does your app solve? . What makes your approach different? . Who is your target user? . Write 10 possible names that reflect your value, not the AI provider</p>
</li>
<li><p><strong>Design New Visual Identity</strong> . Create 3-5 icon concepts (or hire a designer on Fiverr/99designs) . Choose colors that match your brand personality . Ensure your icon is recognizable and distinct</p>
</li>
<li><p><strong>Update App Store Listing</strong> . App name: Focus on what you do, not which AI you use . Subtitle: Highlight your unique features . Description: Lead with benefits, mention AI as technology . Keywords: Shift from brand names to problem-solving terms</p>
</li>
</ol>
<p><strong>Deliverable:</strong> New branding assets and updated App Store listing.</p>
<h3 id="heading-phase-3-privacy-implementation-3-5-hours">Phase 3: Privacy Implementation (3-5 hours)</h3>
<p><strong>Add Consent Flows:</strong></p>
<ol>
<li><strong>Create Consent Modal Component</strong></li>
</ol>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">AIConsentModal</span>(<span class="hljs-params">{ service, onAccept, onDecline }</span>) </span>{
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">Modal</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>AI Processing Disclosure<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>This feature sends your data to {service} for AI processing.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">onClick</span>=<span class="hljs-string">{onAccept}</span>&gt;</span>I Understand<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">onClick</span>=<span class="hljs-string">{onDecline}</span>&gt;</span>Not Now<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">Modal</span>&gt;</span></span>
  );
}
</code></pre>
<ol start="2">
<li><p><strong>Implement Consent Logic</strong> . Show modal before first AI feature use . Store consent preference locally . Respect user's choice throughout the app . Add a settings option to review/change consent</p>
</li>
<li><p><strong>Add Privacy Information Screen</strong> . Create a dedicated "Privacy &amp; Data" section . Explain in plain language where data goes . Link to third-party privacy policies . Provide email for privacy questions</p>
</li>
<li><p><strong>Update App Store Connect</strong> . Go to App Privacy section . Add data types you collect . List third-party partners explicitly . Save and review</p>
</li>
</ol>
<p><strong>Deliverable:</strong> Functioning consent flow and updated privacy declarations.</p>
<h3 id="heading-phase-4-testing-amp-polish-1-2-hours">Phase 4: Testing &amp; Polish (1-2 hours)</h3>
<p><strong>Test As a New User:</strong></p>
<ol>
<li><p>Delete and reinstall your app</p>
</li>
<li><p>Go through the first-time experience</p>
</li>
<li><p>Verify consent appears at the right time</p>
</li>
<li><p>Test declining consent, does the app gracefully handle it?</p>
</li>
<li><p>Check that consent persists across sessions</p>
</li>
<li><p>Review all text for clarity and friendliness</p>
</li>
</ol>
<p><strong>Test Edge Cases:</strong></p>
<ul>
<li><p>What happens if user revokes consent?</p>
</li>
<li><p>Can users access consent info later?</p>
</li>
<li><p>Are all AI features covered?</p>
</li>
<li><p>Do error messages make sense?</p>
</li>
</ul>
<p><strong>Deliverable:</strong> Polished, tested experience ready for submission.</p>
<h3 id="heading-phase-5-submission-amp-documentation-1-hour">Phase 5: Submission &amp; Documentation (1 hour)</h3>
<p><strong>Prepare Your Submission:</strong></p>
<ol>
<li><p><strong>Update Version Notes</strong> . Mention updated branding (if applicable) . Note improved privacy transparency . Highlight any new features you added</p>
</li>
<li><p><strong>Prepare for App Review Questions</strong> . Screenshot your consent flows . Document your privacy implementation . Have answers ready about your branding choices</p>
</li>
<li><p><strong>Submit with Confidence</strong> . Double-check all fields in App Store Connect . Review screenshots for brand compliance . Submit and monitor review status</p>
</li>
</ol>
<p><strong>Deliverable:</strong> App submitted and compliant.</p>
<h3 id="heading-timeline-summary">Timeline Summary</h3>
<ul>
<li><p><strong>Quick Path</strong> (branding is fine, just need consent): 4-8 hours</p>
</li>
<li><p><strong>Full Rebrand</strong> (changing name, icon, and adding consent): 8-12 hours</p>
</li>
<li><p><strong>Comprehensive Update</strong> (rebrand + new features to justify pricing): 20-30 hours</p>
</li>
</ul>
<p><strong>Most developers can be compliant in a single focused weekend.</strong></p>
<h3 id="heading-budget-considerations">Budget Considerations</h3>
<p><strong>DIY Approach:</strong> $0-50</p>
<ul>
<li><p>Your time for coding and testing</p>
</li>
<li><p>Stock icons or DIY design tools</p>
</li>
<li><p>No additional costs</p>
</li>
</ul>
<p><strong>Professional Approach:</strong> $200-1000</p>
<ul>
<li><p>Designer for icon/branding: $100-500</p>
</li>
<li><p>Legal review of privacy flow: $100-300</p>
</li>
<li><p>QA testing: $0-200</p>
</li>
</ul>
<p><strong>The investment in proper compliance pays off through:</strong></p>
<ul>
<li><p>No risk of app removal</p>
</li>
<li><p>Better user trust and retention</p>
</li>
<li><p>Stronger long-term brand identity</p>
</li>
<li><p>Competitive advantage in marketplace</p>
</li>
</ul>
<h2 id="heading-why-these-changes-matter-for-the-app-store-ecosystem">Why These Changes Matter for the App Store Ecosystem</h2>
<p>Understanding Apple's motivation helps you see these guidelines as what they are: quality standards that benefit everyone in the long run.</p>
<h3 id="heading-setting-clear-standards-for-ai-apps">Setting Clear Standards for AI Apps</h3>
<p>Apple is establishing clear standards for a growing technology category, which will:</p>
<ul>
<li><p>Encourage innovative AI integrations</p>
</li>
<li><p>Protect users from confusion</p>
</li>
<li><p>Level the playing field for legitimate developers</p>
</li>
<li><p>Build trust in AI-powered apps</p>
</li>
</ul>
<h3 id="heading-the-three-driving-forces">The Three Driving Forces</h3>
<p><strong>1. User Experience and Trust</strong></p>
<p>Users were getting confused about which apps were official and which were third-party. When someone searches "ChatGPT" and downloads an app, they should know exactly what they're getting.</p>
<p>Clear branding and transparent data practices solve this. Users make informed decisions, leading to:</p>
<ul>
<li><p>Better app ratings (no more "I thought this was the real ChatGPT" 1-star reviews)</p>
</li>
<li><p>Lower refund rates (users know what they're paying for)</p>
</li>
<li><p>Higher satisfaction (expectations match reality)</p>
</li>
</ul>
<p><strong>2. Protecting Innovation</strong></p>
<p>Companies like OpenAI, Anthropic, and Google invest billions in AI development. When third-party apps use their names without permission, it can:</p>
<ul>
<li><p>Damage the AI company's brand with poor implementations</p>
</li>
<li><p>Create support burdens (users contact OpenAI about third-party app issues)</p>
</li>
<li><p>Discourage the AI companies from keeping APIs accessible</p>
</li>
</ul>
<p>By clarifying trademark usage, Apple protects the AI ecosystem that developers depend on.</p>
<p><strong>3. Regulatory Preparation</strong></p>
<p>The EU's Digital Services Act and upcoming AI regulations require clear data handling disclosures. Apple is getting ahead of requirements that are coming anyway, which means:</p>
<ul>
<li><p>Developers who comply now are ready for future regulations</p>
</li>
<li><p>The App Store maintains its global presence</p>
</li>
<li><p>Users worldwide get consistent privacy standards</p>
</li>
</ul>
<h3 id="heading-what-this-means-for-legitimate-ai-developers">What This Means for Legitimate AI Developers</h3>
<p>If you're building real value with AI, these guidelines help you:</p>
<p><strong>Competitive Advantage:</strong> Apps that comply stand out for transparency and honesty</p>
<p><strong>Sustainable Business:</strong> Build on your own brand equity instead of borrowed recognition</p>
<p><strong>User Retention:</strong> Transparent apps with clear branding have better long-term retention</p>
<p><strong>Future-Proof:</strong> Already compliant with likely future regulations</p>
<h3 id="heading-the-opportunity-in-clear-standards">The Opportunity in Clear Standards</h3>
<p>Markets work best with clear rules. Now you know exactly what's allowed:</p>
<p><strong>What's allowed:</strong></p>
<ul>
<li><p>Using AI APIs in your app</p>
</li>
<li><p>Charging for your features and UX</p>
</li>
<li><p>Marketing your unique capabilities</p>
</li>
<li><p>Building a recognizable brand</p>
</li>
<li><p>Transparent data practices</p>
</li>
</ul>
<p><strong>What's not allowed:</strong></p>
<ul>
<li><p>Using someone else's brand name</p>
</li>
<li><p>Misleading users about affiliation</p>
</li>
<li><p>Hidden data sharing</p>
</li>
<li><p>Confusing branding</p>
</li>
</ul>
<p><strong>This clarity is valuable, now you can build with confidence.</strong></p>
<h2 id="heading-learning-from-non-compliance-what-actually-happens">Learning from Non-Compliance: What Actually Happens</h2>
<p>Let's be realistic about the review process and potential outcomes, so you can make informed decisions.</p>
<h3 id="heading-the-app-review-process-for-guideline-issues">The App Review Process for Guideline Issues</h3>
<p><strong>If Your App Has Issues:</strong></p>
<p><strong>Scenario 1: App Update Submission</strong></p>
<ul>
<li><p>You submit an update</p>
</li>
<li><p>Reviewer flags guideline 4.1(c) or 5.1.2(i) issues</p>
</li>
<li><p>You receive rejection with specific feedback</p>
</li>
<li><p>You fix the issues</p>
</li>
<li><p>You resubmit</p>
</li>
<li><p>Total delay: 3-7 days typically</p>
</li>
</ul>
<p><strong>Scenario 2: Existing App Review</strong></p>
<ul>
<li><p>Apple reviews existing apps periodically</p>
</li>
<li><p>If issues are found, you receive notice to update</p>
</li>
<li><p>You typically have time to address before removal</p>
</li>
<li><p>Fix and submit update</p>
</li>
<li><p>App stays live during fix (usually)</p>
</li>
</ul>
<h3 id="heading-real-timeline-for-resolution">Real Timeline for Resolution</h3>
<p>Based on actual developer experiences:</p>
<p><strong>Week 1: Discovery and Planning</strong></p>
<ul>
<li><p>Receive feedback from review</p>
</li>
<li><p>Assess what needs to change</p>
</li>
<li><p>Plan your approach</p>
</li>
<li><p>Start implementation</p>
</li>
</ul>
<p><strong>Week 2: Implementation</strong></p>
<ul>
<li><p>Make branding changes if needed</p>
</li>
<li><p>Add consent flows</p>
</li>
<li><p>Update privacy declarations</p>
</li>
<li><p>Test thoroughly</p>
</li>
</ul>
<p><strong>Week 3: Resubmission</strong></p>
<ul>
<li><p>Submit updated version</p>
</li>
<li><p>Respond to any review questions</p>
</li>
<li><p>Get approval</p>
</li>
<li><p>Back to normal operation</p>
</li>
</ul>
<p><strong>Most developers resolve issues within 2-3 weeks, not forever.</strong></p>
<h3 id="heading-the-financial-impact-realistic-view">The Financial Impact (Realistic View)</h3>
<p>Let's look at actual numbers from developers who went through this:</p>
<p><strong>Scenario A: Minor Adjustments Needed</strong></p>
<ul>
<li><p>Added consent screens: 4 hours of work</p>
</li>
<li><p>Updated privacy declarations: 1 hour</p>
</li>
<li><p>No branding changes needed</p>
</li>
<li><p>Revenue impact: Minimal, maybe 1-2 days delayed update</p>
</li>
</ul>
<p><strong>Scenario B: Moderate Changes</strong></p>
<ul>
<li><p>Rebranded from "ChatGPT Helper" to "AI Writing Assistant"</p>
</li>
<li><p>Added consent flows</p>
</li>
<li><p>Updated all marketing materials</p>
</li>
<li><p>Revenue impact: 7-10 days of delayed submissions</p>
</li>
<li><p>Long-term: Built stronger independent brand</p>
</li>
</ul>
<p><strong>Scenario C: Significant Overhaul</strong></p>
<ul>
<li><p>Complete rebrand required</p>
</li>
<li><p>Major pricing/positioning changes</p>
</li>
<li><p>Added substantial new features</p>
</li>
<li><p>Revenue impact: 2-3 weeks of lower traffic during transition</p>
</li>
<li><p>Long-term: More sustainable business model</p>
</li>
</ul>
<h3 id="heading-what-actually-matters-long-term">What Actually Matters Long-Term</h3>
<p><strong>Short-term disruption is temporary. Long-term positioning is permanent.</strong></p>
<p>Developers who made these changes report:</p>
<p><strong>Positive Outcomes:</strong></p>
<ul>
<li><p>"Our brand is now more memorable"</p>
</li>
<li><p>"Users trust us more with clear privacy info"</p>
</li>
<li><p>"We're not dependent on riding someone else's brand"</p>
</li>
<li><p>"Our retention actually improved with transparency"</p>
</li>
</ul>
<p><strong>Neutral Outcomes:</strong></p>
<ul>
<li><p>"Traffic dropped initially but recovered in 2-3 months"</p>
</li>
<li><p>"Had to adjust marketing but found new channels"</p>
</li>
<li><p>"Pricing stayed similar, just positioned differently"</p>
</li>
</ul>
<p><strong>Challenges:</strong></p>
<ul>
<li><p>"Initial ASO hit was rough"</p>
</li>
<li><p>"Had to rebuild some brand recognition"</p>
</li>
<li><p>"Customer support questions during transition"</p>
</li>
</ul>
<h3 id="heading-learning-from-others-developer-case-studies">Learning from Others: Developer Case Studies</h3>
<p><strong>Case Study 1: The Rebrand Success</strong></p>
<p>An app called "GPT Chat Pro" rebranded to "SmartWrite AI"</p>
<ul>
<li><p>Month 1: Downloads dropped 60%</p>
</li>
<li><p>Month 2: Built new keyword rankings</p>
</li>
<li><p>Month 3: Downloads recovered to 80% of original</p>
</li>
<li><p>Month 6: Exceeded original numbers with stronger brand</p>
</li>
</ul>
<p><strong>Case Study 2: The Transparency Win</strong></p>
<p>Added clear consent screens and privacy info</p>
<ul>
<li><p>Initial user concern about data sharing</p>
</li>
<li><p>Implemented detailed privacy explanations</p>
</li>
<li><p>User ratings improved from 3.8 to 4.3</p>
</li>
<li><p>Retention increased 15%</p>
</li>
</ul>
<p><strong>Case Study 3: The Feature Pivot</strong></p>
<p>Stopped relying on AI brand confusion, added unique features</p>
<ul>
<li><p>Invested in custom templates and workflows</p>
</li>
<li><p>Justified premium pricing with real features</p>
</li>
<li><p>User base more loyal and less price-sensitive</p>
</li>
<li><p>Business more sustainable</p>
</li>
</ul>
<h3 id="heading-developer-account-standing">Developer Account Standing</h3>
<p><strong>Important clarification:</strong> Apple doesn't ban developers for first-time guideline issues in good faith.</p>
<p><strong>The reality:</strong></p>
<ul>
<li><p>First issues: Guidance and chance to fix</p>
</li>
<li><p>Repeated violations: Increased scrutiny</p>
</li>
<li><p>Bad faith violations: Serious consequences</p>
</li>
</ul>
<p><strong>If you're genuinely trying to comply, Apple works with you.</strong></p>
<h3 id="heading-the-path-forward">The Path Forward</h3>
<p>If you discover your app has compliance issues:</p>
<p><strong>Don't panic.</strong> This is solvable.</p>
<p><strong>Do respond quickly.</strong> Faster action means less disruption.</p>
<p><strong>Do view it as an opportunity.</strong> Many developers report their business improved after compliance.</p>
<p><strong>Don't ignore it.</strong> Issues don't resolve themselves.</p>
<h3 id="heading-resources-for-support">Resources for Support</h3>
<p><strong>Apple Developer Forums:</strong> Other developers share experiences and solutions</p>
<p><strong>App Review Board:</strong> If you have questions about specific guideline interpretations</p>
<p><strong>Developer Relations:</strong> Can provide guidance on complex situations</p>
<p><strong>Professional Services:</strong> Consultants who specialize in App Store compliance</p>
<h3 id="heading-the-bigger-picture">The Bigger Picture</h3>
<p>These guidelines are pushing the AI app ecosystem in a healthier direction:</p>
<ul>
<li><p>Users make informed choices</p>
</li>
<li><p>Developers compete on real value</p>
</li>
<li><p>AI technology remains accessible</p>
</li>
<li><p>Everyone builds sustainable businesses</p>
</li>
</ul>
<p><strong>Compliance isn't a burden, it's a foundation for long-term success.</strong></p>
<h2 id="heading-moving-forward-building-compliant-and-successful-ai-apps">Moving Forward: Building Compliant and Successful AI Apps</h2>
<p>These guideline updates are an opportunity to build better, more sustainable AI apps that users trust.</p>
<h3 id="heading-your-action-plan-summary">Your Action Plan Summary</h3>
<p><strong>If you need to make changes:</strong></p>
<ol>
<li><p><strong>Assess</strong>. Spend 1-2 hours reviewing your app against guidelines</p>
</li>
<li><p><strong>Plan</strong>. Decide what needs to change (branding, consent, both)</p>
</li>
<li><p><strong>Implement</strong>. Allocate a weekend to make changes</p>
</li>
<li><p><strong>Test</strong>. Verify everything works smoothly</p>
</li>
<li><p><strong>Submit</strong>. Update your app with confidence</p>
</li>
</ol>
<p><strong>If you're already compliant:</strong></p>
<p>Congratulations! You're ahead of the curve. Consider:</p>
<ul>
<li><p>Marketing your transparency as a feature</p>
</li>
<li><p>Helping other developers understand compliance</p>
</li>
<li><p>Building additional features that differentiate your app</p>
</li>
</ul>
<h3 id="heading-resources-for-compliance">Resources for Compliance</h3>
<p><strong>Official Apple Resources:</strong></p>
<ul>
<li><p><a target="_blank" href="https://developer.apple.com/app-store/review/guidelines/">App Store Review Guidelines</a></p>
</li>
<li><p><a target="_blank" href="https://developer.apple.com/app-store/app-privacy-details/">App Privacy Details</a></p>
</li>
<li><p><a target="_blank" href="https://developer.apple.com/forums/">Apple Developer Forums</a></p>
</li>
</ul>
<p><strong>Community Resources:</strong></p>
<ul>
<li><p>r/iOSProgramming on Reddit</p>
</li>
<li><p>Indie Hackers community</p>
</li>
<li><p>Developer Twitter/X community</p>
</li>
</ul>
<p><strong>Professional Help:</strong></p>
<ul>
<li><p>App Store consultants</p>
</li>
<li><p>Legal review (for complex situations)</p>
</li>
<li><p>Design services (for rebranding)</p>
</li>
</ul>
<h3 id="heading-the-opportunity-in-clear-standards-1">The Opportunity in Clear Standards</h3>
<p>Markets thrive with clear rules. Now you know exactly:</p>
<p><strong>What's encouraged:</strong></p>
<ul>
<li><p>Original branding that reflects your value</p>
</li>
<li><p>Transparent data practices</p>
</li>
<li><p>Features that justify your pricing</p>
</li>
<li><p>Honest marketing and positioning</p>
</li>
</ul>
<p><strong>What's not allowed:</strong></p>
<ul>
<li><p>Using others' trademarks without permission</p>
</li>
<li><p>Hidden data sharing</p>
</li>
<li><p>Misleading users about affiliation</p>
</li>
</ul>
<p><strong>This clarity lets you build with confidence.</strong></p>
<h3 id="heading-looking-ahead-the-future-of-ai-apps">Looking Ahead: The Future of AI Apps</h3>
<p>The App Store AI ecosystem is maturing. We're moving from a "wild west" phase to an era of professional, trustworthy AI applications.</p>
<p><strong>Trends to watch:</strong></p>
<ul>
<li><p>Increased user sophistication about AI</p>
</li>
<li><p>More competition on features, not brand confusion</p>
</li>
<li><p>Better integrations with multiple AI providers</p>
</li>
<li><p>Specialized AI apps for specific use cases</p>
</li>
</ul>
<p><strong>Successful AI apps will:</strong></p>
<ul>
<li><p>Have distinct brands and clear value propositions</p>
</li>
<li><p>Be transparent about their AI usage</p>
</li>
<li><p>Offer unique features beyond API access</p>
</li>
<li><p>Build genuine user relationships</p>
</li>
</ul>
<h3 id="heading-building-a-sustainable-ai-app-business">Building a Sustainable AI App Business</h3>
<p><strong>Short-term thinking:</strong> Ride on someone else's brand recognition, hope users don't notice</p>
<p><strong>Long-term thinking:</strong> Build your own brand, earn trust through transparency, create real value</p>
<p><strong>These guidelines push everyone toward long-term thinking, which is healthier for your business.</strong></p>
<h3 id="heading-join-the-conversation">Join the Conversation</h3>
<p>Share your experience:</p>
<ul>
<li><p>How did you make your app compliant?</p>
</li>
<li><p>What challenges did you face?</p>
</li>
<li><p>What opportunities did you discover?</p>
</li>
</ul>
<p>The developer community learns from sharing experiences. Your story helps others navigate these changes.</p>
<h3 id="heading-final-thoughts">Final Thoughts</h3>
<p>Change feels uncomfortable, but it often leads to better outcomes. These guidelines push developers toward building stronger, more trustworthy AI apps that compete on genuine value.</p>
<p><strong>This is your chance to:</strong></p>
<ul>
<li><p>Build a stronger brand</p>
</li>
<li><p>Earn deeper user trust</p>
</li>
<li><p>Create a more sustainable business</p>
</li>
<li><p>Position yourself as a quality developer</p>
</li>
</ul>
<p><strong>The work you put in now will pay dividends for years.</strong></p>
<h3 id="heading-get-started-today">Get Started Today</h3>
<p>Don't overthink it. Pick one thing and start:</p>
<p><strong>Option 1:</strong> Review your app name and description, does it need updating?</p>
<p><strong>Option 2:</strong> Check if you have proper consent screens, if not, add them.</p>
<p><strong>Option 3:</strong> Read through the official guidelines, understand what's expected.</p>
<p><strong>The journey to compliance starts with a single step. Take it today.</strong></p>
<hr />
<h3 id="heading-questions-or-need-help">Questions or Need Help?</h3>
<p>If you're unsure about specific situations:</p>
<ul>
<li><p>Post in Apple Developer Forums</p>
</li>
<li><p>Join r/iOSProgramming discussions</p>
</li>
<li><p>Reach out to other developers who've gone through this</p>
</li>
</ul>
<p><strong>The community wants to help you succeed.</strong></p>
<p>Remember: These guidelines aren't obstacles. They're guardrails that help everyone build better apps in a healthier ecosystem.</p>
<p><strong>Good luck building your compliant, successful AI app!</strong></p>
]]></content:encoded></item><item><title><![CDATA[The Secret to Building App Store-Ready Mobile Apps with Lovable + Despia]]></title><description><![CDATA[If you've been building web apps with Lovable.dev, you already know it's incredible for rapid prototyping. But here's what most people don't realize: you can turn those same apps into real native mobile apps that ship to the App Store and Google Play...]]></description><link>https://blog.despia.com/the-secret-to-building-app-store-ready-mobile-apps-with-lovable-despia</link><guid isPermaLink="true">https://blog.despia.com/the-secret-to-building-app-store-ready-mobile-apps-with-lovable-despia</guid><category><![CDATA[iOS]]></category><category><![CDATA[Android]]></category><category><![CDATA[lovable]]></category><category><![CDATA[Lovable ai]]></category><category><![CDATA[lovable.dev]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Thu, 13 Nov 2025 08:40:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/KrYbarbAx5s/upload/cf6d0eb7a1263309ac39aa7c96ebe276.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you've been building web apps with <a target="_blank" href="http://Lovable.dev">Lovable.dev</a>, you already know it's incredible for rapid prototyping. But here's what most people don't realize: you can turn those same apps into <strong>real native mobile apps</strong> that ship to the App Store and Google Play Store - without writing Swift or Kotlin.</p>
<p>The secret? <a target="_blank" href="https://despia.com"><strong>Despia</strong></a> <strong>+ a custom knowledge prompt.</strong></p>
<h2 id="heading-the-problem-most-developers-face">The Problem Most Developers Face</h2>
<p>You build something beautiful in Lovable. You're excited. Then you try to convert it to mobile and... frustration sets in:</p>
<ul>
<li><p>Native features don't work properly</p>
</li>
<li><p>Safe areas and notches look broken</p>
</li>
<li><p>In-app purchases won't integrate</p>
</li>
<li><p>Your app gets rejected by Apple or Google</p>
</li>
</ul>
<p>The issue isn't Lovable or Despia - it's that <strong>Lovable doesn't know how to code specifically for Despia's native runtime</strong> unless you tell it.</p>
<h2 id="heading-the-solution-custom-knowledge">The Solution: Custom Knowledge</h2>
<p>Lovable has a powerful feature called <strong>Custom Knowledge</strong> (found in Settings) where you can teach it domain-specific information. When you add the right prompt about Despia, Lovable suddenly knows exactly how to:</p>
<ul>
<li><p>Structure pages for mobile (with proper scrolling and safe areas)</p>
</li>
<li><p>Implement native features using Despia's SDK</p>
</li>
<li><p>Handle iOS and Android design patterns</p>
</li>
<li><p>Integrate RevenueCat for in-app purchases</p>
</li>
<li><p>Access device-specific capabilities</p>
</li>
</ul>
<h2 id="heading-the-magic-prompt">The Magic Prompt</h2>
<p>Here's the exact custom knowledge prompt you need to add in <strong>Lovable &gt; Settings &gt; Custom Knowledge</strong>:</p>
<pre><code class="lang-markdown">We are using Despia EXCLUSIVELY for Native Functionalities please refer to: https://lovable.despia.com/default-guide/how-it-works
You can access all Despia Features via the websites sitemap: https://lovable.despia.com/sitemap.xml
<span class="hljs-bullet">-</span> Every time you are asked to add a native feature &gt; go to the Despia Sitemap &gt; find the appropriate one &gt; scrape the feature page and then implement it.

PAGE STRUCTURE (IMPORTANT!)
Make sure that ALL pages have a main section (most outer element containing the page) with a fixed height of 100vh - the first component of those core pages would be a relative top bar (iOS Style) and under that we have an app container (the app container is the only thing that would scroll) it will be flex grow / shrink and make sure that the scrollbar is width "none" under that add a relative menubar with the menu options.

SAFE AREAS
Make sure to add Safe Area Insets via the Despia Safe Area Variables (explained below) to the top-bar / top-padding and the menubar / bottom-padding.
Here is how it works with Despia:
Use CSS variables for safe area handling in your application. The Despia native runtime automatically provides var(--safe-area-top) and var(--safe-area-bottom) CSS variables.
Add spacer divs at the top and bottom of your layout
Set the height of spacer divs to var(--safe-area-top) and var(--safe-area-bottom)
Use CSS variables in padding or height styles for fixed positioned elements
Ensure fixed positioned elements respect device boundaries
Handle device notches, status bars, and home indicators automatically
This feature is automatically provided by the Despia Native runtime - no npm package installation required!
Please follow the implementation instructions closely. The CSS variables are injected by the Despia Native runtime environment.

IMPLEMENT REVENUECAT LIKE THIS:
Add native mobile monetization to my app using the Despia SDK from: https://www.npmjs.com/package/despia-native
First, install the package: npm install despia-native
Then import it: import despia from 'despia-native'
Create a payment system that uses RevenueCat Paywalls by calling: despia(revenuecat://launchPaywall?external<span class="hljs-emphasis">_id={USER_</span>ID}&amp;offering={OFFERING})
This will launch a native paywall interface configured in your RevenueCat dashboard, handling purchases through Apple App Store and Google Play billing.
Add a button to launch the paywall for your app's offerings, for example:
"default" - your main offering
"premium" - premium tier offering
"annual<span class="hljs-emphasis">_sale" - special promotional offering
If you prefer to design 100% custom paywalls that match your app's unique design and branding, consider our RevenueCat Payments SDK instead: https://lovable.despia.com/default-guide/native-features/revenuecat
The Despia Native Runtime will call the global function onRevenueCatPurchase() when an in-app purchase or subscription is successfully made on the client side. Although this should not grant access immediately, it's a good time to start polling your backend to check if the RevenueCat webhook has already updated the user's status or plan permissions.
This feature requires native capabilities which will be fully provided by the "despia-native" npm package, no additional native libraries are needed!
Payment confirmation will happen via RevenueCat's Webhooks, so make sure to include or instruct me to set up the correct backend structure.
You can find the documentation about this here: https://www.revenuecat.com/docs/integrations/webhooks
Read and follow all best practices for Webhook events here: https://www.revenuecat.com/docs/integrations/webhooks/event-types-and-fields
Check out the sample Webhook event schemas here: https://www.revenuecat.com/docs/integrations/webhooks/sample-events
Once the payment is confirmed on the backend, the backend should send a webhook to the frontend to let it know that this user's in-app purchase session was completed.
Please follow the installation instructions for the "despia-native" npm package closely, and do not modify my instructions. Implementation as mentioned is critical.</span>
</code></pre>
<h2 id="heading-what-this-prompt-does">What This Prompt Does</h2>
<p>Once you add this to Lovable's Custom Knowledge, the AI will:</p>
<ol>
<li><p><strong>Structure pages correctly</strong> - Fixed 100vh containers with proper scrolling</p>
</li>
<li><p><strong>Handle safe areas automatically</strong> - No more content hiding under notches or home indicators</p>
</li>
<li><p><strong>Implement native features</strong> - By referencing Despia's documentation dynamically</p>
</li>
<li><p><strong>Set up in-app purchases</strong> - Full RevenueCat integration with proper webhook handling</p>
</li>
<li><p><strong>Follow mobile-first best practices</strong> - iOS and Android design patterns baked in</p>
</li>
</ol>
<h2 id="heading-the-workflow-from-idea-to-app-store">The Workflow: From Idea to App Store</h2>
<p>Here's how the complete process works:</p>
<h3 id="heading-step-1-add-custom-knowledge">Step 1: Add Custom Knowledge</h3>
<p>Go to Lovable &gt; Settings &gt; Custom Knowledge and paste the prompt above.</p>
<h3 id="heading-step-2-build-your-app-in-lovable">Step 2: Build Your App in Lovable</h3>
<p>Tell Lovable what you want to build. Now it knows how to structure everything for mobile:</p>
<p><em>"Build me a fitness tracking app with workout logging, progress charts, and a premium subscription"</em></p>
<p>Lovable will automatically:</p>
<ul>
<li><p>Create mobile-optimized layouts with safe areas</p>
</li>
<li><p>Add proper scrolling containers</p>
</li>
<li><p>Structure it ready for Despia conversion</p>
</li>
</ul>
<h3 id="heading-step-3-add-native-features">Step 3: Add Native Features</h3>
<p>Ask for specific native capabilities:</p>
<p><em>"Add local push notifications to remind users about workouts"</em> <em>"Add Face ID authentication"</em> <em>"Implement a premium subscription paywall"</em></p>
<p>Lovable will reference Despia's documentation and implement these correctly using the despia-native SDK.</p>
<h3 id="heading-step-4-export-to-despia">Step 4: Export to Despia</h3>
<p>Once your app is ready in Lovable, connect it to Despia to compile it into native mobile apps.</p>
<h3 id="heading-step-5-publish">Step 5: Publish</h3>
<p>Submit to the App Store and Google Play. Because everything was built with proper native patterns, your approval chances skyrocket.</p>
<h2 id="heading-why-this-changes-everything">Why This Changes Everything</h2>
<p><strong>Before this prompt:</strong></p>
<ul>
<li><p>Developers waste hours fixing safe area issues</p>
</li>
<li><p>Native features break or don't work</p>
</li>
<li><p>Apps get rejected for poor mobile UX</p>
</li>
<li><p>Converting web to mobile feels painful</p>
</li>
</ul>
<p><strong>After this prompt:</strong></p>
<ul>
<li><p>Pages automatically follow mobile-first structure</p>
</li>
<li><p>Native features work flawlessly</p>
</li>
<li><p>Safe areas handled automatically</p>
</li>
<li><p>Apps feel truly native and get approved</p>
</li>
</ul>
<h2 id="heading-real-world-impact">Real-World Impact</h2>
<p>Imagine building:</p>
<ul>
<li><p>A meditation app with local notifications and in-app subscriptions</p>
</li>
<li><p>A meal planning app with camera access and Apple/Google Pay</p>
</li>
<li><p>A productivity tool with biometric authentication</p>
</li>
</ul>
<p>All of this, starting from a chat interface in Lovable, then shipping to millions of users via app stores - in a fraction of the time traditional development would take.</p>
<h2 id="heading-the-bottom-line">The Bottom Line</h2>
<p>The combination of Lovable + Despia + this custom knowledge prompt is genuinely revolutionary. You get:</p>
<ul>
<li><p>AI-powered development speed</p>
</li>
<li><p>Real native mobile capabilities</p>
</li>
<li><p>App Store/Play Store approval</p>
</li>
<li><p>No Swift or Kotlin required</p>
</li>
<li><p>Full control over your codebase</p>
</li>
</ul>
<p>The secret isn't just using these tools - it's teaching Lovable how to use them correctly through custom knowledge. Most developers skip this step and wonder why things don't work. Now you know better.</p>
<hr />
<p><strong>Ready to build?</strong> Add the custom knowledge prompt to Lovable today and start shipping real mobile apps. Your next app idea is just a conversation away.</p>
]]></content:encoded></item><item><title><![CDATA[Lovable to App Store]]></title><description><![CDATA[Who this is for
Non-technical founders, entrepreneurs, and hustlers who want an App Store presence without learning Swift or wrestling with Xcode.
What You will Ship

A real iOS app powered by your React UI

Native features through Despia, including ...]]></description><link>https://blog.despia.com/lovable-to-app-store</link><guid isPermaLink="true">https://blog.despia.com/lovable-to-app-store</guid><category><![CDATA[lovable]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Fri, 10 Oct 2025 01:56:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1760061389966/f28377b3-90bc-4de4-9a40-f121eaf57133.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-who-this-is-for">Who this is for</h2>
<p>Non-technical founders, entrepreneurs, and hustlers who want an App Store presence without learning Swift or wrestling with Xcode.</p>
<h2 id="heading-what-you-will-ship">What You will Ship</h2>
<ul>
<li><p>A real iOS app powered by your React UI</p>
</li>
<li><p>Native features through Despia, including push notifications, biometrics, haptics, share sheet, contacts, widgets, in-app purchases with RevenueCat, and more</p>
</li>
<li><p>An App Store listing with TestFlight builds and a repeatable release pipeline</p>
</li>
</ul>
<h2 id="heading-at-a-glance">At a Glance</h2>
<ul>
<li><p>Build your product in Lovable using simple English prompts.</p>
</li>
<li><p>Add native features through Despia to make the app feel truly native.</p>
</li>
<li><p>Include a bottom mobile menu bar with tabs like Home, Search, Create, Inbox, and Profile.</p>
</li>
<li><p>Meet Apple's minimum functionality guideline 4.2 by delivering useful app-like features, not just a website wrapper.</p>
</li>
<li><p>Expect a fast, responsive experience as modern web views are GPU-accelerated and run smoothly at sixty frames per second.</p>
</li>
</ul>
<hr />
<h2 id="heading-step-1-build-with-lovable-in-plain-english">Step 1 - Build with Lovable in Plain English</h2>
<p>Describe the product exactly as you would brief a teammate. For example, a simple CRM with contacts, notes, and reminders. Lovable generates the React codebase and lets you iterate quickly as you refine flows and copy. Add a short project knowledge section so the app structure anticipates deep links, push, and in-app purchases.</p>
<h3 id="heading-pro-tip">Pro tip</h3>
<p>Write your goals, user stories, and native features you plan to use so Lovable scaffolds screens and components with a mobile-first layout.</p>
<hr />
<h2 id="heading-step-2-add-native-superpowers-with-despia">Step 2 - Add Native Superpowers with Despia</h2>
<p><strong>This is what Apple looks for!</strong> Add at least two meaningful native capabilities tied to your core journey.</p>
<h3 id="heading-good-starters">Good Starters</h3>
<ul>
<li><p>Push notifications for reminders or updates</p>
</li>
<li><p>Face ID or Touch ID to secure sensitive screens</p>
</li>
<li><p>Haptics for clear tactile feedback on key actions</p>
</li>
<li><p>RevenueCat for subscriptions or one-time purchases</p>
</li>
<li><p>Share sheet for sharing content</p>
</li>
<li><p>Contacts picker when your flow involves people or invites</p>
</li>
<li><p>Widgets for quick access actions</p>
</li>
</ul>
<p>These are true native calls and integrate safely with device hardware and system UI.</p>
<hr />
<h2 id="heading-step-3-design-for-mobile-use-a-bottom-menu-bar">Step 3 - Design for Mobile use a Bottom Menu Bar</h2>
<p>Even if your web app has a top navbar, give the app a native feel with a bottom menu bar. Common tabs include Home, Search, Create, Inbox, and Profile. Make sure to respect safe areas so the interface looks great on all iPhone models. This simple change improves usability and shows App Review that you've created a real app experience, not just a basic website wrapper.</p>
<hr />
<h2 id="heading-step-4-connect-despia-and-ship-to-testflight">Step 4 - Connect Despia and Ship to TestFlight</h2>
<ul>
<li><p>Link your Apple Developer account inside Despia</p>
</li>
<li><p>Register the main bundle identifier and any helper bundles for notifications, share extensions, widgets, and app clips when used</p>
</li>
<li><p>Add the required app groups one time</p>
</li>
<li><p>Create your App Store Connect listing and paste the Apple identifier back into Despia</p>
</li>
<li><p>Publish to deliver a build to TestFlight, then invite testers and iterate</p>
</li>
</ul>
<p><strong>Over-the-air content updates allow you to change the UI text and logic in your React app without needing a full binary resubmission, as long as the configuration remains the same.</strong></p>
<hr />
<h2 id="heading-apple-minimum-functionality-what-it-really-means">Apple Minimum Functionality - What it Really Means!</h2>
<p>Guideline 4.2 requires apps to be useful and feel like real apps. To meet this, include the following:</p>
<ul>
<li><p>Real navigation with a bottom tab bar or menu bar</p>
</li>
<li><p>At least two important native integrations, such as push notifications and biometrics, or in-app purchases and a share sheet</p>
</li>
<li><p>Deep links that open the correct screens inside your app instead of in mobile Safari when needed</p>
</li>
<li><p>Some offline capability for key screens so the app isn't useless without an internet connection</p>
</li>
<li><p>A simple settings screen with options for privacy policy, version info, sign out, and notification toggles</p>
</li>
</ul>
<p>Following this checklist helps avoid the common rejection of "this is just a website."</p>
<hr />
<h2 id="heading-debunking-web-view-myths-in-2025">Debunking Web View Myths in 2025</h2>
<ol>
<li><p><strong>Myth One: Web Views are slow and janky</strong><br /> <strong>Reality:</strong> Modern runtimes are GPU-accelerated and deliver smooth 60fps on native devices. With Lovable and Despia, the bridge queues commands efficiently and works with the device UI like a first-class citizen.</p>
</li>
<li><p><strong>Myth Two: Apple hates Web Views</strong><br /> <strong>Reality:</strong> Apple rejects thin wrappers that feel like a website. <strong>Apple approves apps that include native features, deep links, thoughtful navigation, and real in-app flows. This is exactly what minimum functionality requires.</strong></p>
</li>
<li><p><strong>Myth Three: You Cannot Monetize</strong><br /> <strong>Reality:</strong> You can. Use RevenueCat for purchases and subscriptions, and pair it with push notifications for lifecycle messaging. These integrate into your Lovable app through Despia native calls.</p>
</li>
</ol>
<hr />
<h2 id="heading-a-weekend-launch-plan">A Weekend Launch Plan</h2>
<ul>
<li><p><strong>Day 1:</strong></p>
<ol>
<li><p>Scaffold your app in Lovable with a crisp product prompt</p>
</li>
<li><p>Add 2-3 native features like Push, Haptics, or RevenueCat <strong>(our top pick!)</strong></p>
</li>
<li><p>Add the bottom tab bar and adjust your mobile layout with safe area spacing</p>
</li>
</ol>
</li>
<li><p><strong>Day 2:</strong></p>
<ol>
<li><p>In Despia, link your Apple account, create bundle identifiers and app groups, then create the App Store listing and publish to TestFlight</p>
</li>
<li><p>Test your flows, polish copy, upload screenshots, and submit for review once the fundamentals are solid</p>
</li>
</ol>
</li>
</ul>
<hr />
<h2 id="heading-common-gotchas-and-quick-fixes">Common gotchas and quick fixes</h2>
<ol>
<li><p><strong>Provisioning or Bundle Errors:</strong> Make sure your main bundle and helper bundles exist and are linked to the correct app group before building.</p>
</li>
<li><p><strong>Rejected for Minimum Functionality:</strong> Add the tab bar, enable push notifications or biometrics, add a share sheet or contacts, and mention these in your App Review notes.</p>
</li>
<li><p><strong>TestFlight Build Not Appearing:</strong> Confirm internal testers are set up and give Apple some time to process the build.</p>
</li>
</ol>
<hr />
<h2 id="heading-copy-and-paste-prompt-starter-for-lovable">Copy and Paste Prompt Starter for Lovable</h2>
<pre><code class="lang-plaintext">- Goal: A Clean Mobile First App with Native Features for App Store Launch - Excusively using Despia Native as the Native Runtime Bridge (Read and Examine: https://lovable.despia.com)

- Primary Screens: Home Feed, Search, Create, Inbox, Profile, Settings

- Native features (Read all the pages below and follow them closely - add the sample prompts from them into the README.md)
1. Push Notifications (https://lovable.despia.com/default-guide/native-features/onesignal and/or https://lovable.despia.com/default-guide/native-features/local-push),
2. Haptics (https://lovable.despia.com/default-guide/native-features/haptic-feedback),
3. Deep Links (https://lovable.despia.com/default-guide/native-features/deeplinking),
4. Share Sheet (https://lovable.despia.com/default-guide/native-features/social-share-dialog),
5. RevenueCat via Despia (https://lovable.despia.com/default-guide/native-features/revenuecat)

- Navigation: Bottom Tab Bar with 5 Tabs + Safe Area Spacing using: https://lovable.despia.com/default-guide/native-features/fullscreen-safe-area

- Performance: Smooth Scrolling, Quick Transitions and Responsive Taps
</code></pre>
<hr />
<h2 id="heading-next-step">Next Step</h2>
<p>Open your Lovable project, add your product prompt, and include the bottom menu bar. Request Lovable to integrate Face ID and haptics using Despia, link Despia to your Apple account, and publish to TestFlight.</p>
<h3 id="heading-you-are-closer-to-your-app-store-icon-than-you-think">You are closer to your App Store icon than you think! 🚀📲</h3>
<ul>
<li>Use <a target="_blank" href="https://despia.com">https://despia.com</a> to Ship your Lovable App to the AppStore in a Weekend!</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Building a Complete iOS App with Apple Sign-In, In-App Purchases, and Push Notifications in Under 2 Hours]]></title><description><![CDATA[https://www.youtube.com/watch?v=lvtdUK7ucFo&t=4210s
 
Building a production-ready mobile app with authentication, payments, and real-time features typically takes weeks. But what if you could build it in an afternoon? In this tutorial, we'll walk thr...]]></description><link>https://blog.despia.com/building-a-complete-ios-app-with-apple-sign-in-in-app-purchases-and-push-notifications-in-under-2-hours</link><guid isPermaLink="true">https://blog.despia.com/building-a-complete-ios-app-with-apple-sign-in-in-app-purchases-and-push-notifications-in-under-2-hours</guid><category><![CDATA[native]]></category><category><![CDATA[lovable]]></category><category><![CDATA[despia]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Wed, 10 Sep 2025 20:03:38 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/G3q7mxXkP-M/upload/cb2752dc78dd4e138dbca9ddc39940a4.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=lvtdUK7ucFo&amp;t=4210s">https://www.youtube.com/watch?v=lvtdUK7ucFo&amp;t=4210s</a></div>
<p> </p>
<p>Building a production-ready mobile app with authentication, payments, and real-time features typically takes weeks. But what if you could build it in an afternoon? In this tutorial, we'll walk through creating a complete iOS application with native Apple Sign-In, in-app purchases, and push notifications using Lovable, Supabase, and Despia.</p>
<h2 id="heading-what-well-build">What We'll Build</h2>
<p>By the end of this tutorial, you'll have a fully functional iOS app featuring:</p>
<ul>
<li><p><strong>Native Apple Sign-In</strong> with the beautiful Apple JS modal (no ugly redirects)</p>
</li>
<li><p><strong>In-app purchases</strong> with RevenueCat integration</p>
</li>
<li><p><strong>Real-time UI updates</strong> via WebSockets with fallback polling</p>
</li>
<li><p><strong>Push notifications</strong> for purchase confirmations</p>
</li>
<li><p><strong>Secure backend</strong> with proper row-level security</p>
</li>
<li><p><strong>Cross-device sync</strong> for user accounts and purchases</p>
</li>
</ul>
<h2 id="heading-why-this-approach-matters">Why This Approach Matters</h2>
<p>Most tutorials show you basic OAuth flows that redirect to external URLs, breaking the native app experience. We'll implement Apple JS directly to maintain that polished, native feel users expect from iOS apps.</p>
<h2 id="heading-setting-up-the-foundation">Setting Up the Foundation</h2>
<h3 id="heading-1-create-your-lovable-project">1. Create Your Lovable Project</h3>
<p>Start with a blank Lovable project and connect it to Supabase. Lovable will automatically detect that you haven't created any tables yet and guide you through the setup process.</p>
<h3 id="heading-2-configure-apple-developer-account">2. Configure Apple Developer Account</h3>
<p>Head to your Apple Developer Console and create the necessary identifiers:</p>
<p><strong>Create a Service ID:</strong></p>
<ol>
<li><p>Go to Identifiers → Services IDs → Create new</p>
</li>
<li><p>Description: "My App Apple Auth"</p>
</li>
<li><p>Identifier: <code>com.yourcompany.myapp.appleauth</code></p>
</li>
<li><p>Configure Sign in with Apple</p>
</li>
<li><p>Add your domains and return URLs:</p>
<ul>
<li><p>Domains: Your Lovable app URLs (both published and preview)</p>
</li>
<li><p>Return URL: <a target="_blank" href="https://yourapp.com/oauth/apple"><code>https://yourapp.com/oauth/apple</code></a></p>
</li>
</ul>
</li>
</ol>
<p><strong>Enable Apple Sign-In for Your App ID:</strong></p>
<ol>
<li><p>Find your main App ID in the console</p>
</li>
<li><p>Enable "Sign in with Apple" capability</p>
</li>
<li><p>Configure as primary App ID</p>
</li>
</ol>
<p><strong>Create an Authentication Key:</strong></p>
<ol>
<li><p>Go to Keys → Create new key</p>
</li>
<li><p>Name: "My App Apple Auth"</p>
</li>
<li><p>Enable "Sign in with Apple"</p>
</li>
<li><p>Download the key file (you can only do this once!)</p>
</li>
</ol>
<h3 id="heading-3-implement-apple-sign-in-with-lovable">3. Implement Apple Sign-In with Lovable</h3>
<p>The key insight here is that we need to use Apple JS instead of Supabase's built-in OAuth to maintain the native experience:</p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Set up login with Apple using Apple JS. I need to use Apple JS because it's mandatory for my use case to avoid redirects that break the native workflow.</div>
</div>

<p>Lovable will analyze your requirements and create a comprehensive implementation plan:</p>
<ul>
<li><p>Configure Apple Developer credentials</p>
</li>
<li><p>Implement Apple JS SDK integration</p>
</li>
<li><p>Create custom authentication flow</p>
</li>
<li><p>Set up database schemas</p>
</li>
<li><p>Handle user profile management</p>
</li>
</ul>
<h2 id="heading-implementing-the-payment-system">Implementing the Payment System</h2>
<h3 id="heading-4-set-up-revenuecat-integration">4. Set Up RevenueCat Integration</h3>
<p>With authentication working, we can add in-app purchases. Use the Despia documentation prompt for RevenueCat:</p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">The purchase gives users 10 coins. Set up the webhooks to add coins to the users' logged-in account in Supabase via RevenueCat webhooks.</div>
</div>

<p>This creates:</p>
<ul>
<li><p>A <code>user_coins</code> table linked to authenticated users</p>
</li>
<li><p>RevenueCat webhook endpoint for purchase events</p>
</li>
<li><p>Automatic coin crediting system</p>
</li>
<li><p>Real-time UI updates when purchases complete</p>
</li>
</ul>
<h3 id="heading-5-configure-revenuecat-webhooks">5. Configure RevenueCat Webhooks</h3>
<p>In your RevenueCat dashboard:</p>
<ol>
<li><p>Go to Integrations → Webhooks</p>
</li>
<li><p>Add your Lovable webhook URL</p>
</li>
<li><p>Set up authentication headers for security</p>
</li>
<li><p>Select "All Events" to capture purchases, renewals, and refunds</p>
</li>
</ol>
<h2 id="heading-adding-real-time-features">Adding Real-Time Features</h2>
<h3 id="heading-6-implement-websocket-reliability">6. Implement WebSocket Reliability</h3>
<p>The challenge with real-time features is handling network interruptions. We implement a robust system:</p>
<ul>
<li><p><strong>Primary</strong>: Supabase WebSocket subscriptions for instant updates</p>
</li>
<li><p><strong>Fallback</strong>: Polling every 30 seconds if WebSockets fail</p>
</li>
<li><p><strong>Aggressive mode</strong>: Enhanced polling for 5 minutes after purchase attempts</p>
</li>
<li><p><strong>Smart reconnection</strong>: Exponential backoff with automatic retry logic</p>
</li>
</ul>
<h3 id="heading-7-add-push-notifications-with-onesignal">7. Add Push Notifications with OneSignal</h3>
<p>For the ultimate user experience, we add native push notifications:</p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Implement OneSignal Player ID binding on app load for logged-in users. When the user does a RevenueCat payment event, send a push notification confirming their purchase.</div>
</div>

<p>This creates:</p>
<ul>
<li><p>Device registration system linking OneSignal Player IDs to users</p>
</li>
<li><p>Server-side push notification triggers</p>
</li>
<li><p>Purchase confirmation notifications</p>
</li>
<li><p>Cross-device notification support</p>
</li>
</ul>
<h2 id="heading-security-best-practices">Security Best Practices</h2>
<h3 id="heading-8-implement-row-level-security">8. Implement Row-Level Security</h3>
<p>Lovable's security scanner will identify potential vulnerabilities:</p>
<ul>
<li><p><strong>Issue</strong>: Edge functions with excessive database access</p>
</li>
<li><p><strong>Solution</strong>: Implement proper RLS policies</p>
</li>
<li><p><strong>Result</strong>: Users can only access their own data</p>
</li>
</ul>
<h3 id="heading-9-handle-edge-cases">9. Handle Edge Cases</h3>
<p>Real-world apps need to handle complex scenarios:</p>
<ul>
<li><p><strong>Email changes</strong>: Users changing their iCloud email but keeping the same Apple account</p>
</li>
<li><p><strong>Device switching</strong>: Maintaining access across iPhone, iPad, Mac</p>
</li>
<li><p><strong>Network issues</strong>: Graceful degradation when connectivity is poor</p>
</li>
<li><p><strong>Purchase failures</strong>: Proper error handling and retry mechanisms</p>
</li>
</ul>
<h2 id="heading-the-results">The Results</h2>
<p>What you get is remarkable:</p>
<ul>
<li><p><strong>Native experience</strong>: Beautiful Apple Sign-In modal, no external redirects</p>
</li>
<li><p><strong>Instant feedback</strong>: Real-time coin updates and push notifications</p>
</li>
<li><p><strong>Cross-platform sync</strong>: Works seamlessly across all Apple devices</p>
</li>
<li><p><strong>Production ready</strong>: Proper security, error handling, and performance optimization</p>
</li>
<li><p><strong>Development speed</strong>: Built in under 2 hours instead of weeks</p>
</li>
</ul>
<h2 id="heading-key-takeaways">Key Takeaways</h2>
<ol>
<li><p><strong>Use Apple JS over standard OAuth</strong> for native iOS apps to maintain the polished user experience</p>
</li>
<li><p><strong>Implement robust fallback systems</strong> - WebSockets are great when they work, but you need polling as backup</p>
</li>
<li><p><strong>Security scanning is essential</strong> - AI can build fast, but you need to verify security practices</p>
</li>
<li><p><strong>Real-time updates require multiple strategies</strong> - combine WebSockets, polling, and push notifications</p>
</li>
<li><p><strong>Testing edge cases matters</strong> - plan for network issues, device changes, and user behavior variations</p>
</li>
</ol>
<h2 id="heading-whats-next">What's Next?</h2>
<p>This foundation gives you everything needed for a production iOS app. You could extend it with:</p>
<ul>
<li><p>Subscription management</p>
</li>
<li><p>Advanced analytics</p>
</li>
<li><p>Social features</p>
</li>
<li><p>Content delivery</p>
</li>
<li><p>Advanced notification targeting</p>
</li>
</ul>
<p>The combination of Lovable's AI development, Supabase's backend infrastructure, and Despia's native capabilities makes it possible to build sophisticated mobile apps in record time without sacrificing quality or security.</p>
<p><strong>The future of app development is here, and it's faster than you think.</strong></p>
]]></content:encoded></item><item><title><![CDATA[Making Your Despia App Feel Super Native with CSS]]></title><description><![CDATA[One of the best things about building with Despia is how your app runs with native-level performance out of the box. The runtime is hardware-accelerated and tuned for modern devices, so your UI can feel just as smooth as apps written directly in Swif...]]></description><link>https://blog.despia.com/making-your-despia-app-feel-super-native-with-css</link><guid isPermaLink="true">https://blog.despia.com/making-your-despia-app-feel-super-native-with-css</guid><category><![CDATA[despia]]></category><category><![CDATA[CSS]]></category><category><![CDATA[CSS Animation]]></category><category><![CDATA[native]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Thu, 04 Sep 2025 13:22:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1756992084700/37d4cf6c-0cf5-4f3c-8332-7a79be6a9cf3.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One of the best things about building with Despia is how your app runs with native-level performance out of the box. The runtime is hardware-accelerated and tuned for modern devices, so your UI can feel just as smooth as apps written directly in Swift or Kotlin.</p>
<p>But here’s a detail many developers miss:</p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">🤓</div>
<div data-node-type="callout-text">If you want your app to feel extra smooth on modern devices, though, you can unlock GPU acceleration with a few lines of CSS.</div>
</div>

<p>If you want your app to feel extra smooth on modern devices, though, you can unlock GPU acceleration with a few lines of CSS.</p>
<hr />
<h2 id="heading-why-cpu-animations-arent-always-enough">Why CPU Animations Aren’t Always Enough</h2>
<p>CPU-driven animations work fine for simple transitions. But when you’re sliding in a drawer, animating a modal, or moving a bottom sheet, the CPU can start to struggle. That’s when you’ll notice stutter or frame drops.</p>
<p>On both iOS and Android, the solution is to push those animations to the GPU. That’s where the motion becomes fluid and “native-feeling.”</p>
<h2 id="heading-the-gpu-unlock">The GPU Unlock</h2>
<p>Here’s how to enable GPU-friendly animations everywhere:</p>
<pre><code class="lang-css"><span class="hljs-comment">/* Default: GPU-safe animations */</span>
<span class="hljs-selector-class">.drawer</span> {
  <span class="hljs-attribute">will-change</span>: transform;
  <span class="hljs-attribute">transform</span>: <span class="hljs-built_in">translate3d</span>(-<span class="hljs-number">100%</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>);
  <span class="hljs-attribute">transition</span>: transform <span class="hljs-number">0.3s</span> ease-out;
}

<span class="hljs-comment">/* Motion accessibility: respect reduced motion */</span>
<span class="hljs-keyword">@media</span> (<span class="hljs-attribute">prefers-reduced-motion:</span> reduce) {
  <span class="hljs-selector-class">.drawer</span> {
    <span class="hljs-attribute">transition</span>: none <span class="hljs-meta">!important</span>;
    <span class="hljs-attribute">transform</span>: none <span class="hljs-meta">!important</span>;
  }
}
</code></pre>
<h2 id="heading-why-this-matters-in-despia">Why This Matters in Despia</h2>
<p>Despia is already optimized for native performance. By default, it keeps animations on the CPU for cross-platform consistency. That’s a smart default, not every device handles GPU transforms equally well.</p>
<p>But on modern devices it’s safe, and recommended, to switch drawers, panels, and other heavy UI transitions to GPU transforms. That’s how you unlock the last 10% of polish.</p>
<h2 id="heading-when-to-use-it">When to Use It</h2>
<ul>
<li><p>Drawers &amp; side menus, biggest payoff since they move large chunks of UI.</p>
</li>
<li><p>Bottom sheets &amp; modals, keeps them sliding smoothly.</p>
</li>
<li><p>Interactive panels, anything the user swipes or drags.</p>
</li>
<li><p>Low-end or motion-sensitive devices, fall back gracefully with <code>prefers-reduced-motion</code>.</p>
</li>
</ul>
<h2 id="heading-wrap-up">Wrap Up</h2>
<p>Despia gives you a runtime that’s already tuned for native performance. CPU animations are the default for compatibility, but by switching to GPU transforms you can let the hardware handle it:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">will-change</span>: <span class="hljs-selector-tag">transform</span>;
<span class="hljs-selector-tag">transform</span>: <span class="hljs-selector-tag">translate3d</span>(<span class="hljs-selector-tag">-100</span>%, 0, 0);
</code></pre>
<p>It’s a small tweak, but it makes your app feel super native where it matters most. Your users won’t see the code, but they’ll definitely feel the difference when they swipe open that drawer.</p>
]]></content:encoded></item><item><title><![CDATA[Building Your First Native Mobile App with Lovable.dev]]></title><description><![CDATA[A lot of developers have been asking about the fastest way to get started with Despia. Here's a workflow that's been working really well: using Lovable.dev to build your React app, then bringing it into Despia for native deployment.
The Setup
Lovable...]]></description><link>https://blog.despia.com/building-your-first-native-mobile-app-with-lovabledev</link><guid isPermaLink="true">https://blog.despia.com/building-your-first-native-mobile-app-with-lovabledev</guid><category><![CDATA[despia]]></category><category><![CDATA[lovable]]></category><category><![CDATA[Lovable ai]]></category><category><![CDATA[vibe coding]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Thu, 04 Sep 2025 01:37:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1756949661655/dd76b9ee-c7e7-4a55-98fb-804ec30f1fa1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A lot of developers have been asking about the fastest way to get started with Despia. Here's a workflow that's been working really well: using Lovable.dev to build your React app, then bringing it into Despia for native deployment.</p>
<h2 id="heading-the-setup">The Setup</h2>
<p>Lovable.dev is an AI-powered development environment that generates React applications from natural language. It's particularly useful for Despia because it outputs clean, production-ready React code that integrates perfectly with our SDK.</p>
<p>Here's the basic workflow we'll walk through:</p>
<h2 id="heading-start-with-your-idea">Start with Your Idea</h2>
<p>Go to Lovable.dev and describe what you want to build. Be specific about features. For this example, let's build a habit tracker:</p>
<p><em>"Build a habit tracking app with daily check-ins, streak counters, and statistics. Include a clean interface with cards for each habit."</em></p>
<p>Lovable generates the entire React application instantly. You get components, routing, state management - everything's already wired up.</p>
<h2 id="heading-integrate-the-despia-sdk">Integrate the Despia SDK</h2>
<p>Once you have your base app, add the Despia SDK to enable native features:</p>
<pre><code class="lang-bash">npm install despia-native
</code></pre>
<p>Now you can enhance your app with native capabilities. Here's what that looks like in practice:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> despia <span class="hljs-keyword">from</span> <span class="hljs-string">'despia-native'</span>;

<span class="hljs-comment">// When user completes a habit</span>
<span class="hljs-keyword">const</span> markHabitComplete = <span class="hljs-keyword">async</span> (habitId) =&gt; {
  <span class="hljs-comment">// Native haptic feedback</span>
  <span class="hljs-keyword">await</span> despia(<span class="hljs-string">'successhaptic://'</span>);

  <span class="hljs-comment">// Update your state</span>
  setHabits(<span class="hljs-function"><span class="hljs-params">prev</span> =&gt;</span> ...);

  <span class="hljs-comment">// Send local notification for tomorrow</span>
  <span class="hljs-keyword">await</span> despia(<span class="hljs-string">'sendlocalpushmsg://push.send?s=86400&amp;msg=Time for your daily habits!'</span>);
};
</code></pre>
<h2 id="heading-common-integration-points">Common Integration Points</h2>
<p>Based on what we've seen from developers, here are the most useful native features to add to a Lovable-generated app:</p>
<h3 id="heading-haptic-feedback">Haptic Feedback</h3>
<p>Add tactile responses to important interactions:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Button presses</span>
<span class="hljs-keyword">await</span> despia(<span class="hljs-string">'lighthaptic://'</span>);

<span class="hljs-comment">// Success states</span>
<span class="hljs-keyword">await</span> despia(<span class="hljs-string">'successhaptic://'</span>);

<span class="hljs-comment">// Errors or warnings</span>
<span class="hljs-keyword">await</span> despia(<span class="hljs-string">'errorhaptic://'</span>);
</code></pre>
<h3 id="heading-local-notifications">Local Notifications</h3>
<p>For scheduled notifications without a backend:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> scheduleReminder = <span class="hljs-keyword">async</span> (seconds, message) =&gt; {
  <span class="hljs-keyword">await</span> despia(<span class="hljs-string">`sendlocalpushmsg://push.send?s=<span class="hljs-subst">${seconds}</span>&amp;msg=<span class="hljs-subst">${message}</span>`</span>);
};
</code></pre>
<p>Despia includes OneSignal integration for push notifications. Here's how to connect users to your backend:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Get the OneSignal player ID from Despia</span>
<span class="hljs-keyword">const</span> setupPushNotifications = <span class="hljs-keyword">async</span> () =&gt; {
  <span class="hljs-comment">// Register for push notifications</span>
  <span class="hljs-keyword">await</span> despia(<span class="hljs-string">'registerpush://'</span>);

  <span class="hljs-comment">// Get OneSignal player ID</span>
  <span class="hljs-keyword">const</span> data = <span class="hljs-keyword">await</span> despia(<span class="hljs-string">'getonesignalplayerid://'</span>, [<span class="hljs-string">'onesignalplayerid'</span>]);
  <span class="hljs-keyword">const</span> playerId = data.onesignalplayerid;

  <span class="hljs-comment">// Send to your backend to link with user</span>
  <span class="hljs-keyword">await</span> fetch(<span class="hljs-string">'https://api.yourapp.com/users/link-onesignal'</span>, {
    <span class="hljs-attr">method</span>: <span class="hljs-string">'POST'</span>,
    <span class="hljs-attr">headers</span>: { <span class="hljs-string">'Content-Type'</span>: <span class="hljs-string">'application/json'</span> },
    <span class="hljs-attr">body</span>: <span class="hljs-built_in">JSON</span>.stringify({
      <span class="hljs-attr">userId</span>: getCurrentUserId(),
      <span class="hljs-attr">oneSignalPlayerId</span>: playerId
    })
  });
};
</code></pre>
<p>On your backend, store this relationship:</p>
<pre><code class="lang-sql"><span class="hljs-comment">-- Simple linking table</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> user_push_tokens (
  user_id <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>),
  onesignal_player_id <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">255</span>),
  created_at <span class="hljs-built_in">TIMESTAMP</span>
);
</code></pre>
<p>Now you can send targeted push notifications from your backend:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Backend API example - send notification to specific user</span>
<span class="hljs-keyword">const</span> sendPushToUser = <span class="hljs-keyword">async</span> (userId, message) =&gt; {
  <span class="hljs-comment">// Get player ID from your database</span>
  <span class="hljs-keyword">const</span> playerId = <span class="hljs-keyword">await</span> db.query(
    <span class="hljs-string">'SELECT onesignal_player_id FROM user_push_tokens WHERE user_id = ?'</span>,
    [userId]
  );

  <span class="hljs-comment">// Send via OneSignal API</span>
  <span class="hljs-keyword">await</span> fetch(<span class="hljs-string">'https://onesignal.com/api/v1/notifications'</span>, {
    <span class="hljs-attr">method</span>: <span class="hljs-string">'POST'</span>,
    <span class="hljs-attr">headers</span>: {
      <span class="hljs-string">'Content-Type'</span>: <span class="hljs-string">'application/json'</span>,
      <span class="hljs-string">'Authorization'</span>: <span class="hljs-string">'Basic YOUR_ONESIGNAL_API_KEY'</span>
    },
    <span class="hljs-attr">body</span>: <span class="hljs-built_in">JSON</span>.stringify({
      <span class="hljs-attr">app_id</span>: <span class="hljs-string">'YOUR_ONESIGNAL_APP_ID'</span>,
      <span class="hljs-attr">include_player_ids</span>: [playerId],
      <span class="hljs-attr">contents</span>: { <span class="hljs-attr">en</span>: message },
      <span class="hljs-attr">headings</span>: { <span class="hljs-attr">en</span>: <span class="hljs-string">'New Update'</span> }
    })
  });
};
</code></pre>
<h3 id="heading-local-notifications-1">Local Notifications</h3>
<p>For scheduled notifications without a backend:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> scheduleReminder = <span class="hljs-keyword">async</span> (seconds, message) =&gt; {
  <span class="hljs-keyword">await</span> despia(<span class="hljs-string">`sendlocalpushmsg://push.send?s=<span class="hljs-subst">${seconds}</span>&amp;msg=<span class="hljs-subst">${message}</span>`</span>);
};
</code></pre>
<h3 id="heading-in-app-purchases">In-App Purchases</h3>
<p>Monetize with RevenueCat integration:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> upgradeToPro = <span class="hljs-keyword">async</span> () =&gt; {
  <span class="hljs-keyword">const</span> userId = getUserId();
  <span class="hljs-keyword">await</span> despia(<span class="hljs-string">`revenuecat://purchase?external_id=<span class="hljs-subst">${userId}</span>&amp;product=pro_monthly`</span>);
};
</code></pre>
<h2 id="heading-testing-your-integration">Testing Your Integration</h2>
<p>The Despia simulator shows you exactly how your app will behave on actual devices. This is crucial for testing haptics, notifications, and other native features that don't work in a browser.</p>
<p>A helpful pattern is to check if you're running in Despia:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> isDespia = navigator.userAgent.includes(<span class="hljs-string">'despia'</span>);

<span class="hljs-keyword">const</span> saveData = <span class="hljs-keyword">async</span> (data) =&gt; {
  <span class="hljs-keyword">if</span> (isDespia) {
    <span class="hljs-keyword">await</span> despia(<span class="hljs-string">'lighthaptic://'</span>);
  }
  <span class="hljs-comment">// Continue with save logic</span>
};
</code></pre>
<h2 id="heading-performance-considerations">Performance Considerations</h2>
<p>When combining Lovable output with Despia, keep these points in mind:</p>
<ol>
<li><p><strong>State Management</strong> - Lovable typically uses React state. This works perfectly with Despia's native runtime.</p>
</li>
<li><p><strong>Asset Optimization</strong> - Lovable generates optimized images, but consider using native caching:</p>
<pre><code class="lang-javascript"> <span class="hljs-keyword">await</span> despia(<span class="hljs-string">`savethisimage://?url=<span class="hljs-subst">${imageUrl}</span>`</span>);
</code></pre>
</li>
<li><p><strong>Navigation</strong> - Lovable's React Router works seamlessly. Add haptics to route changes for better UX:</p>
<pre><code class="lang-javascript"> <span class="hljs-keyword">const</span> navigate = <span class="hljs-function">(<span class="hljs-params">path</span>) =&gt;</span> {
   despia(<span class="hljs-string">'lighthaptic://'</span>);
   history.push(path);
 };
</code></pre>
</li>
</ol>
<h2 id="heading-deployment-options">Deployment Options</h2>
<p>After integrating Despia features into your Lovable app, you have two powerful deployment options:</p>
<h3 id="heading-option-1-direct-url-link-recommended-for-speed">Option 1: Direct URL Link (Recommended for Speed)</h3>
<p>Simply link your Lovable app URL directly to Despia:</p>
<ol>
<li><p>Get your Lovable app URL (e.g., <code>https://your-app.lovable.app</code>)</p>
</li>
<li><p>Paste it into <a target="_blank" href="https://despia.com/">Despia.com</a></p>
</li>
<li><p>Configure your native settings</p>
</li>
<li><p>Click "Publish"</p>
</li>
</ol>
<p>Your app now enjoys <strong>over-the-air updates</strong> - any changes you make in Lovable instantly appear in your published app without resubmitting to app stores.</p>
<h3 id="heading-option-2-self-hosted-url">Option 2: Self-Hosted URL</h3>
<p>If you prefer to self-host:</p>
<ol>
<li><p>Export from Lovable and deploy to your own hosting</p>
</li>
<li><p>Link your live URL to Despia (e.g., <code>https://your-domain.com</code>)</p>
</li>
<li><p>Configure and publish</p>
</li>
</ol>
<p>This gives you complete control while still enabling instant OTA updates whenever you update your hosted code.</p>
<p>The entire process typically takes about 30 minutes. Despia automates the entire deployment pipeline, so you don't need Xcode, Android Studio, or any knowledge of app store submission processes.</p>
<h2 id="heading-real-example-task-manager">Real Example: Task Manager</h2>
<p>Here's a complete component showing Lovable + Despia integration:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> React, { useState } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> despia <span class="hljs-keyword">from</span> <span class="hljs-string">'despia-native'</span>;

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">TaskList</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> [tasks, setTasks] = useState([]);

  <span class="hljs-keyword">const</span> addTask = <span class="hljs-keyword">async</span> (task) =&gt; {
    <span class="hljs-comment">// Haptic feedback</span>
    <span class="hljs-keyword">await</span> despia(<span class="hljs-string">'lighthaptic://'</span>);

    <span class="hljs-comment">// Add to state</span>
    setTasks([...tasks, task]);

    <span class="hljs-comment">// Schedule reminder</span>
    <span class="hljs-keyword">if</span> (task.reminder) {
      <span class="hljs-keyword">await</span> despia(<span class="hljs-string">`sendlocalpushmsg://push.send?s=3600&amp;msg=Task due: <span class="hljs-subst">${task.name}</span>`</span>);
    }
  };

  <span class="hljs-keyword">const</span> completeTask = <span class="hljs-keyword">async</span> (id) =&gt; {
    <span class="hljs-comment">// Success feedback</span>
    <span class="hljs-keyword">await</span> despia(<span class="hljs-string">'successhaptic://'</span>);

    <span class="hljs-comment">// Update task</span>
    setTasks(tasks.map(<span class="hljs-function"><span class="hljs-params">t</span> =&gt;</span> 
      t.id === id ? {...t, <span class="hljs-attr">complete</span>: <span class="hljs-literal">true</span>} : t
    ));

    <span class="hljs-comment">// Take screenshot for sharing</span>
    <span class="hljs-keyword">await</span> despia(<span class="hljs-string">'takescreenshot://'</span>);
  };

  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      {tasks.map(task =&gt; (
        <span class="hljs-tag">&lt;<span class="hljs-name">TaskCard</span> 
          <span class="hljs-attr">key</span>=<span class="hljs-string">{task.id}</span>
          <span class="hljs-attr">task</span>=<span class="hljs-string">{task}</span>
          <span class="hljs-attr">onComplete</span>=<span class="hljs-string">{()</span> =&gt;</span> completeTask(task.id)}
        /&gt;
      ))}
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  );
}
</code></pre>
<h2 id="heading-common-patterns">Common Patterns</h2>
<p>Through working with developers, we've identified patterns that work well:</p>
<p><strong>Progressive Enhancement</strong> - Start with core functionality in Lovable, then layer on native features where they add value.</p>
<p><strong>Feature Detection</strong> - Always check if running in Despia before calling native APIs.</p>
<p><strong>User Feedback</strong> - Use haptics liberally. Users expect tactile feedback in native apps.</p>
<h2 id="heading-debugging-tips">Debugging Tips</h2>
<p>When something isn't working:</p>
<ol>
<li><p>Check the Despia console for any SDK errors</p>
</li>
<li><p>Verify you're using the correct command format: <code>feature://action?params</code></p>
</li>
<li><p>Test in the Despia simulator, not just your browser</p>
</li>
<li><p>Make sure the SDK is properly imported</p>
</li>
</ol>
<h2 id="heading-next-steps">Next Steps</h2>
<p>Once you're comfortable with the basic integration:</p>
<ul>
<li><p>Explore widgets for home screen presence</p>
</li>
<li><p>Implement background location for fitness apps</p>
</li>
<li><p>Add Siri shortcuts for quick actions</p>
</li>
<li><p>Set up push notifications with OneSignal</p>
</li>
</ul>
<p>The combination of Lovable's rapid development and Despia's native capabilities means you can build production apps faster than ever. The key is starting simple and progressively adding native features where they enhance the user experience.</p>
<h2 id="heading-resources">Resources</h2>
<ul>
<li><p><a target="_blank" href="https://docs.despia.com/">Despia SDK Documentation</a></p>
</li>
<li><p><a target="_blank" href="https://www.npmjs.com/package/despia-native">NPM Package Documentation</a></p>
</li>
<li><p><a target="_blank" href="https://lovable.dev/">Lovable.dev</a></p>
</li>
</ul>
<p>Have questions about integrating Lovable with Despia? Check out our docs at <a target="_blank" href="https://docs.despia.com/">docs.despia.com</a> or reach out to our team at <a target="_blank" href="mailto:support@despia.com">support@despia.com</a></p>
]]></content:encoded></item><item><title><![CDATA[WeWeb PWAs vs. WeWeb Native Apps with Despia: What You Really Need to Know]]></title><description><![CDATA[If you’re building with WeWeb, you already have a big advantage: speed. You can launch complex applications in days, not months. But at some point, you’ll need to decide how your users actually experience that app:

As a Progressive Web App (PWA), wh...]]></description><link>https://blog.despia.com/weweb-pwas-vs-weweb-native-apps-with-despia-what-you-really-need-to-know</link><guid isPermaLink="true">https://blog.despia.com/weweb-pwas-vs-weweb-native-apps-with-despia-what-you-really-need-to-know</guid><category><![CDATA[despia]]></category><category><![CDATA[weweb]]></category><category><![CDATA[native]]></category><category><![CDATA[No Code]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Fri, 29 Aug 2025 23:09:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1756508858406/4ca72e78-3373-47a9-a5bb-5e365222e01d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you’re building with <strong>WeWeb</strong>, you already have a big advantage: speed. You can launch complex applications in days, not months. But at some point, you’ll need to decide how your users actually experience that app:</p>
<ul>
<li><p>As a <strong>Progressive Web App (PWA)</strong>, which runs in the browser.</p>
</li>
<li><p>Or as a <strong>native app</strong> compiled and published through <a target="_blank" href="https://despia.com"><strong>Despia</strong></a>.</p>
</li>
</ul>
<p>Both paths are valid, and both come with trade-offs. I’ve been digging into the differences - especially now that Despia has released a native WeWeb plugin - and here’s what I’ve found.</p>
<hr />
<h2 id="heading-why-pwas-still-matter">Why PWAs Still Matter</h2>
<p>PWAs get overlooked sometimes, but they’re still incredibly powerful. A WeWeb PWA is basically your app running in the browser, with the option for users to “install” it to their home screen.</p>
<p>The upside is obvious:</p>
<ul>
<li><p>You can launch instantly - no waiting on app store approval.</p>
</li>
<li><p>You have one codebase that works across devices.</p>
</li>
<li><p>Costs stay low, since all you need is hosting.</p>
</li>
</ul>
<p>The downside is equally clear:</p>
<ul>
<li><p>Native integrations (Face ID, push notifications, offline databases, background tasks) are limited or inconsistent.</p>
</li>
<li><p>You won’t be listed in the App Store or Google Play.</p>
</li>
<li><p>Some users don’t think of a PWA as a “real app,” even if the experience is good.</p>
</li>
</ul>
<p>PWAs are perfect for early-stage projects, or tools that don’t rely on mobile hardware.</p>
<hr />
<h2 id="heading-where-despia-changes-the-game">Where Despia Changes the Game</h2>
<p>Despia has been around as a way to wrap WeWeb apps into native binaries. But the recent <strong>native WeWeb plugin</strong> makes it much smoother. You can now install Despia directly from the <a target="_blank" href="https://marketplace.weweb.io/libraries/1a493afa-9487-44e3-8cb9-8fe666fbf10e/">WeWeb Marketplace</a>, follow no-code-friendly guides, and tap into a huge range of native features.</p>
<p>Here’s what that really means in practice:</p>
<ul>
<li><p>You can build with WeWeb as usual, but also use native capabilities like biometric login, background location, NFC, Siri, push notifications, offline databases, and even GPU-based rendering.</p>
</li>
<li><p>You still don’t need to touch Xcode or Android Studio. Despia handles the signing, builds, and submissions.</p>
</li>
<li><p>Updates aren’t painful. Thanks to <strong>over-the-air updates</strong>, you can push changes live to your native app when you update your WeWeb project, similar to how CodePush works.</p>
</li>
</ul>
<p>In short: Despia takes away much of the friction that usually comes with going native.</p>
<hr />
<h2 id="heading-comparing-the-two">Comparing the Two</h2>
<p>When you strip away the technical details, the comparison looks like this:</p>
<ul>
<li><p><strong>PWAs</strong> are fast, lightweight, and cost-effective. Great for testing ideas or shipping tools that don’t depend on native features.</p>
</li>
<li><p><strong>Despia native apps</strong> give you app store visibility, access to everything a modern phone can do, and a more polished, native-like feel.</p>
</li>
</ul>
<p>The big difference isn’t just functionality - it’s perception. An app in the App Store signals legitimacy in a way a PWA never will, even if the code behind them is the same.</p>
<hr />
<h2 id="heading-so-which-should-you-choose">So, Which Should You Choose?</h2>
<p>If you’re at the stage where you just need to validate an idea, go with a <strong>PWA</strong>. It’s the fastest and cheapest option.</p>
<p>If you’re moving into production, want to reach a broader audience, or need serious device integration, then <strong>Despia is the way forward</strong>. The fact that you can now go native with minimal extra effort makes that decision even easier.</p>
<hr />
<h2 id="heading-final-thoughts">Final Thoughts</h2>
<p>I don’t see this as an either/or question anymore. The real power of WeWeb and Despia is that you can start as a PWA and upgrade to native when the time is right - without rebuilding your app or switching platforms.</p>
<p>That flexibility is rare in app development, and it’s one of the reasons WeWeb + Despia is such an interesting combination for makers and teams right now.</p>
]]></content:encoded></item><item><title><![CDATA[What is Despia?]]></title><description><![CDATA[https://www.youtube.com/watch?v=OnsNQektzmg
 
In the world of mobile app development, there's always been a stark divide: build native apps with platform-specific languages, or settle for web-based solutions with limited device access. Despia is chan...]]></description><link>https://blog.despia.com/what-is-despia</link><guid isPermaLink="true">https://blog.despia.com/what-is-despia</guid><category><![CDATA[native]]></category><category><![CDATA[Apple]]></category><category><![CDATA[mobile app development]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Android]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Wed, 23 Jul 2025 17:59:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1753293232219/7332682f-3c25-47f3-ae05-1a97c9d25be0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=OnsNQektzmg">https://www.youtube.com/watch?v=OnsNQektzmg</a></div>
<p> </p>
<p>In the world of mobile app development, there's always been a stark divide: build native apps with platform-specific languages, or settle for web-based solutions with limited device access. Despia is changing this narrative by introducing a sophisticated native runtime that transforms any web application into a genuine native mobile app – without sacrificing performance or functionality.</p>
<h2 id="heading-what-is-despia-really">What is Despia Really?</h2>
<h3 id="heading-beyond-the-webview-stigma">Beyond the Webview Stigma</h3>
<p>Let's address the elephant in the room: Yes, Despia uses a webview at its core. But before you close this tab, understand that Despia is to webviews what a Formula 1 car is to a go-kart – they might share some basic principles, but the engineering, performance, and capabilities are worlds apart.</p>
<p>Despia is a comprehensive native framework that:</p>
<ul>
<li><p>Provides a GPU-powered rendering engine with hardware acceleration</p>
</li>
<li><p>Includes pre-built native SDKs for extensive device functionality</p>
</li>
<li><p>Offers modular native targets for advanced features like widgets and app clips</p>
</li>
<li><p>Handles the entire build and distribution pipeline automatically</p>
</li>
</ul>
<h2 id="heading-how-despia-actually-works">How Despia Actually Works</h2>
<h3 id="heading-the-four-pillars-of-native-power">The Four Pillars of Native Power</h3>
<p>Despia's architecture consists of several sophisticated components working in harmony:</p>
<h4 id="heading-1-gpu-powered-rendering-engine">1. GPU-Powered Rendering Engine</h4>
<p>At its heart, Despia uses Apple's WKWebView and Android's WebView, but with extensive hardware acceleration tuning. This isn't your typical webview wrapper – it's a highly optimized rendering engine that achieves smooth 60fps performance through GPU acceleration.</p>
<h4 id="heading-2-pre-built-native-sdks">2. Pre-Built Native SDKs</h4>
<p>Unlike traditional webview apps, Despia packages extensive native functionality directly into the compiled application. From biometric authentication to background location tracking, these aren't plugins you need to install – they're part of the runtime itself.</p>
<h4 id="heading-3-the-core-framework">3. The Core Framework</h4>
<p>This defines build phases, configurations, and native behaviors like status bar appearance and navigation gestures. It's the foundation that makes your web app feel truly native.</p>
<h4 id="heading-4-modular-native-targets">4. Modular Native Targets</h4>
<p>Want widgets? App clips? Share extensions? These are conditionally compiled based on your needs, ensuring your app only includes what it uses.</p>
<h3 id="heading-the-windowdespia-bridge-zero-dependencies-maximum-power">The Window.Despia Bridge: Zero Dependencies, Maximum Power</h3>
<p>The magic happens through the <code>window.despia</code> interface – but this isn't just another JavaScript API. It's a sophisticated protocol handler system that bridges your web code directly to native functionality.</p>
<h4 id="heading-no-npm-no-problem">No NPM, No Problem</h4>
<p><strong>Here's the beauty of it: The Despia SDK doesn't require any npm packages or JavaScript dependencies.</strong> There's nothing to install in your web codebase. The SDK is compiled directly into the native Swift and Java/Kotlin code that Despia generates.</p>
<h4 id="heading-behind-the-magic">Behind the Magic</h4>
<p>When you write:</p>
<pre><code class="lang-javascript"><span class="hljs-built_in">window</span>.despia = <span class="hljs-string">"feature://parameters"</span>
</code></pre>
<p>Here's what happens:</p>
<ol>
<li><p>Protocol intercepted by Despia's runtime</p>
</li>
<li><p>Securely routed to native SDK</p>
</li>
<li><p>Permissions handled automatically</p>
</li>
<li><p>Results returned to JavaScript</p>
</li>
</ol>
<h4 id="heading-real-native-features-real-simple-code">Real Native Features, Real Simple Code</h4>
<p>Real examples:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Create a home screen widget with live data</span>
<span class="hljs-keyword">const</span> svg = <span class="hljs-string">"https://your-backend.com/api/widget"</span>
<span class="hljs-keyword">const</span> refresh_time = <span class="hljs-number">10</span>  <span class="hljs-comment">// in minutes</span>
<span class="hljs-built_in">window</span>.despia = <span class="hljs-string">`widget://<span class="hljs-subst">${svg}</span>?refresh=<span class="hljs-subst">${refresh_time}</span>`</span>

<span class="hljs-comment">// Request push notification permission</span>
<span class="hljs-built_in">window</span>.despia = <span class="hljs-string">"registerpush://"</span>

<span class="hljs-comment">// Install an eSIM card</span>
<span class="hljs-built_in">window</span>.despia = <span class="hljs-string">`esim://?carddata=<span class="hljs-subst">${cardData}</span>`</span>
</code></pre>
<p>This elegantly simple approach means:</p>
<ul>
<li><p>No complex libraries to import</p>
</li>
<li><p>No dependency management headaches</p>
</li>
<li><p>No version conflicts</p>
</li>
<li><p>Works with any framework or no-code platform</p>
</li>
</ul>
<h2 id="heading-universal-platform-support">Universal Platform Support</h2>
<h3 id="heading-build-once-run-everywhere">Build Once, Run Everywhere</h3>
<p>Despia works with any web stack:</p>
<ul>
<li><p><strong>WeWeb</strong> - Build visually and deploy natively</p>
</li>
<li><p><strong>Webflow</strong> - Turn your designs into apps</p>
</li>
<li><p><strong>Wized</strong> - Add complex logic and interactions</p>
</li>
<li><p><strong>Nordcraft (Toddle)</strong> - Advanced no-code development</p>
</li>
<li><p><strong>Any JavaScript Framework</strong> - React, Vue, Angular, Svelte</p>
</li>
<li><p><strong>Any hosting</strong> - Vercel, Netlify, Cloudflare</p>
</li>
</ul>
<p>If it has a URL, Despia can turn it into a native app.</p>
<h2 id="heading-despia-v3-where-performance-meets-simplicity">Despia V3: Where Performance Meets Simplicity</h2>
<h3 id="heading-the-game-changing-features">The Game-Changing Features</h3>
<p>The latest version introduces game-changing enhancements to the runtime:</p>
<h3 id="heading-1-gpu-accelerated-everything">1. GPU-Accelerated Everything</h3>
<p>V3's rendering engine delivers consistent 60fps performance through advanced hardware acceleration. Animations, transitions, and scrolling feel indistinguishable from apps built with Swift or Kotlin.</p>
<h3 id="heading-2-smart-caching-that-learns">2. Smart Caching That Learns</h3>
<p>The V3 runtime intelligently manages:</p>
<ul>
<li><p>Asset preloading and storage</p>
</li>
<li><p>State persistence across sessions</p>
</li>
<li><p>Predictive resource caching</p>
</li>
</ul>
<p>Result: Instant load times that feel native because they are native.</p>
<h3 id="heading-3-native-processing-power">3. Native Processing Power</h3>
<p>V3's most innovative feature: offload compute-intensive tasks from JavaScript to native code. Currently supporting biometric verification and haptic feedback, with AI processing capabilities planned.</p>
<h3 id="heading-4-platform-perfect-ux">4. Platform-Perfect UX</h3>
<p>V3 automatically enhances your web app with:</p>
<ul>
<li><p>Native touch gesture refinement</p>
</li>
<li><p>Platform-specific scroll physics</p>
</li>
<li><p>Contextual haptic feedback</p>
</li>
<li><p>OS-matched swipe navigation</p>
</li>
</ul>
<h3 id="heading-5-beyond-the-app">5. Beyond the App</h3>
<p>V3 enables features most native developers struggle with:</p>
<ul>
<li><p><strong>WidgetKit Widgets</strong>: Live home screen widgets</p>
</li>
<li><p><strong>App Clips</strong>: Instant experiences without download</p>
</li>
<li><p><strong>Share Extensions</strong>: Receive content from other apps</p>
</li>
<li><p><strong>3D Touch Shortcuts</strong>: Quick actions from home screen</p>
</li>
</ul>
<h3 id="heading-6-one-click-everything">6. One-Click Everything</h3>
<p>Despia runs on M2 Mac minis in the cloud:</p>
<ul>
<li><p>Automatic iOS and Android builds</p>
</li>
<li><p>Code signing with your certificates</p>
</li>
<li><p>Direct store submission</p>
</li>
<li><p>Over-the-air updates</p>
</li>
<li><p>Full source code export</p>
</li>
</ul>
<h2 id="heading-why-this-approach-solves-the-native-gap">Why This Approach Solves the Native Gap</h2>
<h3 id="heading-the-problem-web-developers-face">The Problem Web Developers Face</h3>
<p>Web applications have always struggled to access device-level features that native apps take for granted:</p>
<ul>
<li><p>Background processes and location tracking</p>
</li>
<li><p>Hardware access like biometrics and haptics</p>
</li>
<li><p>System integration (widgets, app clips, share extensions)</p>
</li>
</ul>
<p>This creates a capability gap between what users expect from mobile apps and what web technologies can traditionally deliver.</p>
<h3 id="heading-despias-solution-instant-native-powers">Despia's Solution: Instant Native Powers</h3>
<p>Despia closes this gap without the traditional complexity:</p>
<ul>
<li><p><strong>One line of code</strong> unlocks each native feature</p>
</li>
<li><p><strong>Zero dependencies</strong> - no npm packages or libraries to manage</p>
</li>
<li><p><strong>Cross-platform by default</strong> - iOS and Android from the same code</p>
</li>
<li><p><strong>No-code compatible</strong> - works perfectly with WeWeb, Wized, Webflow, Nordcraft and others</p>
</li>
<li><p><strong>Future-proof</strong> - as Despia adds SDKs, your implementation stays the same</p>
</li>
</ul>
<h3 id="heading-compared-to-react-native">Compared to React Native</h3>
<p>React Native uses "real" native UI elements but suffers from the JavaScript bridge bottleneck. Ironically, Flutter (which powers FlutterFlow) uses zero native UI elements – it draws everything using the Skia engine via GPU, similar to how Despia's GPU-accelerated webview renders HTML/CSS.</p>
<h3 id="heading-compared-to-flutterflutterflow">Compared to Flutter/FlutterFlow</h3>
<p>Both Flutter and Despia use GPU rendering for UI elements. The key differences:</p>
<ul>
<li><p>Flutter can achieve 120fps vs Despia's 60fps (though this is rarely noticeable)</p>
</li>
<li><p>Despia offers instant over-the-air updates without app review</p>
</li>
<li><p>Despia provides web development flexibility and ecosystem access</p>
</li>
</ul>
<h2 id="heading-real-time-updates-the-game-changer">Real-Time Updates: The Game Changer</h2>
<p>One of Despia's killer features is instant updates. Change your paywall, fix a bug, or roll out new features – your changes go live immediately without App Store approval. This combines the best of Expo and CodePush but with fewer limitations since it's built on web technologies.</p>
<h2 id="heading-the-bottom-line">The Bottom Line</h2>
<p>Despia isn't trying to hide what it is – it's a sophisticated native runtime built on webview technology, engineered to deliver native performance and functionality. Just as modern cars still use wheels like horse carriages did, the underlying technology matters less than the implementation.</p>
<p>With thousands of native files, GPU acceleration, extensive native SDKs, and modular architecture, Despia delivers:</p>
<ul>
<li><p>True native performance (60fps)</p>
</li>
<li><p>Full device feature access</p>
</li>
<li><p>Instant updates without app review</p>
</li>
<li><p>Single codebase for all platforms</p>
</li>
<li><p>No native development knowledge required</p>
</li>
</ul>
<h2 id="heading-getting-started-with-v3">Getting Started with V3</h2>
<p>Ready to experience the future of mobile development? Despia V3 is now available at <a target="_blank" href="https://v3.despia.com/">v3.despia.com</a>. Whether you're building with WeWeb, Webflow, or vanilla JavaScript, you can have a native app running in under an hour – no Mac required, no native code to write.</p>
<p><em>As the creator says: "I wanted the freedom of building a web application with the competitive edge of native features." That's exactly what Despia delivers.</em></p>
]]></content:encoded></item><item><title><![CDATA[How Despia was Created]]></title><description><![CDATA[In 2011, long before hybrid mobile frameworks were common, John created a lightweight runtime called Advanced Web View. At just 14 years old, he built a framework that allowed web apps to be packaged into native iOS and Android binaries. It filled a ...]]></description><link>https://blog.despia.com/how-despia-was-created</link><guid isPermaLink="true">https://blog.despia.com/how-despia-was-created</guid><category><![CDATA[cicd]]></category><category><![CDATA[iOS]]></category><category><![CDATA[ios app development]]></category><category><![CDATA[android app development]]></category><category><![CDATA[Android]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Sun, 29 Jun 2025 20:32:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/tysecUm5HJA/upload/fa0be90b7b8b109e0869b86b9d261a37.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In 2011, long before hybrid mobile frameworks were common, John created a lightweight runtime called <strong>Advanced Web View</strong>. At just 14 years old, he built a framework that allowed web apps to be packaged into native iOS and Android binaries. It filled a technical gap that wasn’t broadly addressed at the time and quietly became a foundational tool for web-to-native workflows.</p>
<p>This framework predated popular solutions like Capacitor and served as a foundational prototype for hybrid app development before the category had a name.</p>
<p>In 2024, John partnered with <strong>NoCode ProCode</strong>, a tool-builder and content creator in the no-code space, to bring the framework into a modern context. Instead of competing with Capacitor-based solutions, they combined their strengths to build something new.</p>
<p>The result is <strong>Despia</strong>, a platform that merges a proven hybrid runtime with a one-click build pipeline, native SDK access, and automatic code signing. The platform is designed for developers, product teams, and no-code users looking for a fast, reliable path from web app to native deployment.</p>
<hr />
<h2 id="heading-a-modern-architecture-for-web-to-native-conversion">A Modern Architecture for Web-to-Native Conversion</h2>
<p>Despia combines two layers of functionality. The first is the core hybrid runtime, rewritten to meet current iOS and Android standards. The second is a cloud-based toolchain for deployment, code signing, and continuous delivery.</p>
<p>The platform provides:</p>
<ul>
<li><p>One-click iOS and Android builds</p>
</li>
<li><p>Automatic provisioning and certificate management</p>
</li>
<li><p>Native SDK integrations including push notifications, biometrics, system access, secure storage via iCloud, and more</p>
</li>
<li><p>A JavaScript bridge for custom native interactions</p>
</li>
<li><p>Source code export for full control and flexibility</p>
</li>
<li><p>Optimized native containers for performance and UX</p>
</li>
</ul>
<p>Despia supports any modern frontend framework and integrates easily with no-code tools like WeWeb, Nordcraft, and others.</p>
<hr />
<h2 id="heading-built-on-a-proven-foundation">Built on a Proven Foundation</h2>
<p>Unlike newer tools built from scratch, Despia is grounded in over a decade of development history. The underlying framework was originally created in 2011 and has been used in thousands of applications over the years.</p>
<p>In 2024, the entire runtime was re-engineered for stability, security, and compliance with current app store requirements. This includes support for modern iOS and Android versions, native permission handling, and safe-area compatibility across devices.</p>
<p>With these updates, the platform now offers a developer-grade solution that’s approachable enough for non-technical users but flexible enough for engineering teams.</p>
<hr />
<h2 id="heading-no-code-and-developer-friendly">No-Code and Developer-Friendly</h2>
<p>Despia was designed to remove the operational friction that typically comes with publishing native apps. Teams no longer need to:</p>
<ul>
<li><p>Manage Apple Developer credentials manually</p>
</li>
<li><p>Set up Xcode or Android Studio</p>
</li>
<li><p>Configure certificates, entitlements, or provisioning profiles</p>
</li>
<li><p>Maintain their own build infrastructure</p>
</li>
</ul>
<p>All of this is handled through Despia’s build service, which runs on physical Apple Silicon Mac Minis and automatically signs and packages binaries for iOS and Android.</p>
<hr />
<h2 id="heading-pricing-and-access">Pricing and Access</h2>
<p>Despia is available as a one-time license. There are no subscriptions or usage-based fees beyond build minutes.</p>
<ul>
<li><p>$249 per app (lifetime license)</p>
</li>
<li><p>Includes full access to build services, SDK integrations, and source export</p>
</li>
<li><p>Custom licensing is available for agencies and partners</p>
</li>
</ul>
<hr />
<h2 id="heading-a-technical-platform-with-product-focus">A Technical Platform with Product Focus</h2>
<p>Despia is the result of two technical backgrounds coming together: one rooted in framework design and the other in Visual Development. The combined platform delivers a practical solution to a longstanding challenge - shipping native apps from the web stack without friction.</p>
<p>Whether you're building an MVP, delivering apps to clients, or launching a production mobile product, Despia offers the flexibility of a developer tool with the accessibility of a no-code platform.</p>
<p>To learn more or get started, visit <a target="_blank" href="https://www.despia.com/">despia.com</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Despia, React Native, or Flutter?]]></title><description><![CDATA[Building mobile apps used to require deep technical expertise, but today's frameworks have made it more accessible than ever. Whether you're a business owner looking to understand your options, a no-code enthusiast wanting to level up, or a developer...]]></description><link>https://blog.despia.com/despia-react-native-or-flutter</link><guid isPermaLink="true">https://blog.despia.com/despia-react-native-or-flutter</guid><category><![CDATA[React Native]]></category><category><![CDATA[Flutter]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Tue, 06 May 2025 19:09:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/AK3BXL-1AFw/upload/43166801744153296ced8f243d659958.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Building mobile apps used to require deep technical expertise, but today's frameworks have made it more accessible than ever. Whether you're a business owner looking to understand your options, a no-code enthusiast wanting to level up, or a developer evaluating new tools, this guide will help you understand the key differences between three popular options: Despia, React Native, and Flutter.</p>
<h2 id="heading-true-hybrid-frameworks-vs-basic-wrappers-understanding-the-difference">True Hybrid Frameworks vs Basic Wrappers: Understanding the Difference</h2>
<p>Before diving into comparisons, it's important to understand that not all mobile development solutions are created equal:</p>
<p><strong>Basic Wrappers</strong> simply package HTML, CSS, and JavaScript into a mobile container without any performance enhancements or native integration. These basic wrappers earned a bad reputation due to poor performance, clunky user experience, and limited access to device features.</p>
<p><strong>Despia</strong> is fundamentally different - it's a true hybrid framework that combines a custom-built engine with hardware acceleration and a JavaScript bridge (similar to React Native). This puts Despia much closer to React Native and Flutter in architecture than to basic wrappers, delivering significantly better performance and native feature access.</p>
<h2 id="heading-the-basics-what-these-frameworks-actually-do">The Basics: What These Frameworks Actually Do</h2>
<p>In simple terms, here's what each framework is about:</p>
<p><strong>Despia</strong> is a true hybrid framework that uses familiar technologies (HTML, CSS, JavaScript) but enhances them with hardware acceleration and native capabilities. The big advantage? A JavaScript bridge similar to React Native for accessing native features plus instant updates without waiting for app store approvals.</p>
<p><strong>React Native</strong> lets you build mobile apps using JavaScript that look and feel like they were built with traditional mobile development tools. It connects JavaScript with native components through a bridge architecture.</p>
<p><strong>Flutter</strong> is Google's solution that uses its own language called Dart. It's known for creating beautiful, smooth animations and consistent looks across different devices using its own rendering engine.</p>
<h2 id="heading-understanding-the-differences-a-simple-comparison">Understanding the Differences: A Simple Comparison</h2>
<p>Let's compare what matters most when choosing between these options:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>What to Consider</strong></td><td><strong>Despia</strong></td><td><strong>React Native</strong></td><td><strong>Flutter</strong></td></tr>
</thead>
<tbody>
<tr>
<td><strong>How it works</strong></td><td>Custom engine with hardware acceleration and JS bridge</td><td>JavaScript bridge to native components</td><td>Dart with Skia graphics engine</td></tr>
<tr>
<td><strong>What you'll be writing</strong></td><td>HTML, CSS, JavaScript (standard skills)</td><td>JavaScript with React components</td><td>Dart (a separate language to learn)</td></tr>
<tr>
<td><strong>App updates</strong></td><td>✅ Instant updates without app store approval</td><td>⚠️ Requires tools like CodePush or Expo</td><td>❌ Requires new app store submission</td></tr>
<tr>
<td><strong>Offline use</strong></td><td>⚠️ Limited (improvements coming!)</td><td>✅ Works well offline</td><td>✅ Works well offline</td></tr>
<tr>
<td><strong>App size</strong></td><td>✅ Smaller downloads</td><td>Medium-sized downloads</td><td>Larger downloads</td></tr>
<tr>
<td><strong>How it looks and feels</strong></td><td>Smooth with hardware acceleration</td><td>Authentic native feel</td><td>Consistent across devices</td></tr>
<tr>
<td><strong>Learning curve</strong></td><td>Easy if you know HTML/CSS/JS</td><td>Moderate with React knowledge</td><td>Steeper (requires learning Dart)</td></tr>
</tbody>
</table>
</div><h2 id="heading-what-sets-despia-apart">What Sets Despia Apart?</h2>
<p>Despia brings some unique advantages that might make it the right choice for your project:</p>
<h3 id="heading-1-familiar-technologies-without-compromise">1. Familiar Technologies Without Compromise</h3>
<p>If you already know HTML, CSS, and JavaScript, you'll feel right at home with Despia. There's no new language to learn, but unlike basic wrappers, you get hardware acceleration and a sophisticated bridge for native features.</p>
<h3 id="heading-2-works-with-popular-tools-and-frameworks">2. Works With Popular Tools and Frameworks</h3>
<p>One of Despia's biggest advantages is that you can build with virtually any framework or tool you already love. Unlike React Native and Flutter (which force you to use their own specific frameworks), Despia lets you use:</p>
<ul>
<li><p><strong>No-code tools</strong> like WeWeb</p>
</li>
<li><p><strong>Visual builders</strong> like Nordcraft (formerly Toddle)</p>
</li>
<li><p><strong>Popular frameworks</strong> like React, Vue, or Angular</p>
</li>
<li><p><strong>Any JavaScript library</strong> from the vast npm ecosystem</p>
</li>
</ul>
<p>This means you can leverage existing skills, tools, and code rather than starting from scratch.</p>
<h3 id="heading-3-instant-app-updates">3. Instant App Updates</h3>
<p>This is a game-changer for many businesses. With Despia, you can update your app's look and functionality instantly without going through app store approval processes. Fix a bug or launch a new feature immediately.</p>
<h3 id="heading-4-native-feature-access">4. Native Feature Access</h3>
<p>Unlike basic approaches, Despia gives you access to device features like native contacts, location services, app clips, and push notifications through simple JavaScript (<code>window.despia = "method://"</code>).</p>
<h3 id="heading-5-smaller-app-size">5. Smaller App Size</h3>
<p>Despia apps tend to be smaller in file size, which means quicker downloads and less storage space on users' devices.</p>
<h2 id="heading-when-to-choose-each-option">When to Choose Each Option</h2>
<p>Here's a simple guide to help you decide:</p>
<h3 id="heading-despia-is-your-best-choice-when">Despia Is Your Best Choice When:</h3>
<ul>
<li><p>You want to update your app frequently without waiting for approvals</p>
</li>
<li><p>Your team already knows HTML, CSS, and JavaScript</p>
</li>
<li><p>You like working with CSS-based animations</p>
</li>
<li><p>You're looking for a smaller, lighter app</p>
</li>
<li><p>You want to use tools like WeWeb or Nordcraft</p>
</li>
<li><p>You need to make quick changes based on user feedback</p>
</li>
</ul>
<p>Despia works well for AI wrappers, business apps, content-focused applications, and situations where frequent updates are important.</p>
<h3 id="heading-react-native-makes-sense-when">React Native Makes Sense When:</h3>
<ul>
<li><p>You want your app to have that truly "native" feel</p>
</li>
<li><p>Your team already knows React</p>
</li>
<li><p>Offline functionality is essential from day one</p>
</li>
<li><p>You're building something with complex interactions</p>
</li>
</ul>
<p>React Native is often used for social media apps and applications with complex forms and interactions.</p>
<h3 id="heading-flutter-is-ideal-when">Flutter Is Ideal When:</h3>
<ul>
<li><p>You're building something with lots of animations and graphics</p>
</li>
<li><p>You want your app to look exactly the same on all devices</p>
</li>
<li><p>You're starting fresh and willing to learn a new approach</p>
</li>
<li><p>Performance is your top priority</p>
</li>
<li><p>You're creating a visually rich experience</p>
</li>
</ul>
<p>Flutter excels at creating visually stunning apps, games, and experiences where animations and graphics are central.</p>
<h2 id="heading-performance-comparison">Performance Comparison</h2>
<p><strong>Despia</strong> enhances performance through hardware acceleration, making it significantly better than basic wrappers. Its custom engine and optimizations deliver smooth experiences for most business applications.</p>
<p><strong>React Native</strong> delivers good performance overall, though the JS-to-native bridge introduces some latency during complex interactions.</p>
<p><strong>Flutter</strong> shines brightest in performance with its compiled rendering engine and GPU acceleration, offering smooth 60fps animations and transitions.</p>
<h2 id="heading-the-bottom-line-choosing-your-framework">The Bottom Line: Choosing Your Framework</h2>
<p>Each of these frameworks can help you build great mobile apps, but they each have different strengths:</p>
<p><strong>Despia</strong> offers a true hybrid approach that balances familiarity (using HTML, CSS, and JavaScript), powerful features (like instant updates), and performance (through its hardware-accelerated engine). Unlike basic wrappers, Despia's architecture with a JavaScript bridge for native features puts it closer to React Native in capability while maintaining simplicity.</p>
<p><strong>React Native</strong> continues to be a reliable choice for creating apps with a truly native feel while still using JavaScript, making it popular for many major social and commerce apps.</p>
<p><strong>Flutter</strong> excels in creating beautiful, consistent user interfaces with smooth animations, making it ideal for visually rich applications.</p>
<p>The good news is that mobile app development has become more accessible than ever before. Whether you're a business owner looking to create your first app, someone with basic coding skills looking to expand your capabilities, or a developer evaluating new tools, there's a framework that can work for your needs.</p>
<blockquote>
<p>Remember, the "best" framework isn't about what's technically superior - it's about what helps you and your team build and maintain your app most effectively.</p>
</blockquote>
<p><em>What are your experiences with mobile app development? Are you considering using Despia for your next project? Share your thoughts in the comments below!</em></p>
]]></content:encoded></item><item><title><![CDATA[How to Avoid Apple's 30% Fee After the Court Ruling using Despia]]></title><description><![CDATA[The recent court ruling has opened new possibilities for app developers to bypass Apple's 30% commission by implementing external payment processing. This guide explains how Despia developers can take advantage of this opportunity while maintaining a...]]></description><link>https://blog.despia.com/how-to-avoid-apples-30-fee-after-the-court-ruling-using-despia</link><guid isPermaLink="true">https://blog.despia.com/how-to-avoid-apples-30-fee-after-the-court-ruling-using-despia</guid><category><![CDATA[Apple]]></category><category><![CDATA[app store]]></category><dc:creator><![CDATA[NoCode ProCode]]></dc:creator><pubDate>Fri, 02 May 2025 13:49:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/f-3mUXFLY2o/upload/1fefebda8559170d09f17056339b945d.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The recent court ruling has opened new possibilities for app developers to bypass Apple's 30% commission by implementing external payment processing. This guide explains how Despia developers can take advantage of this opportunity while maintaining a seamless user experience.</p>
<h2 id="heading-what-youll-need">What You'll Need</h2>
<ul>
<li><p>A Despia app</p>
</li>
<li><p>A third-party payment processor account (like Stripe, PayPal, or Polar)</p>
</li>
<li><p>Access to your website domain + hosting</p>
</li>
</ul>
<h2 id="heading-setting-up-app-links">Setting Up App Links</h2>
<p>First, you need to set up App Links to ensure your app can handle specific URLs, creating a smooth transition between web and app experiences:</p>
<ol>
<li>Create a .json file named <code>apple-app-site-association</code> with the following content:</li>
</ol>
<pre><code class="lang-json">{
  <span class="hljs-attr">"applinks"</span>: {
    <span class="hljs-attr">"details"</span>: [
      {
        <span class="hljs-attr">"appIDs"</span>: [
          <span class="hljs-string">"{TEAM-ID}.{BUNDLE-ID}"</span>
        ],
        <span class="hljs-attr">"components"</span>: [
          {
            <span class="hljs-attr">"/"</span>: <span class="hljs-string">"/*"</span>,
            <span class="hljs-attr">"comment"</span>: <span class="hljs-string">"Matches any URL path, so all links open the app."</span>
          }
        ]
      }
    ]
  }
}
</code></pre>
<ol start="2">
<li>Host this file at <code>/.well-known/apple-app-site-association</code> on your website's root directory. This special path is recognized by iOS to handle app links properly.</li>
</ol>
<h2 id="heading-configuring-your-despia-app">Configuring Your Despia App</h2>
<p>Next, configure your Despia app to handle links correctly:</p>
<ol>
<li><p>In the Despia Editor, navigate to "Link Handling"</p>
</li>
<li><p>Add your payment processor URL into the "Always Open in Browser" field to meet Apple's external policy compliance requirements</p>
</li>
<li><p>Enable Associated Domains in Despia (for more details on associated domains, refer to <a target="_blank" href="https://www.youtube.com/watch?v=ENEwGyJPvPo">this informative video about app links</a>)</p>
</li>
</ol>
<h2 id="heading-implementing-the-payment-flow">Implementing the Payment Flow</h2>
<p>Now, let's implement the payment flow that bypasses Apple's 30% commission:</p>
<ol>
<li><p>Generate a checkout link in your app that includes necessary parameters like the user account ID (refer to your payment processor's documentation for specifics)</p>
</li>
<li><p>Open this link using <code>window.location.href = "https://your-payment-processor.com/pay/123"</code></p>
</li>
<li><p>The link opens in Safari, allowing the user to complete payment outside of your app, avoiding Apple's commission</p>
</li>
<li><p>Set your success URL to be under the same host your Despia app runs on</p>
</li>
<li><p>After payment completion, the success page will open directly in your app, creating a smooth app → web → app flow</p>
</li>
</ol>
<p>This approach feels almost 100% native, especially since users can also utilize Apple Pay via your third-party processor.</p>
<h2 id="heading-important-notes">Important Notes</h2>
<ul>
<li><p>This workaround currently only applies to apps in the United States due to regional differences in the court ruling</p>
</li>
<li><p>Your success URL must be under the same domain as your app to maintain the seamless transition back to the app</p>
</li>
<li><p>Be sure to thoroughly test this implementation across different iOS versions</p>
</li>
</ul>
<p>By following this guide, you can offer your users alternative payment options while avoiding Apple's 30% commission. The approach creates a professional user experience that integrates web payments seamlessly with your Despia app.</p>
<p><em>Note: Always review the latest App Store guidelines and legal requirements as they continue to evolve following the court ruling.</em></p>
]]></content:encoded></item></channel></rss>