Recreating a fully functional version of iOS 4 in SwiftUI.

Last update: Jun 21, 2022

alternatetext alternatetext alternatetext alternatetext


Updates: Version 1.0 is currently available 🎉
While I work on fixing an issue in Xcode 12.5+ with LazyVGrid, I recommend you build using Xcode 12.4 and below.

What and Why?

OldOS is a testament to the days of yesteryear, showcasing what iOS once was ten years ago. The ethos of the app is to merge the technologies of today with a pixel-perfect recreation of the user experience of the past. The vast majority of apps in OldOS are fully functional — meaning they seamlessly integrate with the data on your phone to deliver a live, emulator-esque experience. What does this mean? Well, you can play your music in iPod, get directions in Maps, surf the web in Safari, view the current weather in Weather, and much more. By the same token, no shortcuts were taken in fully fleshing out the operating system. You can change your background, adjust settings, search apps, et cetera. There are a few apps still not ready for primetime but don't worry, they're coming soon.

With OldOS, you no longer need to worry about securing a legacy iPhone to experience nostalgia — it's available on your daily driver.

Part of the goal with OldOS is to enable anyone to understand how iOS works and demonstrate just how powerful SwiftUI truly is. For that reason, the entire app is open-sourced — enabling developers to learn about, modify, and add to the app. I thought building this over my last six or so months in high school and sharing it with the world would be a fun and productive endeavor.

What's Special

* 🧑‍💻 Built almost entirely using SwiftUI.
* 🎨 Designed to be as close to pixel-perfect as possible.
* 📱 Fully functional, perhaps even usable as a second OS.
* ❤️ A testament to the work of Apple employees of both the past and the present.
* 🗺️ Fully open source for all to learn, modify, and build on.

Where to Begin

The project is logically structured in files by app. Inside each app file, you'll see code and commentary behind it. Aside from main apps, there is the Common file. My mindset was to build the app in the same way Apple built interface builder — you have a collection of UI elements at your disposal that are bases. You can then make a copy in whatever other file you'd like if you require custom abilities. If you just need the generic version, you can use the generic. Hence, common, containing all your common UI elements. Lastly, there is HomeScreen, and LockScreen — essentially making up the Springboard. Lastly, in Assets.xcassets, you'll find all the image assets structured by app.

Imagery

Thanks

Thanks to all who decide to use, learn from, and modify this project. As well as all the creators of libraries imported. This was a blast to create and I hope you enjoy it. I built this project while I had a little bit of time before college. If you enjoy it, please consider providing any little bit of support you can — it truly means a million.

Buy Me A Coffee

License

Creative Commons Attribution 4.0: https://creativecommons.org/licenses/by/4.0/

GitHub

