https://github.com/dwyl/learn-ios-development
📱Notes, Tips & Links for how we (re)learned iOS Development.
https://github.com/dwyl/learn-ios-development
beginner beginner-friendly how-to ios ios-app learning swift swiftui
Last synced: 2 months ago
JSON representation
📱Notes, Tips & Links for how we (re)learned iOS Development.
- Host: GitHub
- URL: https://github.com/dwyl/learn-ios-development
- Owner: dwyl
- License: gpl-2.0
- Created: 2025-07-24T20:59:44.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-07-28T14:58:47.000Z (2 months ago)
- Last Synced: 2025-07-28T16:35:52.229Z (2 months ago)
- Topics: beginner, beginner-friendly, how-to, ios, ios-app, learning, swift, swiftui
- Language: Swift
- Homepage:
- Size: 10.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Learn `iOS` Development
Notes, tips & links
for how we (re)learned
**_Native_ `iOS` Development** in **`2025+`**. 📱
# Why?
If you already have/use an `iOS` device,
I don't have to waste any time
explaining the value proposition to you;
just skip straight to the "What?" section below.
You probably have dozens of Apps installed on your `iPhone`
and if you want to learn how to _build_ them,
you're in the right place!If you _don't_ have/use an `iOS`, `iPadOS` or `macOS` device,
this repo/guide might not _feel_ relevant to you.But that's like saying the opposite sex
(the _other_ 50% of people)
is not relevant to you because you aren't one of them. 🙅
Because `iOS` / `iPhone` is 50% of the developed world;
even if you have no plans to use an `iPhone`,
they are still ubiquitous.And if you want to work as a **_full_ stack software engineer** in **2025**,
_not_ knowing how to target the most ubiquitous platform
for software delivery,
is career suicide.> **Note**: yes, we still prefer the `Web`
as our App delivery platform.
But Web Browsers on Mobile Devices
don't offer a truly _native_ experience
and still treat `PWAs` as second-class citizens;
especially on `iOS`
where `Apple` can't monetise `Apps`
that aren't installed via `AppStore`.## Extended / _Personal_ "Why?"
> **Note**: Skip this if you just want to crack on with learning!
I switched back to `iPhone` from `Android` in 2021
when `Google` stopped supporting/updating my
[`Pixel 3`](https://en.wikipedia.org/wiki/Pixel_3)
(which I _loved_) after less than 3 years of owning it.> **`Android` updates officially ended** for the `Pixel 3` on **October 5 2021**;
> **3 years** after **launch**!
> I got mine in **March 2019** so had **_less_ than 3 years** of supported use! 😢Meanwhile my _ancient_
[`iPhone 6`](https://en.wikipedia.org/wiki/IPhone_6)
from **2014** -
that I use for guided meditation -
still works fine.
I used it because it has a headphone jack! 🎧`iPhone` have a _much_ longer useful life (on average)
than comparable devices from other brands;
see below for _why_ ...
Yes, there are people still using 10+ year old `Samsung` devices
that they've taken good care of.
These people either don't _care_ about security updates
or they have rooted the device to use a
[custom ROM](https://en.wikipedia.org/wiki/Custom_firmware#Android)
and not need to rely on _official_ `Android` updates.
But these are definitely the exception, not the rule.According to `Android Police`,
the average lifespan of an `Android` smartphone
is 2.54-2.67 years.
ref:
[androidpolice.com/how-long-should-a-smartphone-last](https://www.androidpolice.com/how-long-should-a-smartphone-last/)`Google` _recently_ (finally) listened to customers
who complained about the short life (support cycle)
for `Android` devices and has now committed to
[**7 years**](https://9to5google.com/2024/04/21/google-pixel-7-years-updates-meaning/)
of support for _new_ `Pixel` devices.
But this is not extended back to older devices
e.g: 5 years old,
only the `new` ones you buy from now on.Again, my **`10+ Year Old`** `iPhone` still works without issues.
## Business Case
`Apple` has been doing a _much_ better job
of supporting older devices
because they are "**_free_ money**" to them.
Each _active_ `iOS` device is a potential customer for
the `AppStore`, `iCloud`, `Music` or `TV+` subscription.
`Apple` currently makes **`$96bn/year`**
in recurring revenue from **services**,
so `Apple` has every incentive
to keep older devices active.
Source: [trefis.com/data/companies/AAPL/7JGMQ7wT/Breaking-Down-Apple-s-Services-Revenue](https://www.trefis.com/data/companies/AAPL/no-login-required/7JGMQ7wT/Breaking-Down-Apple-s-Services-Revenue-)
> `Apple` _created_ the smartphone `App` _economy_.
> And `iPhone` continues to dominate it in every respect.
> Hence the _many_ lawsuits against `APPL` for antitrust:
[theverge.com/24107581/apple-antitrust-monoply](https://www.theverge.com/24107581/doj-v-apple-antitrust-monoply-news-updates)
> Even `if` the `DOJ`/`EU` successfully suit `APPL`,
> their devices & `AppStore` will _still_ out-sell everyone `else`
> and still be the best place to launch `Apps`.`iPhone` is definitely not perfect,
it's a _closed_ platform with strong lock-in.
Customers effectively pay `APPL` _rent_
for `iCloud` and other services
which are _adequate_ but not amazing.
If there was a truly _open_ alternative
that wasn't run by an `Ad` company
that harvests _all_ your data,
we would switch!But for all the `iPhone` flaws,
it's still the most popular device in the world by far.
It's not even close.
Source:
[counterpointresearch.com/insight/global-smartphone-sales-top-10-best-sellers](https://www.counterpointresearch.com/insight/global-smartphone-sales-top-10-best-sellers)So, as _small_ team of `people` building apps we need for _ourselves_
and that hopefully other `people` will love too,
we have to pick the platform where the most _paying_ `people` are;
that's `iOS`/`iPhone`.## Why Do _I_ Want to Build a _Native_ `iOS` App?
As a [reluctant] `iOS`, `macOS` & `Apple Watch` "**_power_ user**",
**I want** to build a **_Native_ App**
that **loads and runs as fast as possible**.
Our experience of using `Flutter` was that it was 20-30% slower to load
than a comparable `Swift`/`Objective-C` (truly native) app.
Our _basic_ app would often get stuck on the splash screen for multiple seconds on latest `iOS` devices (`iPhone 15 Pro/Max` at the time...), this was unacceptable.Finally there is no other way to build an `Apple Watch` or `iOS` home screen widget
than to use `SwiftUI`.
Since I want to build _both_ of these
and use other native-only APIs like
"[Dynamic Island](https://support.apple.com/en-gb/guide/iphone/iph28f50d10d/ios)" -
a
[ gimmick](https://www.reddit.com/r/iphone/comments/x8vp9o/do_you_think_the_dynamic_island_is_a_gimmick/)
for sure but a _delightful_ interaction -
I _have_ to use `SwiftUI`.# What?
Learn `iOS` development
using `Swift` + `SwiftUI`
from first principles
to build a **_truly_ native experience** on `iPhone`;
the most ubiquitous device.1> **1**: This is a bit of a rabbit hole. 🐇 🕳️
> _Definitely_ not saying `iOS` has more "users" than `Android`,
> that's patently `false`;
> globally `Android` has 3.9 billion active users,
> whereas `iPhone` has only
> [2.35 billion](https://www.macrumors.com/2025/01/30/apple-active-devices-worldwide-record/) active devices.
> But as a **_single_ device** to target when building your App,
> `iPhone` has _far_ more acvtive units than any _single_ `Android` device
[explodingtopics.com/iphone-android-users](https://explodingtopics.com/blog/iphone-android-users)
> The easiest way to understand
> In India, `Android` holds a **92%** market share,
in **China**, it has a **67%** market share
and in the **Africa** **89%** as of June 2025.# Who?
These notes are primarily a tool to document _our_ learning journey.
A reference we can consult if we need a quick refresher.
We try not to skip any steps and trouble-shoot errors when needed.
As always, our notes are fully open so that _anyone_
(including [ClosedAi](https://www.google.com/search?q=openai+closedai) bots)
can learn _faster_ than we did.If you find this repo useful, please star on `GitHub`. ⭐️🙏
# How?
This section details everything you need to get started
without excessive hand-holding.
But if you get stuck, please open an issue## Prerequisites
Some basic programming experience is desireable but not essential.
If you don't have _any_ prior experience in programming,
I'd recommend learning `JavaScript` or `Python` first
as the learning curve is less steep.If you already know a couple of programming languages,
`Swift` has a pretty _gentle_ learning curve
and the Official Docs are more than adequate
for learning _everything_ you need:https://docs.swift.org/swift-book/documentation/the-swift-programming-language/thebasics/
## Required Hardware
You'll need a `Mac` laptop with an `Apple Silicon` processor.
e.g: any `M1` or greater.
No need for any latest+greatest top spec `Mac`;
just the one you can afford (or already have!).I'm writing this
and doing all my `Swift` learning
on a base model `M1 MacBook Air`;
the **_cheapest possible_ Mac laptop**
with an `Apple Silicon` unified processor.`eBay` has _plenty_ of `M1 MacBook Air` units
people are selling off for cheap:
[ebay.com/sch/i.html?_nkw=macbook+m1](https://www.ebay.co.uk/sch/i.html?_nkw=macbook+m1)
That's not a typo!
Depending on where you are
(and barring any silly import tarrifs/taxes),
you could get the _exact_ laptop I'm using
for less than £150 ($200 USD or 172 EUR) at the time of writing.