SproutCore 1.6 Released

written by Peter Wagenet

We’re pleased to announce that SproutCore 1.6 is now out!

SproutCore 1.6 is largely a bug fix release aiming to help provide a more stable experience. If you’re using SproutCore 1.5 it should be a relatively straight-forward upgrade.

For more information on the changes, see the Abbot changelog and the framework changelog.

Upgrade now via package or, if you installed via RubyGems, run gem install sproutcore. Enjoy!

By the way, we’re still on a six week release schedule so that means we’re planning to release 1.7 in mid-to-late July. Keep an eye out for more news on 1.7 in the coming weeks.

SproutCore 1.6 Beta Released

written by Tom Dale

We’re excited to announce the release of SproutCore 1.6 Beta 1. As we mentioned in our last blog post, we are switching to a six-week release cycle, and this is the first release in that new plan.

Because we will be releasing more frequently, each release will be less of a big-bang release and more incremental improvements to what we had before. SproutCore 1.5 shipped with a number of new features, including TemplateView, and SproutCore 1.6 significantly improves the stability of TemplateView, TemplateCollectionView, and their integration with other parts of the system, especially DataStore.

If you are using SproutCore 1.5 today, you should upgrade to SproutCore 1.6 beta. It is essentially the same as SproutCore 1.5 with a large number of bugfixes and stability/efficiency improvements.


  • Bugfixes to synchronization between SproutCore RecordArray/ManyArray/ChildArray and TemplateCollectionView
  • Moved forms to experimental framework
  • Moved routing into its own framework
  • Improved ability to use table elements in Handlebars templates
  • CSS and cross-browser fixes for built-in controls
  • Significantly cleaned up in-line documentation

SproutCore 1.5 Released

written by Yehuda Katz

We’re excited to announce the final release of SproutCore 1.5. It’s been almost four months since 1.4.5 shipped, and we have lots of exciting new stuff for you.


Template View

SproutCore 1.5 offers a brand-new way to define your view layer. If you have an existing application, SC.TemplateView makes it easy to integrate Handlebars-flavored HTML into your view hierarchy. If you’re starting a brand new application, you can design your entire application using just HTML, CSS, and the power of SproutCore’s binding system.

We’ve put together a tutorial that takes you through the process of creating a new template-based SproutCore application from scratch. You’ll learn how to define a model, create a controller structure, create HTML using Handlebars, then hook all of the pieces together using bindings.

Guide: Getting Started with HTML-Based Apps

Community member Greg Moeck created a screencast as part of his Dispatches from the Edge series that shows some of the power of these templates:

Dispatches from the Edge: Template Views


If you are building a native-style application using SproutCore’s library of controls, we have a great new default theme called Ace 2.0 that looks at home on modern desktop and mobile operating systems.

We’ve also significantly improved theming flexibility for developers that desire their own look-and-feel. You can even include multiple themes in the same application.

To learn how to theme your application, read the guide by Alex Iskander:

Continue reading

1.5 RC2 Released

written by Tom Dale & Yehuda Katz

It’s been just over a week since the SproutCore 1.5 RC1 was released, and we’ve been busy fixing many of the bugs reported by our tremendous community. To everyone who reported bugs: thank you! Your suggestions and real-world usage have been instrumental in ensuring production-ready quality as we approach the final release.

Here’s what’s new in RC2:

