SALE ENDS TODAY: Save 50% on all Swift books and bundles! >>

How it works

Welcome to the 100 Days of SwiftUI! This is a free collection of videos, tutorials, tests, and more, all drawn from around my work here on Hacking with Swift, and all designed to help you learn SwiftUI effectively.

It’s aimed squarely at beginners who want to learn to build real iOS apps, but struggle to find a good, free course that can help them achieve their goals. If that’s you, welcome – I hope you’re ready to show the iOS world what you’re made of!

If you’re looking for my original 100 Days of Swift, click here – 100 Days of SwiftUI and 100 Days of Swift both share the same 15-day introduction to Swift, but then one focuses on SwiftUI whereas the other teaches UIKit, SpriteKit, and more.

PS: If you have questions, ask me – I’m here to help!



If you want to make a success of this course, there are only two rules:

  1. Every day you spend one hour reading or watching SwiftUI tutorials, or writing SwiftUI code.
  2. Every day you post about your progress to the social media site of your choosing. Tell people!

I’ll be providing all the material you need to follow along, so all you need to do is show up ready to learn.

I’ve tried to make sure it definitely takes less than one hour to complete each day, so if you have some experience with Swift you’ll hopefully find you can complete each day well under that target.



I’ve met so many who have tried and failed to learn Swift, often multiple times, and if you’re here there’s a good chance you’ve already had a few false starts already.

Not this time. This time you’re going to learn it for real, and in just 100 days you’ll have built many full apps that you can be proud of.

You’ve already read the two rules of these 100 days, but to maximize your chance of rocking this course I have a few tips:

  1. It’s a marathon, not a sprint. Don’t charge ahead thinking you’re “learning faster”, because there’s a high chance you’ll get lost. Take your time!
  2. Don’t fall prey to shiny object syndrome. The lure of spending $50 on another course is high, I know, but you don’t learn anything by buying books. Your best chance of success is sticking with the 100 days shown here and really make it work.
  3. Don’t lone wolf it. You aren’t learning by yourself – I’m here to help as are many others. If you have questions, tweet me at @twostraws and I’ll do my best to help!
  4. Use the consolidation days. These are spaced throughout the 100 days to give you time to review what you’ve learned and make it really sink in. Use them to go back over days you weren’t sure about, complete any homework you missed, or just do some free coding.
  5. I have a glossary of common Swift terms that you should bookmark for easy reference.
  6. If you get stuck with some SwiftUI code, you should refer to my free online book SwiftUI by Example – it has over 300 pages of sample code and solutions for SwiftUI.
  7. Download my Unwrap app from the App Store. It works on iPhone and iPad, contains the first 12 days of this course plus lots of bonus activities, and is free with no in-app purchases.
  8. SwiftUI is very new, and occasionally gives you error messages that are misleading or downright wrong. If you’re finding it hard, don’t worry – you’ll get there!
  9. You do not need to install Catalina to build apps with SwiftUI. Catalina gives the ability to have instant previews of your designs without running in a simulator, but you can still build SwiftUI apps just fine with Mojave.

The Course

Days 1-12: Introduction to Swift

The first 12 days provide a gentle warm up for your SwiftUI learning as we cover all the fundamentals of the Swift programming language. You’ll watch about a selection of one-minute videos every day, and complete short quizzes about each of those videos.

If you have already completed my 100 Days of Swift you can skip these first 15 days because they are the same.

  • Day 1 – variables, simple data types, and string interpolation
  • Day 2 – arrays, dictionaries, sets, and enums
  • Day 3 – operators and conditions
  • Day 4 – loops, loops, and more loops
  • Day 5 – functions, parameters, and errors
  • Day 6 – closures part one
  • Day 7 – closures part two
  • Day 8 – structs, properties, and methods
  • Day 9 – access control, static properties, and laziness
  • Day 10 – classes and inheritance
  • Day 11 – protocols, extensions, and protocol extensions
  • Day 12 – optionals, unwrapping, and typecasting


Days 13-15: Consolidation I

