<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Apporig</title>
    <description>The latest articles on DEV Community by Apporig (@alexdidi).</description>
    <link>https://dev.to/alexdidi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3956962%2F72f9d5f4-f189-4d08-aec2-40dc0e680ec6.png</url>
      <title>DEV Community: Apporig</title>
      <link>https://dev.to/alexdidi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexdidi"/>
    <language>en</language>
    <item>
      <title>How to check code uniqueness before submitting to the App Store</title>
      <dc:creator>Apporig</dc:creator>
      <pubDate>Wed, 03 Jun 2026 15:13:08 +0000</pubDate>
      <link>https://dev.to/alexdidi/how-to-check-code-uniqueness-before-submitting-to-the-app-store-ic3</link>
      <guid>https://dev.to/alexdidi/how-to-check-code-uniqueness-before-submitting-to-the-app-store-ic3</guid>
      <description>&lt;h1&gt;
  
  
  How to Check Code Uniqueness Before Submitting to the App Store
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The 4.3 Rejection Nobody Sees Coming
&lt;/h2&gt;

&lt;p&gt;You've built two apps. They solve different problems, have different UIs, target different audiences. You submit them both to the App Store with confidence.&lt;/p&gt;

&lt;p&gt;Then Apple rejects the second one with rule 4.3: "Duplicate Functionality." The review team flagged structural code similarity you didn't know existed.&lt;/p&gt;

&lt;p&gt;Here's the catch: Apple's review system compares your apps automatically. But you can't see what it sees. There's no preview mode in App Store Connect. No "structural similarity score" before you hit submit. You find out only after rejection—and that costs you another 1-3 day review cycle while you figure out what to change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Happens
&lt;/h2&gt;

&lt;p&gt;App Store rule 4.3 doesn't care about visual design or user experience. It cares about code structure: navigation patterns, shared modules, architecture decisions, even naming conventions.&lt;/p&gt;

&lt;p&gt;Two apps can look completely different but fail this check because they:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share the same routing logic&lt;/li&gt;
&lt;li&gt;Reuse authentication flows from a shared codebase&lt;/li&gt;
&lt;li&gt;Have similar state management patterns&lt;/li&gt;
&lt;li&gt;Copy utility functions without enough variation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frustration isn't that the rule exists—it's that you're flying blind. By the time you get feedback, you've already waited days, and now you need to make structural changes and resubmit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: Scan Before You Submit
&lt;/h2&gt;

&lt;p&gt;This is exactly why we built &lt;a href="https://apporig.com" rel="noopener noreferrer"&gt;apporig.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Upload your projects or connect your Git repository. apporig scans your code and compares structural similarity across your apps. You get results back in minutes—not days.&lt;/p&gt;

&lt;p&gt;The output is straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;COPY&lt;/strong&gt;: High structural similarity (likely to trigger 4.3)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RELATED&lt;/strong&gt;: Moderate similarity (worth reviewing)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OK&lt;/strong&gt;: Safe to submit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each finding includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exact percentage of similarity per layer (files, modules, navigation)&lt;/li&gt;
&lt;li&gt;Specific files and patterns flagged&lt;/li&gt;
&lt;li&gt;Which parts of your code are too similar&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What apporig Actually Checks
&lt;/h2&gt;

&lt;p&gt;apporig understands code at a structural level, not just line-by-line matching. It analyzes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Navigation architecture&lt;/strong&gt;: How screens/views connect&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Module organization&lt;/strong&gt;: Shared components and their patterns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State management&lt;/strong&gt;: Redux, Provider, MobX, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication flows&lt;/strong&gt;: Login, token handling, session logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Utility patterns&lt;/strong&gt;: Helper functions, shared logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It works with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Swift &amp;amp; Objective-C&lt;/li&gt;
&lt;li&gt;Kotlin &amp;amp; Java&lt;/li&gt;
&lt;li&gt;React Native&lt;/li&gt;
&lt;li&gt;Flutter&lt;/li&gt;
&lt;li&gt;Web frameworks (bonus)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical Workflow
&lt;/h2&gt;

