The Power of Live-Coding
for iOS, tvOS, macOS
Bounces enables interactive app development for iOS, tvOS and macOS,
and includes extensive support for dynamic storyboard updates.
Bounces was previously named Celedev CodeFlow.
Did you ever had the feeling that having to rebuild and rerun your app to test small changes in the app code, storyboard or assets was a true waste of time? We had. That's why we created Bounces.
Bounces is a macOS app that works in conjunction with Xcode to make edits to your app project directly bounce to all running instances of the app. Without restarting them. Without loosing your current test context.
Represent yourself testing your app on an iPhone and an iPad. You add or edit a layout contraint in the app storyboard in Xcode and —bounce!— you see the effect of the edit right away on both test devices!
Or you fine-tune the code of a UIView animation and —bounce!— you experience the changes right away on the test device. Without having to restart the app and navigate again to the tested app screen.
This is how Bounces can make app development more productive, creative, and fun.
See it in action
This video shows the old CodeFlow app name, but is still a good illustration of storyboard and code bouncing!
Live Application Update
- Target App is updated while running.
- No app relaunch; the app's current state is preserved!
- Live update everything: code, storyboards, image assets…
- Wireless live app update on a device or in the simulator.
True Native Apps
- Live code your app with the entire native OS SDK
- iOS, tvOS and macOS SDKs supported.
- Live update of native app resources: storyboards, SceneKit models…
- No web view; no proprietary UI components.
Perfect Fit with Xcode
- A Bounces project extends an Xcode project.
- Both projects are automatically kept in sync.
- Freely mix Swift / ObjC compiled code and Lua dynamic code in your app.
- Use Xcode storyboards/assets… editors and experience live updates.
What can you do with Bounces?
Bounces is very flexible and you can use it in many different ways. Here are just a few examples.
- Mockup entire applications or specific UX concepts.
- Quickly iterate in code / storyboards / assets.
- The prototype is a true functional native application.
- Interactively improve the app prototype with the client or marketing team.
- Use the prototype as the starting point for the real app.
Dynamic Storyboard Design & Debug
- Easily add dynamic storyboard updates to existing apps.
- Add, test and adjust layout constraints interactively.
- Quickly fix layout issues in table views, stack views, collection views…
- State is preserved: you stay in the current view controller when the storyboard is updated.
Simple App Creation
- Create entire apps in interactive mode,
- or develop very specific parts of your app using live coding.
- Ship the app with the dynamic code inside,
- or remove the dynamic code before shipping, and push a traditional app to the store.
Bounces Quick Tour
Bounces is an Integrated Live Application Development Environment for iOS, tvOS and macOS.
A macOS App and a client framework
- Bounces is a macOS application
- A target app embeds the Bounces framework
- Together they control the reload of code and assets into the target app
- Target SDKs: iOS tvOS, macOS
A Dynamic IDE
- Specially designed for live app creation
- A Bounces project defines dynamic code and resources for the target app
- It extends the target app's Xcode project
- Syntax-aware Lua code editor
- Assets viewer
- Support for external asset editors
- Advanced Lua debugger
You will love Lua
- Lua language for dynamic code
- Simple, flexible and powerful
- Fast lightweight execution
- Quick and easy to learn
- Very nice to use
- The perfect fit for five coding
- Automatic target device detection and connection
- Wireless update of code and assets in the target app
- Support of USB-connected iOS devices
- Real-time update of the target app while it is running
- Instant reloading of Lua modules in the project
- Assets are updated in the target app when their source file changes
- Dynamic Storyboard update
- Dynamic SceneKit scene update
This document covers the basics for integrating a Bounces Lua Execution Context in your app. You will learn how to create and terminate a Lua Context, how to run Lua code in a Lua Context and how simple it is to exchange data between you app native code and a Lua Context.
Asynchronous code execution is a common need when developing an application, and Bounces provides a set of tools for writing asynchronous Lua code. In this document, you will learn how to run asynchronous Lua code blocks using doAsync , and how to use Lua messages and timers for synchronizing various parts of your app.
Lua modules are key components for Lua development in Bounces. In this document, you will learn how to use the require function to load Lua modules in a Bounces project, how require in Bounces differs from standard Lua, and how to make your Lua modules nicely play with dynamic code update.
In this tutorial, you will learn how your existing application project can benefit from Bounces dynamic storyboard updates. Part 3 - Dealing with Complex View Controller State
In this tutorial, you will learn how your existing application project can benefit from Bounces dynamic storyboard updates. Part 2 - Managing View Controller State
In this tutorial, you will learn how your existing application project can benefit from Bounces dynamic storyboard updates. Part 1 - Configuration and First Dynamic Edits