macOS Pathway
Get started with this easy-to-navigate collection of videos, documentation, and tools to build great apps and games.
Get to know macOS
Create apps with incredible performance and built-in privacy. The Mac is all about speed and power, and macOS helps you maximize the performance of your apps. Mac is ideal for apps that require raw processing power to execute tasks as quickly as possible. However, you also use it for day-to-day tasks such as communication, news and information, social media, games, and much more.
Assemble your toolbox
Xcode offers the tools you need to develop, test, and distribute apps for all Apple platforms, including intelligent code completion, simulators for Apple devices, advanced profiling and debugging tools, and more.
Swift is a powerful and intuitive programming language for all Apple platforms. It’s easy to get started using Swift, with a concise-yet-expressive syntax and modern features you’ll love. Swift code is safe by design and produces software that runs lightning‑fast.
SwiftUI helps you build great-looking apps across all Apple platforms with the power of Swift — and surprisingly little code.
Dive into design
An app that offers an engaging experience keeps people coming back. To create this, your app should have an appealing UI, intuitive interactions, an easy-to-understand layout, and emphasis on the right content throughout.
To begin the design process, we recommend Apple’s Human Interface Guidelines (HIG). The HIG offers invaluable information on how to design your app’s interface, navigate content, and manage interactions. We also encourage you to explore the relevant Apple Design Resources.
And if you’re looking for inspiration, check out these great foundational design videos:
Mac gives you ample screen space to build a unique and rich interface, so think about how to present that information in an intuitive way. Also consider the impact that system-specific design patterns can have on your UI.
- Windows define the core of your app’s UI. Create one window or multiple windows, and place similar or different content in each one. Set your windows to a specific size or let people resize them. Support full-screen mode for a distraction-free working environment.
- Menus define the actions people take on your content. The menu bar at the top of the screen displays the active app’s menus. Identify relevant actions in your own app, and craft menus that reflect how people interact with your content.
- The Dock offers convenient access to apps, documents, windows, and folders. Add a custom Dock menu to display frequently accessed commands, or add a badge to your app’s icon to signal new content.
Certain features and technologies are essential for all macOS apps. When planning your initial UI, make sure to adopt the following features:
Window controllers
On macOS, a window controller manages the content for one window in your interface, including loading, displaying, and closing the window. SwiftUI uses scenes to manage windows. AppKit uses NSWindowController objects.
Adopt best practices
Make sure your app offers the best possible experience for everyone by keeping these practices in mind:
Prioritize privacy
At Apple, we believe privacy is a fundamental human right. Access user or device data only with the user’s informed consent obtained in accordance with applicable law. In addition, take appropriate steps to protect user and device data, and be transparent about how you use it. If you collect data, offer a privacy statement that explains what you collect and how you use that information.
Secure the data you collect and store
If you do collect data, make sure you protect that data from malicious attacks. Adopt passkeys as a secure alternative to passwords. Store personally identifiable information, financial data, or other sensitive data in the user’s encrypted Keychain.
Audit your accessibility support
Apple builds accessibility support right into its technologies, but screen readers and other accessibility features rely on information your app provides. SwiftUI and AppKit can describe each piece of your UI, but only you know how those pieces work together. Review accessibility labels and other descriptions to make sure they provide helpful information, and make sure focus-based navigation is simple and intuitive.
Internationalize and localize your app
Embrace a global market by localizing your app for other regions and languages. Prepare your app using the Foundation framework, which provides code to format strings, dates, times, currencies, and numbers for different languages and regions. Ensure your UI looks good for both left-to-right and right-to-left languages. Localize app resources and add them to your Xcode project.
Design for everyone
Consider social and cultural differences when developing content. Learn how to design your apps and games to resonate with people from different social and cultural backgrounds.
Test and debug your app thoroughly
During the development cycle, address problems as they arise using the built-in Xcode debugger.
Optimize performance
Identify bottlenecks and other performance issues in your code with the Instruments tool in Xcode. Profile your running code, find memory leaks, analyze resource usage, and much more.
Build for multiple Apple platforms
Run your iOS app unmodified on Macs with Apple silicon
Macs with Apple silicon can run your iOS apps — no porting process required. iOS apps also run even better on macOS when you utilize the latest iOS features in your applications.
Make a Mac version of your iPad app
If you have an existing iPadOS app, you can use Mac Catalyst to create a version of your app that runs on Mac.
Distribute your app
Distribute your app or game on 175 storefronts on the App Store. Choose from a variety of business models, including free, freemium (free with optional In-App Purchases), paid, and more. Select your business model early in your app development to better provide people with a great app experience.
Go further
Once you have an app up and running, look for additional ways to improve the experience. Little things can make a big difference, whether it’s adding a particular feature, or presenting your content in a different way.
Dive into macOS app documentation, a more advanced and comprehensive resource for growing and expanding your app’s features and reach.