&lt;p&gt;Here's how it fits into your submission process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You've finished two apps and they're ready for submission&lt;/li&gt;
&lt;li&gt;Go to &lt;a href="https://apporig.com" rel="noopener noreferrer"&gt;apporig.com&lt;/a&gt;, upload both projects (or connect Git)&lt;/li&gt;
&lt;li&gt;Get a report in 5-10 minutes showing structural overlap&lt;/li&gt;
&lt;li&gt;If there are COPY or RELATED flags, refactor those sections before submitting&lt;/li&gt;
&lt;li&gt;Submit with confidence—you've already passed the check Apple performs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No guessing. No rejected submissions. No wasted review cycles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Cost Avoidance
&lt;/h2&gt;

&lt;p&gt;Let's be specific about what rejection costs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1-3 days waiting for review feedback&lt;/li&gt;
&lt;li&gt;2-4 hours debugging what "too similar" actually means&lt;/li&gt;
&lt;li&gt;Structural refactoring (4-8 hours if it's a real problem)&lt;/li&gt;
&lt;li&gt;Another 1-3 day review cycle&lt;/li&gt;
&lt;li&gt;Total: 3-6 days and 6-12 hours of dev time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Running apporig before submission takes 10 minutes and catches this problem upfront.&lt;/p&gt;

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

&lt;p&gt;We want developers to actually use this before hitting rejections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First 20 users get the Starter plan free for 3 months.&lt;/strong&gt; No credit card required. Just sign up at &lt;a href="https://apporig.com" rel="noopener noreferrer"&gt;apporig.com&lt;/a&gt;, upload your code, and see what Apple would see.&lt;/p&gt;

&lt;p&gt;If you're managing multiple apps, or if you've been hit with a 4.3 rejection before, this is exactly what you need.&lt;/p&gt;




&lt;p&gt;Stop losing days to App Store rejections. Check your code uniqueness before Apple does.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apporig.com" rel="noopener noreferrer"&gt;Check your apps on apporig.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>appstore</category>
      <category>ios</category>
      <category>codeuniqueness</category>
      <category>mobiledev</category>
    </item>
    <item>
      <title>React Native и App Store — почему похожие приложения получают отказ</title>
      <dc:creator>Apporig</dc:creator>
      <pubDate>Thu, 28 May 2026 20:00:11 +0000</pubDate>
      <link>https://dev.to/alexdidi/react-native-i-app-store-pochiemu-pokhozhiie-prilozhieniia-poluchaiut-otkaz-e72</link>
      <guid>https://dev.to/alexdidi/react-native-i-app-store-pochiemu-pokhozhiie-prilozhieniia-poluchaiut-otkaz-e72</guid>
      <description>&lt;h1&gt;
  
  
  React Native and App Store — Why Similar Apps Get Rejected
&lt;/h1&gt;

&lt;p&gt;We published 8 React Native apps in two months. Five looked completely different—different colors, layouts, features. Four got rejected.&lt;/p&gt;

&lt;p&gt;All four rejections: &lt;strong&gt;4.3(a) Design: Spam&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem isn't what you think
&lt;/h2&gt;

&lt;p&gt;First instinct: change the UI more. We redid icons, rewrote copy, changed the color scheme. Resubmitted.&lt;/p&gt;

&lt;p&gt;Rejected again. Same reason.&lt;/p&gt;

&lt;p&gt;Turns out Apple doesn't just look at screenshots. They analyze the binary. And when you're building multiple apps from the same React Native codebase—even with different features enabled—the structural similarity screams "copy-paste".&lt;/p&gt;

&lt;h2&gt;
  
  
  What Apple actually checks
&lt;/h2&gt;

&lt;p&gt;After digging into rejection patterns across studios, here's what triggers 4.3 for React Native apps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component structure and hierarchy&lt;/strong&gt;: If &lt;code&gt;App.tsx&lt;/code&gt; → &lt;code&gt;MainNavigator&lt;/code&gt; → &lt;code&gt;HomeScreen&lt;/code&gt; → &lt;code&gt;ProfileCard&lt;/code&gt; looks identical across apps, that's a flag. Even if &lt;code&gt;ProfileCard&lt;/code&gt; renders different content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hook names and patterns&lt;/strong&gt;: Custom hooks like &lt;code&gt;useAuth()&lt;/code&gt;, &lt;code&gt;useFetchData()&lt;/code&gt;, &lt;code&gt;useTheme()&lt;/code&gt; with the same signatures across apps. Apple's tooling can detect this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navigation setup&lt;/strong&gt;: React Navigation route configs that mirror each other. Same screen names, same stack structure, just different content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dependencies&lt;/strong&gt;: Identical &lt;code&gt;package.json&lt;/code&gt; with the same set of libraries at the same versions. This one's subtle but contributes to the overall "sameness" score.&lt;/p&gt;

&lt;h2&gt;
  
  
  What didn't work
&lt;/h2&gt;

&lt;p&gt;Changing variable names manually—too error-prone and time-consuming. You miss things, break stuff.&lt;/p&gt;

&lt;p&gt;Using different component libraries per app—adds bloat, inconsistent dev experience, doesn't solve the structural similarity problem.&lt;/p&gt;

&lt;p&gt;Randomizing file names—doesn't change the AST (abstract syntax tree), which is what actually matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually works
&lt;/h2&gt;

&lt;p&gt;I built apporig.com because I got tired of the rejection roulette. You upload a ZIP or connect a Git repo. It analyzes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Component tree structure&lt;/li&gt;
&lt;li&gt;Function and hook signatures&lt;/li&gt;
&lt;li&gt;Navigation patterns&lt;/li&gt;
&lt;li&gt;Package dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Output: similarity percentages and a status for each layer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;COPY&lt;/strong&gt;: &amp;gt; 85% similar—Apple will likely reject&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RELATED&lt;/strong&gt;: 60-85%—risky, needs review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OK&lt;/strong&gt;: &amp;lt; 60%—safe to submit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You see exactly which parts of your codebase are too similar before Apple does. For React Native specifically, it checks both JS/TS structure and the native module setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical takeaways (even without apporig)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vary component hierarchies&lt;/strong&gt;: Don't just swap content inside the same component tree. Restructure screens entirely. Use tabs in one app, drawer nav in another.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rename custom hooks meaningfully&lt;/strong&gt;: Not just &lt;code&gt;useData&lt;/code&gt; → &lt;code&gt;useData2&lt;/code&gt;, but actually different abstractions. &lt;code&gt;useProductCatalog&lt;/code&gt;, &lt;code&gt;useServiceList&lt;/code&gt;—names that reflect different domains.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Diversify dependencies&lt;/strong&gt;: If one app uses React Query, try SWR in another. Different state management libraries create different structural patterns.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Unique screen flows&lt;/strong&gt;: Don't copy-paste screen sequences. If one app has Onboarding → Home → Profile, make another go Dashboard → Settings → Profile.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before every submission now, I run the check. Saved us probably 30+ hours of rejection cycles in the last quarter alone.&lt;/p&gt;

&lt;p&gt;If you're publishing multiple RN apps, check similarity before Apple does: &lt;a href="https://apporig.com/react-native-code-uniqueness" rel="noopener noreferrer"&gt;apporig.com/react-native-code-uniqueness&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>ios</category>
      <category>android</category>
      <category>appstore</category>
    </item>
    <item>
      <title>Как избежать отказа App Store по правилу 4.3 — проверь код до сабмита</title>
      <dc:creator>Apporig</dc:creator>
      <pubDate>Thu, 28 May 2026 19:31:28 +0000</pubDate>
      <link>https://dev.to/alexdidi/kak-izbiezhat-otkaza-app-store-po-pravilu-43-provier-kod-do-sabmita-2051</link>
      <guid>https://dev.to/alexdidi/kak-izbiezhat-otkaza-app-store-po-pravilu-43-provier-kod-do-sabmita-2051</guid>
      <description>&lt;h1&gt;
  
  
  Как избежать отказа App Store по правилу 4.3 — проверь код до сабмита
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Проблема: отказ по правилу 4.3(a) Design: Spam
&lt;/h2&gt;

&lt;p&gt;Одна из самых распространённых причин отказа в App Store — &lt;strong&gt;правило 4.3(a) Design: Spam&lt;/strong&gt;. Apple отклоняет приложения, которые слишком похожи на другие приложения в том же аккаунте разработчика или на уже опубликованные в сторе.&lt;/p&gt;

&lt;p&gt;Основная проблема заключается в том, что разработчики узнают об этом &lt;strong&gt;только после отказа&lt;/strong&gt; — когда уже потеряно драгоценное время на ревью, а сроки релиза сорваны.&lt;/p&gt;

&lt;h2&gt;
  
  
  Почему это критично
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;⏱️ &lt;strong&gt;Потеря времени&lt;/strong&gt;: каждый цикл ревью в App Store занимает от нескольких часов до нескольких дней&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Переработка кода&lt;/strong&gt;: после отказа приходится срочно переделывать проект&lt;/li&gt;
&lt;li&gt;📉 &lt;strong&gt;Риски для бизнеса&lt;/strong&gt;: задержка релиза означает упущенную прибыль и недовольство стейкхолдеров&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;Неопределённость&lt;/strong&gt;: сложно понять заранее, насколько твой код похож на другие приложения&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Решение: проверка кода до отправки в стор
&lt;/h2&gt;

&lt;p&gt;Мы в &lt;a href="https://apporig.com" rel="noopener noreferrer"&gt;AppOrig&lt;/a&gt; разработали инструмент, который &lt;strong&gt;анализирует код до отправки в App Store&lt;/strong&gt;. Теперь можно заранее увидеть потенциальные проблемы и исправить их до сабмита.&lt;/p&gt;

&lt;h3&gt;
  
  
  Как это работает
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Загружаешь проект&lt;/strong&gt;: ZIP-архив или прямо из Git-репозитория&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Сервис анализирует&lt;/strong&gt;: сравнивает твой проект с другими твоими приложениями и базой опубликованных проектов&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Получаешь результат&lt;/strong&gt;: детальный отчёт по каждому файлу и модулю со статусами:

&lt;ul&gt;
&lt;li&gt;🔴 &lt;strong&gt;COPY&lt;/strong&gt; — высокий риск отказа, требуется переработка&lt;/li&gt;
&lt;li&gt;🟡 &lt;strong&gt;RELATED&lt;/strong&gt; — есть похожие участки кода, стоит проверить&lt;/li&gt;
&lt;li&gt;🟢 &lt;strong&gt;OK&lt;/strong&gt; — код достаточно оригинален&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Что анализируется
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Структура кодовой базы и архитектура&lt;/li&gt;
&lt;li&gt;Алгоритмы и бизнес-логика&lt;/li&gt;
&lt;li&gt;UI-компоненты и layouts&lt;/li&gt;
&lt;li&gt;Сходство на уровне модулей и отдельных файлов&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Поддерживаемые технологии
&lt;/h3&gt;

&lt;p&gt;AppOrig работает с широким спектром языков и фреймворков для мобильной разработки:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;iOS&lt;/strong&gt;: Swift, Objective-C, SwiftUI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Android&lt;/strong&gt;: Kotlin, Java, Jetpack Compose&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Кросс-платформа&lt;/strong&gt;: React Native, Flutter, Xamarin&lt;/li&gt;
&lt;li&gt;И другие популярные языки и фреймворки&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Преимущества раннего анализа
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;Экономия времени&lt;/strong&gt;: исправляешь проблемы до отправки в ревью&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Снижение рисков&lt;/strong&gt;: минимизируешь вероятность отказа по правилу 4.3&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Контроль качества&lt;/strong&gt;: видишь слабые места в архитектуре проекта&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Уверенность&lt;/strong&gt;: сабмитишь в стор с пониманием состояния кода&lt;/p&gt;

&lt;h2&gt;
  
  
  Начни использовать прямо сейчас
&lt;/h2&gt;

&lt;p&gt;Попробуй AppOrig бесплатно и проверь свой проект перед следующей отправкой в App Store:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://apporig.com" rel="noopener noreferrer"&gt;apporig.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Не теряй время на отказы — проверяй код до сабмита и выпускай приложения быстрее.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;AppOrig — платформа для проверки кода на оригинальность и соответствие требованиям App Store. Анализируй, сравнивай и улучшай свои мобильные приложения до отправки в сторы.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>android</category>
      <category>appstore</category>
      <category>mobiledev</category>
    </item>
  </channel>
</rss>
