What app makers were talking about in 2015: a look back
Apple Watch, open source Swift, Android 6.0 runtime permissions, Material Design and app indexing: the mobile changes of 2015 and how each one has aged.

Updated 15 Oct 2026
Eleven years is a long time in mobile. In 2015 the iOS world was still learning a young language, Android apps received every permission at install time, and a watch was the device everyone had an opinion about. A surprising number of habits app teams now take for granted started that year, and a few of its big bets quietly disappeared.
What follows is a look back at the changes app makers were discussing in 2015, with dates checked against Apple's and Google's own records, and a note on how each one aged.
Contains affiliate links.
A computer on the wrist
Apple Watch opened for pre-orders on April 10, 2015 and went on sale on April 24. The first third-party apps were not quite watch apps. Under WatchKit, an app's code ran as an extension on the paired iPhone, and only the interface lived on the watch. Native apps that run on the watch itself arrived with watchOS 2 in September.
The design conversation that followed proved useful well beyond watches. Interactions measured in seconds, information taken in at a glance, and notifications that carry the whole message rather than a teaser all became standard advice for phone notifications and widgets too.
Swift grows up and goes open source
Swift was a year old in 2015 and changing quickly. Swift 2, announced at WWDC in June and ready for App Store apps in September, brought a new error handling model and protocol extensions, the feature behind much of the period's talk about protocol-oriented programming. Xcode 7, released in September, let developers run apps on their own iPhone without a paid membership, which made trying iOS development a lot cheaper. At WWDC Apple had also folded its separate iOS, Mac and Safari developer programs into one membership.
Then, on December 3, 2015, Apple released Swift as open source under the Apache 2.0 license, with a new home at Swift.org and a port for Linux. It signaled that Swift was meant to be more than an iPhone language, and it opened the door to Swift on servers and other platforms.
iOS 9: links, search and smaller downloads
iOS 9 shipped on September 16, 2015, and its developer features read like a list of things apps still rely on:
- Universal Links let apps replace custom URL schemes with ordinary HTTPS links that open the app when it's installed and the website when it isn't.
- New search APIs (NSUserActivity, Core Spotlight and web markup) put app content into Spotlight and Safari search.
- App Thinning delivered only what each device needed, through slicing, on-demand resources and bitcode.
- App Transport Security, on by default, pushed apps toward HTTPS with TLS 1.2 and forward secrecy.
- Safari gained content blocking extensions, so third-party apps could supply block lists to the browser.
- iPad gained Slide Over, Split View and Picture in Picture, and the iPhone 6s brought 3D Touch with home screen quick actions and peek and pop.
Android 6.0 Marshmallow asks first
Google showed the next Android as Android M at Google I/O on May 28, 2015, named it Marshmallow in August, and shipped it in the fall as Android 6.0, API level 23. For app developers the headline was the permissions model. Apps targeting API level 23 had to check for and request permissions at runtime with checkSelfPermission() and requestPermissions(), and the platform notes say users could grant or revoke permissions individually for installed apps.
That forced a design question many teams had avoided: why does the app need this, and when should it ask? Asking in context, after explaining the benefit, became the norm, and our guide to onboarding flows people finish still treats permission priming as a core pattern. Marshmallow also brought Doze and App Standby for idle devices, verified App Links, a standard fingerprint API, Auto Backup to Google Drive, and the removal of the Apache HTTP client, which pushed older projects onto HttpURLConnection or a networking library.
Material Design moves into everyday apps
Google announced Material Design at Google I/O in June 2014, and it shipped with Android 5.0 Lollipop. During 2015 it spread from Google's own apps to everyone else's, helped by the Android Design Support Library, released in May. The library brought the floating action button, snackbars, tabs, a navigation drawer view, floating labels for text fields and a coordinated scrolling framework to devices running Android 2.1 and higher. Its descendants live on in Material Components and in Jetpack Compose's Material libraries.
App indexing blurs the line between web and app
Google spent much of 2015 pulling app content into search. In February it said it would use information from indexed apps as a ranking factor for signed-in users who had the app installed. In April it said Android users could start seeing install buttons for apps whose indexed content matched a search, and in May App Indexing began extending to iOS apps with a small group of partners. With Universal Links on iOS and verified App Links on Android arriving the same year, the expectation that a web link should open the right screen in an app became the default.
The stores begin to look familiar
In March 2015 Google said it had begun reviewing apps before publication some months earlier, and it introduced age ratings through the International Age Rating Coalition, with a rating questionnaire required for new apps and updates from May. At I/O it launched store listing experiments, A/B tests of listing text and graphics, alongside developer pages. In June it announced the end of development and official support for the Android Developer Tools in Eclipse by the end of the year, leaving Android Studio as the way forward.
Cross-platform work had its own milestone. Facebook released React Native for iOS in March 2015 and added Android in September. Our guide to choosing a cross-platform framework shows where that line of thinking has gone since.
How the 2015 changes aged
| 2015 change | What it did | Where it stands now |
|---|---|---|
| Android runtime permissions | Ask for sensitive access in use, not at install | The standard model on both platforms, with finer options added since |
| Universal Links and App Links | Verified web links open the app | Still the normal way to deep link |
| App Thinning | Device-specific downloads | Slicing remains; Apple later deprecated bitcode |
| 3D Touch | Pressure-sensitive shortcuts | Dropped; long press took over |
| Open source Swift | Apache 2.0 license, Linux port | Swift now runs well beyond Apple's platforms |
| Store listing experiments | A/B tests on Google Play listings | Still in Play Console; Apple added product page tests years later |
| Native watch apps | Code runs on the watch itself | Independent watch apps without an iPhone counterpart came later |
Three habits from that year are worth keeping. Ask for permissions at the moment they make sense. Design for the glance, because a notification read in two seconds is the same problem the first watch apps faced. And make every important screen reachable from an ordinary web link.
Questions
When did Swift become open source?
On December 3, 2015. Apple published the language, its supporting libraries, the debugger and a package manager under the Apache 2.0 license with a runtime library exception, launched Swift.org, and released a Linux port the same day.
Did the first Apple Watch apps run on the watch?
Not really. At launch, third-party apps built with WatchKit ran their code as an extension on the paired iPhone, with only the interface installed on the watch. watchOS 2, released in September 2015, let developers build native apps that run on the watch itself.
What did Android 6.0 change for permissions?
Apps targeting API level 23 had to request dangerous permissions, such as location, camera and contacts, at runtime instead of receiving them all at install. Users could also grant or revoke individual permissions for installed apps, so every app had to cope gracefully with a refusal.
Why do 2015 features still matter to app teams?
Because they underpin current practice. Deep linking, runtime permissions and store listing tests all date from that year, and older codebases still carry workarounds from the period. If you maintain such an app, search it for permission requests at launch and for custom URL schemes; both have better replacements that arrived the same year.
More on tech life

USB-C hub for MacBook: what to check before you buy, and picks
What to check in a USB-C hub for a MacBook: pass-through power, how many screens macOS will extend, USB-A for test phones, card readers, Ethernet and heat.

Your first meetup talk: from the pitch to the last question
A ten-step guide to a first talk at an app meetup: picking a problem, pitching the organizer, building the outline, rehearsing, demos and handling questions.

A mobile developer's desk: hubs, cables, chargers and stands
What a mobile developer's desk needs: USB-C hubs and specs that matter, data versus charging cables, multi-port chargers, phone stands and a second screen.