How fast can a SproutCore app load?
Checkout this simple todo app running on Google AppEngine. This is a work-in-progress sample app I’m working on to show at the next SproutCore Founders Meetup. The source code includes the SproutCore, a Google AppEngine backend and a Merb backend, with more to follow.
SproutCore applications are thick-clients, which means they download once to your web browser and run independently of the server. A lot of people naturally think this means that your server can run slow and it won’t matter. In some cases, this is true. More often, though, your application server actually needs to respond faster than it did before.
When you write a server-driven web app, the user constantly has to wait for the server to respond with some new HTML or Ajax between every few clicks. It’s slow and boring but at least it is consistently slow and boring.
When you switch to a SproutCore app, things speed up considerably for your users. Once your app is loaded, they can fly through the interface, selecting items, moving them around, deleting, creating, etc. The only time they have to wait is…you guessed it…when your server has to get involved.
Now that slow server of yours that was mere annoying before sticks out like a sore thumb.
Thankfully, SproutCore apps also free you to make your server side much simpler. All it needs to do is perform some basic data manipulation and return json as quickly as possible. This is often far less work than you had to do before server side, so you don’t have any excuse.
Make your SproutCore app beautiful and rich…and then make your server fast so won’t ruin that great experience.

Wouldn’t it be better to have the SproutCore App load partitially?
A grown SC App might be at the size of 2 to 3 MB and will not load very fast (depending on your connection speed). Is there somewhere a tutorial that shows an SC App that loads itself partitially (only required parts)?
The todo app isn’t accessible as it doesn’t work at all without JS - does SproutCore promote or care about accessibility ?
Can SproutCore be used as a progressive enhancement so it can unobtrusively be applied to an application ?
@Michael: we have considered this, but so far the marginal cost of loading a little bit extra code is usually outweighed by the benefits of having parts of your app appear instantly when requested. The build tools and framework, however, are designed to support modular loading. We just need to finish the feature when someone really needs it.
@Ross if you are building the type of application that can work without JavaScript then SproutCore is probably not the right option for you. SproutCore is for building rich, desktop-like client-side applications. This is only possible if you have a client-side programming language, i.e. JavaScript