Skip to content
Yuri Strot edited this page May 15, 2022 · 2 revisions

Macaw development has been stopped. TL;DR:

  • You can continue to use this framework as is: expect no new features or bug fixing; however, it will be updated to work in future Xcode releases.
  • if you need some good declarative UI framework, please use SwiftUI.
  • If you need SVG support, please use SVGView.
  • If you’d like to fix something in Macaw, feel free to fork this repo. Publish your PRs so that other people can use it as well. Some PRs will be merged from time to time.

Why did we stop?

Before we answer this question, let’s consider another one - why did we start?

In 2015, when our team decided to dive into the iOS world we were surprised to find that this great platform didn’t have a good UI framework. UIKit was good enough to build a UI around predefined native components. But when you try to create something custom or complex you have just a few very basic tools, like Canvas. We came from the Desktop world, and at that time it was clear that a modern UI framework should be declarative, reactive, based on vector graphics and integrated with a designer tool. In other words, it should be powerful and easy to use. That’s why we started to work on Macaw - a general purpose UI framework to create beautiful interfaces.

In 2016, we decided to integrate Macaw with some open standard to allow designers to build interfaces in any designer tool and then use them in iOS/macOS. That’s why SVG support is built into Macaw. And in the end this support became the most useful feature of our framework.

Why is there no need for Macaw anymore?

In 2019, when SwiftUI was announced at WWDC, it became clear that Macaw days are numbered. Conceptually, SwiftUI was a complete implementation of what we were trying to do with Macaw. Yes, it wasn’t stable, only supported iOS 13+ and missed a lot of must-have features. But all these were just a matter of time. So we rapidly switched to building SwiftUI-based applications and spent less and less time on Macaw.

After 3 years with SwiftUI, our team almost stopped using Macaw in our projects (except for really old ones) and right now we don’t see any benefits of using Macaw instead of creating interfaces with SwiftUI. SwiftUI is not ideal, but Macaw can no longer compete with it anyway.

What about SVG support?

SwiftUI is intended for developers, not designers. And we still need a tool to export designer artwork from like Figma to SwiftUI.

Right now you can import SVG images and use them in your app. But it’s not the same as we did with Macaw, because our framework gave you the ability to change, animate and interact with your graphics.

That’s why we decided to build SVG support on top of SwiftUI and released SVGView. It’s not completely ready, but it’s already more or less competitive with Macaw. Moreover, our goal is to finally build 100%-support of the SVG standard. Well, at least 95% :)

So, should Macaw be replaced in any project?

Not really. If you’re fine with your current integration with Macaw you can continue to use it. We’re still going to update Macaw for every Xcode/iOS/macOS release. However, starting now we’re not planning to add new features or fix existing bugs. If you would like to make some changes please feel free to fork Macaw and update it as you need.

Does it make sense to create new PRs?

Actually, yes. You can publish your PRs so that other people can use it in their projects. And check out current PRs, there are already some fixes of issues that may bother you. From time to time we will be merging some PRs to fix the most annoying issues. We will make sure they won’t break anything, stability in old projects is still our main priority.

Does it make sense to use Macaw for a new project?

No. Please check out SwiftUI if you'd like to use a modern and declarative UI framework for your app. And if you need a powerful SVG support - please use SVGView.

Thanks

Great thanks to all external contributors:

And our team, contributing to Macaw:

Hope to see you all and work together on some other projects, e.g. SVGView 😉

--
Best regards,
Yuri Strot