Bug Fixes

  • A ton of bugfixes to TemplateView
  • TemplateCollectionView now works with RecordArrays
  • TemplateCollectionView is now much more efficient when the array it is representing changes
  • Fixes a bug in the {{#each}} helper where the content was not updating after it changed
  • Fixes a bug where {{bindAttr}} was not working when provided with a class attribute
  • Explicitly documented the existence of the itemViewTemplate property in TemplateCollectionView
  • Fixes a bug where computed properties were not being invalidated when the first property in the path of their dependent key changed
  • Removed some trailing commas that were causing errors in Internet Explorer 7
  • Fixes a bug where unit tests were failing on Internet Explorer 7
  • Resolves an issue where text fields were not able to be activated on Android devices
  • Removed an invalid warning when bindings were connected


  • Bindings now fire automatically when a property is changed via the debug console
  • Substantial improvements to the inline documentation
  • Updated QUnit to latest version

Enumerable Observers
While we try our best not to introduce API changes once a release candidate is out, we did have to revisit how enumerable observers (a new 1.5 feature) were implemented. They are now restricted to arrays, and other enumerables that implement SC.Array, such as SC.ArrayController and SC.RecordArray.

This change was necessary since it allows us to prevent materializing records in record arrays, which could number in the thousands or tens of thousands. These observers have been renamed “array content observers” to indicate that they are restricted to ordered lists only. In the future, we will consider adding a similar API for collections where order is unimportant.

Note that in SproutCore, all ordered lists implement SC.Array, not just native Arrays. That means that you can use the new array observers with native Arrays, RecordArrays, SparseArrays, ArrayControllers and any other object that implements the SC.Array protocol.

SproutCore 1.5 Release Candidate 1 Released

written by Tom Dale & Yehuda Katz

We’re happy to announce the release of SproutCore 1.5 RC1, which includes significant improvements to TemplateView. Those improvements include:

  • You can now use the normal Handlebars helpers ({{with}}, {{if}}, {{unless}}, and {{each}}) in your templates. If the properties they reference change, SproutCore will automatically update the DOM. For instance, if you use the {{#if}} helper with a true value, and the property later becomes falsy, SproutCore will automatically hide its contents.
  • If you were using the {{#collection}} helper for simple iteration, you can now use the regular Handlebars {{#each}} helper, and it will automatically update the DOM as the underlying Enumerable changes.
  • You can now use the normal Handlebars interpolation syntax ({{name}}), and SproutCore will automatically update the DOM when the underlying property changes; no need to use the {{bind}} helper anymore.
  • These new features mean that you can use an existing Handlebars template and, through the power of bindings, have it automatically update as its content changes in other parts of the application. Continue reading

SproutCore 1.5.pre.4 – TemplateView is Here

written by Tom Dale & Yehuda Katz

Today we released the fourth pre-release of SproutCore 1.5, moving us a step closer to a final release next month. This version has a bunch of new features, including the initial release of TemplateView, which makes it easier to build SproutCore applications in a more conventional HTML style.

You can get the prerelease gem by typing:

gem install sproutcore --pre

Here are some of the improvements:


Template views can form the basis of an entire application, or can integrate seamlessly with an existing SproutCore view hierarchy. This release incorporates support for the Handlebars template engine in both SproutCore itself and the SproutCore build tools.

Templates are HTML files with special tags included that can reference properties on your view or other objects. These properties can be setup as bindings so the HTML will automatically update whenever the properties change.

In general you define templates in your resources/templates directory and then use SC.TemplateView to render them. Working with SC.TemplateView is just like any other view except you specify a templateName property instead of a render method. For instance, if you had a template at resources/templates/post_item.handlebars, you could use it in your app with something like:

MyApp.PostItemView = SC.TemplateView.extend({
  templateName: 'post_item'

Continue reading

SproutCore 1.5 Prerelease

written by Tom Dale & Yehuda Katz

We’ve just released a 1.5 pre-release gem. There’s still a lot of flux and it’s not considered stable so we don’t recommend it for production apps, but if you’d like a sneak peek of the new features take a look. To install just run

gem install sproutcore --pre

We’ll be releasing more information about the new features in 1.5 over the coming weeks so keep an eye out.

SproutCore 1.4.4

written by SproutCore

SproutCore 1.4.4 is now out! This is mostly a bug fix release, though there are a few things worth noting.

First off, anyone on the bleeding edge of Chrome may have noticed some odd behavior on Chrome 9. This is a bug in Chrome 9, but we’ve added in a workaround so you don’t have to wait on them to fix it.

We’ve also added support for enabling Chrome Frame in your app, just set :chrome_frame => true in your Buildfile config and then we’ll automatically add the appropriate meta flag to your index.html.

SC.copy also now has support for deep copy. This means that all children of the item that you’re copying will also be copied. To use this, do SC.copy(obj, YES).

Also, we’ve added a property called SC.buildMode that will return a value of ‘debug’ when you’re running from sc-server.

And finally we’ve added support for custom MIME types in sc-server. Set :mime_types => { '.suffix' => 'mime/type' } in your Buildfile config to get sc-server to use the appropriate MIME type. Remember, this will only help you in development, you’ll need to configure your deployment server separately.

As always just run gem install sproutcore to get the latest goodness, and feel free to comment here or reach out elsewhere if you’ve got questions.

SproutCore 1.4.2

written by SproutCore

SproutCore has now been updated to 1.4.2! This is a minor patch release with a handful of bug fixes to both the framework and to abbot.

In Abbot, we fixed a regression that caused sc_require to fail with uppercase filenames. We also fixed an issue that caused sc_static to load files that only partially matched the requested filename.

Additionally, we made a couple fixes to SC.DateTime and fixed Tab key behavior for SC.SelectFieldView.

To get these updates, just run gem install sproutcore.