Przejdź do treści

Aplikacje mobilne

Aplikacje iOS i Android — React Native, Flutter, Swift, Kotlin.

Problem, który realnie rozwiązujemy

Klienci przychodzą do nas z jedną z dwóch sytuacji. Pierwsza: mają pomysł na aplikację i stronę WWW, na której działa prototyp, ale każda próba przełożenia tego na iOS i Androida kończy się na dwóch osobnych zespołach, dwóch budżetach i dwóch harmonogramach, które się rozjeżdżają. Druga: mają już aplikację, ale ktoś ją zbudował szybko pod jeden termin, kod jest niemożliwy do rozbudowy, a każda nowa funkcja zajmuje tygodnie zamiast dni, bo trzeba naprawiać rzeczy, które powinny działać od początku.

W obu przypadkach prawdziwym kosztem nie jest sama budowa aplikacji, tylko decyzje architektoniczne podjęte na starcie, których nie widać, dopóki appka nie urośnie. Zły wybór między React Native a natywnym kodem, brak planu na offline, źle zaprojektowana synchronizacja danych — to wychodzi po 3-6 miesiącach, kiedy jest już drogo to poprawiać.

Jak podchodzimy do tego inaczej

Zanim napiszemy pierwszą linijkę kodu, odpowiadamy sobie na trzy pytania: czy aplikacja rzeczywiście potrzebuje być natywna, jak wygląda life-cycle danych offline/online, i co się stanie, jak liczba użytkowników wzrośnie 10x. Te odpowiedzi decydują o architekturze, nie odwrotnie.

Praktycznie oznacza to:

  • Wybór technologii pod projekt, nie pod nasze przyzwyczajenia. React Native albo Flutter do większości aplikacji biznesowych i konsumenckich — szybciej, taniej, jeden kod na obie platformy. Natywny Swift/Kotlin tam, gdzie liczy się wydajność grafiki, dostęp do sprzętu albo głębsza integracja z systemem.
  • API projektowane pod aplikację mobilną, nie odgrzewane z web. Mobilne połączenia bywają wolne i niestabilne — API musi to znosić: paginacja, częściowe ładowanie, sensowne cache’owanie po stronie klienta.
  • Obsługa trybu offline od pierwszego dnia projektu, jeśli aplikacja tego wymaga — nie jako “dodamy to później”, bo dodanie offline do gotowej architektury online-only to zwykle przepisanie połowy logiki.
  • Testowanie na realnych urządzeniach, nie tylko na symulatorach — różnice w wydajności, baterii i zachowaniu klawiatury między symulatorem a fizycznym telefonem są większe, niż się wydaje.

Stack, którego używamy

React Native i Flutter do większości projektów, Swift i Kotlin tam, gdzie natywność się opłaca, Firebase do backendu w mniejszych i średnich aplikacjach (auth, baza danych, push notifications), własne REST/GraphQL API w większych projektach z istniejącym backendem. Do budowania i dystrybucji: Fastlane i EAS Build, żeby wypchnięcie nowej wersji do testerów albo do sklepu nie wymagało ręcznego klikania w Xcode za każdym razem.

Jak wygląda współpraca krok po kroku

  1. Rozmowa o zakresie (1-2 spotkania). Ustalamy, co appka ma robić w wersji pierwszej, a co zostaje na później. Większość projektów, które się nie kończą, ginie przez próbę zbudowania wszystkiego naraz.
  2. Architektura i wybór technologii (dokument, nie tylko rozmowa). Dostajesz spisane decyzje: dlaczego React Native a nie natywnie, jak wygląda struktura danych, jak appka zachowuje się offline. Możesz to skonsultować z własnym zespołem technicznym, jeśli go masz.
  3. Budowa w iteracjach 2-tygodniowych. Co dwa tygodnie dostajesz działającą wersję do testów — nie prezentację slajdów, tylko appkę, którą możesz zainstalować na telefonie.
  4. Testy na urządzeniach. Przed każdym wydaniem testujemy na kilku realnych modelach telefonów (różne rozmiary ekranu, różne wersje systemu), nie tylko na jednym flagowcu.
  5. Publikacja i wsparcie po starcie. Pomagamy przejść przez pierwszy review w App Store i Google Play, łącznie z rzeczami, o których łatwo zapomnieć (polityka prywatności, ekrany zgód, wymagane opisy uprawnień).

Co dalej

Jeśli masz pomysł na aplikację albo appkę, która wymaga naprawy — napisz do nas przez formularz kontaktowy albo bezpośrednio na biuro@devscave.com. Odpowiadamy w ciągu 24 godzin i pierwsza rozmowa nic nie kosztuje.

Najczęstsze pytania

Czy aplikacja musi być pisana natywnie, czy wystarczy React Native / Flutter?

Zależy od tego, co aplikacja ma robić. Jeśli korzysta głównie z list, formularzy, komunikacji z API i standardowych elementów UI, React Native albo Flutter wystarczą i skracają czas budowy o połowę, bo jeden kod działa na obu platformach. Jeśli potrzebujesz dostępu do specyficznych API systemowych (np. zaawansowane przetwarzanie dźwięku w tle na iOS, integracja z HealthKit, sterowniki Bluetooth niskiego poziomu), rekomendujemy natywny Swift lub Kotlin — próba obejścia tego przez wrapper kończy się zwykle więcej roboty niż zaoszczędzono.

Kto płaci za konta deweloperskie w Apple i Google?

Ty. Konto Apple Developer Program (99 USD rocznie) i Google Play Console (25 USD jednorazowo) rejestrujemy na Twoją firmę, nie naszą — to Ty jesteś właścicielem aplikacji w sklepach, nie my. Jeśli kiedyś zmienisz wykonawcę, appka zostaje przy Tobie.

Ile trwa proces publikacji w App Store?

Apple review trwa zwykle 24-48 godzin, czasem dłużej przy pierwszej publikacji lub gdy aplikacja dotyka płatności, danych zdrowotnych albo lokalizacji. Google Play jest zwykle szybszy — kilka godzin do jednego dnia. Zawsze wliczamy bufor czasowy na ewentualne odrzucenie i poprawki w harmonogramie, bo pierwsza wysyłka rzadko przechodzi bez uwag.

Co się dzieje, gdy Apple albo Google zmienią wymagania systemowe?

Obie platformy raz do roku podnoszą minimalny target SDK i wymuszają aktualizacje (np. nowe zasady prywatności, obowiązkowy Privacy Manifest na iOS). Jeśli aplikacja jest u nas na utrzymaniu, pilnujemy tych zmian i aktualizujemy kod zanim Twoja appka zniknie ze sklepu za niezgodność. Jeśli nie jest — dostajesz od nas informację, ale aktualizację robisz sam albo zlecasz osobno.

Czy da się zrobić tylko backend i API, a appkę zrobi mój zespół?

Tak, i robimy to regularnie. Budujemy REST albo GraphQL API, dokumentujemy je (OpenAPI/Swagger), i przekazujemy Twojemu zespołowi frontendowemu. Ustalamy wcześniej kontrakt API, żeby obie strony mogły pracować równolegle bez czekania na siebie.