https://github.com/zzanehip/The-OldOS-Project
Comments
  • 1. Design error on Home-Button iPhones

    Hi, I’ve sideloaded OldOS with AltStore and on my test iPhone (iPhone 6s) is looks like this, the Dock is very Buggy, I hink its because the Fake Home-Button.

    And the bar on the Top is bigger, than normal im a App in OldOS

    E5A86680-BDA1-42EE-9957-A6139629D38B

    Reviewed by TheBalkanDev at 2021-06-18 10:27
  • 2. Unable to build on Xcode 12.3

    I really want to test OldOS, and the TestFlight is already full. I decided that I can build it with Xcode, so I removed Xcode 12.5 and downloaded 12.3, just as recommended. However, I only have a personal developer account, and I can't sign it. It throws this error: "Personal development teams, including {account name}, do not support the Access WiFi Information and Game Center capabilities.". Is there any workaround for this? I really want to install it to my device. Maybe its possible to make an IPA, and install it with Cydia impactor? Thanks

    Reviewed by Ifuxit at 2021-06-12 09:37
  • 3. Safari only loads website on first page

    https://user-images.githubusercontent.com/49427963/121764575-f06ea400-cb7f-11eb-873e-c827ba71a24a.mov

    When I try to open a website in a new tab in Safari, it loads the page on first tab.

    • iOS 15 Dev beta 1
    • self-signed IPA from github
    Reviewed by hellojsna at 2021-06-12 04:16
  • 4. Can you Release Build 9 as .ipa and Suggestion

    I’ve sideloaded OldOS with AltStore, but Build 7 is buggy. Can you Release the newest Build as .ipa file? I would do it myself but I don’t have any Swift knowledge.

    And can you make, that you can import music from the Files App into iPod App?

    Reviewed by TheBalkanDev at 2021-06-20 09:05
  • 5. Home screen can be scrolled vertically after opening Camera or Weather

    Don't have a video for this, but after opening Weather or Camera, I'm able to "scroll" up and down on both home pages. Releasing my finger will cause the page to snap back to it's original position.

    Reviewed by HunterBoy344 at 2021-06-13 14:28
  • 6. This is really cool!

    I am seriously blown away by this project of yours. It is seriously cool, mad props!! 💯

    Also I think the fact that the browser comes with your website open in one of the tabs was a neat little easter egg :)

    That is all

    Reviewed by ctsrc at 2021-06-10 21:14
  • 7. add info.plist property to force light mode

    Hey man! Love this project, looks great and its suuuch a rush seeing that lovely oldOS!

    I did notice it doesn't work in dark mode so as a temporary fix i added force light mode option 🙌 IMG_27C3F3B849D0-1

    Reviewed by roblack at 2021-06-09 19:31
  • 8. Xcode 12.5

    • Adds Home screen icon shadows
    • Adds the ability to search for new locations in Weather
    • Upgraded to Xcode 12.5 build system
    • Now using Fastlane for deployment
    Reviewed by zzanehip at 2021-10-26 19:09
  • 9. Fade background transition from springboard to spotlight 💡

    When dragging from page 1 of Home Screen to spotlight, the transition is sudden which appears jarring.

    This makes the transition smooth, however unsure why dragging back again does not have the animation. (SwiftUI bug?)

    Video shows the before and after:

    https://user-images.githubusercontent.com/16542463/121783219-40ac2d00-cba5-11eb-895d-15e1faa596ae.mov

    Reviewed by atrinh0 at 2021-06-12 16:43
  • 10. Page indicators on the home screen to behave like a page control

    Fixes: https://github.com/zzanehip/The-OldOS-Project/issues/4

    The tiny icons can be pressed to navigate to those pages. Either side of the icons can also be pressed to navigate a page at a time, similar to a page control.

    Reviewed by atrinh0 at 2021-06-12 14:06
  • 11. Spotlight search on home button 🔍

    For added realism, pressing the home button when already on the first page of the springboard shows the spotlight search.

    https://www.youtube.com/watch?v=hMZXnyk2SJA

    Reviewed by atrinh0 at 2021-06-12 10:27
  • 12. Problems with the screen size using an iPhone SE (2016)

    The 1st gen iPhone SE can install this app but because of its small screen you can not see everything and some parts get cut. I think this would get solved by removing the borders on the sides and above the screen and reducing the one below with the button (only in this phone).

    Reviewed by pmarimon at 2022-05-02 18:08
  • 13. App Switcher: Close button hard to hit

    The little minus button on the upper left corner of the respective app icon is very hard to hit. Maybe increase the size of the hit box to protrude out of the actual buttons boundaries.

    Reviewed by JonasGrunau at 2022-03-26 17:10
  • 14. [Feature Request] Add inertial scrolling

    One of the primary features that Steve Jobs cared about with the original iPhone, apparently. It's a core part of the iOS feel, and is still used all over iOS to this day. Please add inertial scrolling to oldOS!

    Reviewed by HenrikoMagnifico at 2022-01-25 19:50
  • 15. Mail doesn’t load email content

    image Not much to say here. I have enabled less secure app access and signed in successfully; it just won't load the contents of any message. I even tried a message containing only text and that didn't work either.

    iPhone 6S, iOS 15.1

    Reviewed by HunterBoy344 at 2021-11-24 02:32
A functional tool-belt for Swift Language similar to Lo-Dash or Underscore.js in Javascript

Dollar Dollar is a Swift library that provides useful functional programming helper methods without extending any built in objects. It is similar to L

Jun 21, 2022
Functional data types and functions for any project

Swiftx Swiftx is a Swift library containing functional abstractions and extensions to the Swift Standard Library. Swiftx is a smaller and simpler way

Jun 22, 2022
Functional programming in Swift

Swiftz Swiftz is a Swift library for functional programming. It defines functional data structures, functions, idioms, and extensions that augment the

Jun 22, 2022
SwiftUI library to create fully customizable input stepper.
SwiftUI library to create fully customizable input stepper.

