Bending Spoons

2pods

Katana

Katana is a modern Swift framework for writing iOS apps, strongly inspired by React and Redux, that gives structure to all the aspects of your app:

  • logic: the app state is entirely described by a single serializable data structure, and the only way to change the state is to dispatch an action. An action is an intent to transform the state, and contains all the information to do so. Because all the changes are centralized and are happening in a strict order, there are no subtle race conditions to watch out for.
  • UI: the UI is defined in terms of a tree of components declaratively described by props (the configuration data, i.e. a background color for a button) and state (the internal state data, i.e. the highlighted state for a button). This approach lets you think about components as isolated, reusable pieces of UI, since the way a component is rendered only depends on the current props and state of the component itself.
  • logic ↔️ UI: the UI components are connected to the app state and will be automatically updated on every state change. You control how they change, selecting the portion of app state that will feed the component props. To render this process as fast as possible, only the relevant portion of the UI is updated.
  • layout: Katana defines a concise language (inspired by Plastic) to describe fully responsive layouts that will gracefully scale at every aspect ratio or size, including font sizes and images.

We feel that Katana helped us a lot since we started using it in production. At Bending Spoons we use a lot of open source projects ourselves and we wanted to give something back to the community, hoping you will find this useful and possibly contribute. ❤️

License: MIT

  • Swift

KatanaElements

Katana is a modern Swift framework for writing iOS apps, strongly inspired by React and Redux, that gives structure to all the aspects of your app.

KatanaElements include UI elements to be used with the Katana framework and allow you to easily get started

License: MIT

  • Swift