You just learned a lot about Swift in only 12 days, so before we continue it's important you reflect on what you've learned: look for weak spots, re-watch videos, re-take tests, and so on, until you feel comfortable that you have mastered all the Swift language fundamentals covered in days 1-12.

  • Day 13 – Swift review, day one
  • Day 14 – Swift review, day two
  • Day 15 – Swift review, day three


Days 16-24: Starting SwiftUI

Now that you’ve mastered the basics of Swift, in these days you’ll start building real SwiftUI apps using what you learned.

  • Day 16 – Project 1, part one
  • Day 17 – Project 1, part two
  • Day 18 – Project 1, part three
  • Day 19 – Challenge day
  • Day 20 – Project 2, part one
  • Day 21 – Project 2, part two
  • Day 22 – Project 2, part three
  • Day 23 – Project 3, part one
  • Day 24 – Project 3, part two


Day 25: Consolidation II

In the last few days we covered some of the fundamentals of iOS development, and before we move on to the next set of projects it’s important to take a step back and review what you’ve learned.

  • Day 25 – Milestone: Projects 1-3


Days 26-34: Expanding your skills

In these next three projects we’re going to develop your SwiftUI skills in new directions, while also giving you chance to practice the fundamentals.

  • Day 26 – Project 4, part one
  • Day 27 – Project 4, part two
  • Day 28 – Project 4, part three
  • Day 29 – Project 5, part one
  • Day 30 – Project 5, part two
  • Day 31 – Project 5, part three
  • Day 32 – Project 6, part one
  • Day 33 – Project 6, part two
  • Day 34 – Project 6, part three


Day 35: Consolidation III

Now that your SwiftUI skills are starting to solidify, it’s time to review all the new things we’ve covered and get busy with another project all of your own.

  • Day 35 – Milestone: Projects 4-6


Days 36-46: Scaling up to bigger apps

Your core SwiftUI skills are strong, so it’s time to push past the basics and start building bigger apps.

  • Day 36 – Project 7, part one
  • Day 37 – Project 7, part two
  • Day 38 – Project 7, part three
  • Day 39 – Project 8, part one
  • Day 40 – Project 8, part two
  • Day 41 – Project 8, part three
  • Day 42 – Project 8, part four
  • Day 43 – Project 9, part one
  • Day 44 – Project 9, part two
  • Day 45 – Project 9, part three
  • Day 46 – Project 9, part four


Days 47-48: Consolidation IV

You’ve tackled some heavyweight skills now, so before we move on it’s time to review what has been covered, go into detail on a handful of topics, and face a fresh challenge.

  • Day 47 – Milestone: Projects 7-9
  • Day 48 – Expanding your horizons


Days 49-59: Focus on data

In these projects we’re going to start looking more carefully at how we can send, retrieve, and store data in our SwiftUI apps.

  • Day 49 – Project 10, part one
  • Day 50 – Project 10, part two
  • Day 51 – Project 10, part three
  • Day 52 – Project 10, part four
  • Day 53 – Project 11, part one
  • Day 54 – Project 11, part two
  • Day 55 – Project 11, part three
  • Day 56 – Project 11, part four
  • Day 57 – Project 12, part one
  • Day 58 – Project 12, part two
  • Day 59 – Project 12, part three


Days 60-61: Consolidation V

You’ve learned about data, data, and some more data, so it’s time to pause and reflect on what was covered before tackling another new challenge.

  • Day 60 – Milestone: Projects 10-12
  • Day 61 – Time for Core Data


Days 62-73: Views and view controllers

In these projects the difficulty starts to ramp up as we look at how you integrate code from frameworks outside of SwiftUI, including UIKit and MapKit.

  • Day 62 – Project 13, part one
  • Day 63 – Project 13, part two
  • Day 64 – Project 13, part three
  • Day 65 – Project 13, part four
  • Day 66 – Project 13, part five
  • Day 67 – Project 13, part six
  • Day 68 – Project 14, part one
  • Day 69 – Project 14, part two
  • Day 70 – Project 14, part three
  • Day 71 – Project 14, part four
  • Day 72 – Project 14, part five
  • Day 73 – Project 14, part six
  • Day 74 – Project 15, part one
  • Day 75 – Project 15, part two