SwiftUI-InputStepper Swift package for creating numerical input stepper. An example of input stepper created with this library It supports long press

Dec 10, 2021
Monitor iOS app version easily.

AppVersionMonitor Monitor iOS app version easily. You can get previous version and installation history. Usage To run the example project, clone the r

Jun 19, 2022
Simple and Lightweight App Version Tracking for iOS written in Swift

AEAppVersion Simple and lightweight iOS App Version Tracking written in Swift I made this for personal use, but feel free to use it or contribute. For

Feb 9, 2022
A way to easily add Cocoapod licenses and App Version to your iOS App using the Settings Bundle
A way to easily add Cocoapod licenses and App Version to your iOS App using the Settings Bundle

EasyAbout Requirements: cocoapods version 1.4.0 or above. Why you should use Well, it is always nice to give credit to the ones who helped you ?? Bonu

Apr 6, 2022
Alert popup to notify your users if they use an unsupported iOS version

UnsupportedOSVersionAlert This source code alerts your users if they use your app with an unsupported version of iOS (e.g. iOS 10.0 beta). The alert l

Mar 11, 2019
Checks if there is a newer version of your app in the AppStore and alerts the user to update.
Checks if there is a newer version of your app in the AppStore and alerts the user to update.

YiAppUpdater Checks if there is a newer version of your app in the AppStore and alerts the user to update. Installation YiAppUpdater is available thro

Mar 17, 2022
Prueba versión Swift

?? APOD-SoyYO-Swift ?? Prueba técnica Dependencias: Cocoapods ¿Como correr el App? Descarga el proyecto usando git git clone https://github.com/hd3vC0

Dec 23, 2021
A simple utility allowing to detect Swift version at runtime.

SwiftVersionDetector SwiftVersionDetector allows you to detect Swift version at runtime. Note that detecting the Swift version of the machine on which

Jun 9, 2022
Unit-Converter-SwiftUI - A simple Unit Converter iOS app built in the process of learning SwiftUI
Unit-Converter-SwiftUI - A simple Unit Converter iOS app built in the process of learning SwiftUI

SwiftUI-Unit-Converter A simple Unit Converter iOS app built in the process of l

Feb 11, 2022
🟣 Verge is a very tunable state-management engine on iOS App (UIKit / SwiftUI) and built-in ORM.
🟣 Verge is a very tunable state-management engine on iOS App (UIKit / SwiftUI) and built-in ORM.

Verge is giving the power of state-management in muukii/Brightroom v2 development! Verge.swift ?? An effective state management architecture for iOS -

Jun 17, 2022
LanguageList for SwiftUI supporting iOS/macOS/tvOS

LanguageList for iOS, macOS and tvOS LanguageList is created and maintaned with ❥ by Sascha Muellner. What? This is a SwiftUI package with support for

Jan 26, 2022
I needed to detect idle mode on a SwiftUI app for a kiosk, so I did it.

Inactivity I needed to detect idle mode on a SwiftUI app for a kiosk, so I did it. Usage Important: You must set the Principal class of your app to In

Jun 24, 2022
SnippetsLibrary - Code snippets library for SwiftUI Devs.
SnippetsLibrary - Code snippets library for SwiftUI Devs.

SnippetsLibrary is a helpful tool for SwiftUI developers to help with their daily coding life. SnippetsLibrary contains all the needed code snippets for you to view, edit, or add more and more. This will make your daily work easier and faster.

May 20, 2022
Safe and fast access to SwiftUI PreviewDevice

SafePreviewDevice Motivation At WWDC 2019, Apple announced SwiftUI a new library for building UI in a simple and fast way. Xcode’s SwiftUI preview let

Feb 15, 2022
Pigeon is a SwiftUI and UIKit library that relies on Combine to deal with asynchronous data.

Pigeon ?? Introduction Pigeon is a SwiftUI and UIKit library that relies on Combine to deal with asynchronous data. It is heavily inspired by React Qu

Jun 8, 2022
Customize and resize sheets in SwiftUI with SheeKit. Utilise the power of `UISheetPresentationController` and other UIKit features.
Customize and resize sheets in SwiftUI with SheeKit. Utilise the power of `UISheetPresentationController` and other UIKit features.

SheeKit Customize and resize sheets in SwiftUI with SheeKit. Utilise the power of UISheetPresentationController and other UIKit features. Overview She

Jun 10, 2022