About SproutCore
SproutCore: A Native Experience on the Web.
SproutCore is the original JavaScript MVC library, kicking off the JS-MVC movement in 2007. Developed by Apple and maintained by a robust and growing community, it continues to power the web application revolution. More than a plugin, it builds on top of JavaScript to provide an application-style runtime and MVC object model inspired by the best ideas from Cocoa.
With dozens of core and third-party frameworks delivering native-caliber features, SproutCore remains the best choice for a full-stack, native-caliber experience on the web.
A Full Stack. For Free.
SproutCore delivers sophisticated features for sophisticated applications, including:
- Cocoa-inspired KVO: first-class support for two-way, transformable data bindings, dependent properties, and observer methods.
- A fully queryable in-memory database that can connect to your existing back end.
- A rich, responsive, highly-optimized view layer, built on top of the fastest parts of the web stack, brings you years of hard-to-implement best practice optimizations for free.
- Huge, smooth-scrolling lists: 50,000 items with the same DOM overhead as 50 items.
- An explicit state machine for amazingly well-organized, maintainable application code and business logic.
- Built-in, regulatory-compliant accessibility with WAI-ARIA.
- Easy offline support via AppCache or Cordova.
These features, and many more, combine to provide your application with a rock-solid foundation for building incredibly sophisticated apps. Statecharts organize your app’s code, setting you up for worry-free future changes. Big lists display big data, loaded lazily or queried dynamically through your data store. And the view layer provides all the tools you need to build responsive, intuitive, native-style interfaces.
Your team gets all this for free. You benefit from event delegation, progressive rendering and efficient, searchable data storage, without having to invest in implementing them. And with its permissive MIT license, SproutCore is free as in speech too.
No Compromises: When To Choose SproutCore. (And When To Not.)
SproutCore is not for drop-in widgets, and it’s not for fancy web pages. SproutCore is for building feature-packed, high-performance applications... that happen to run in the browser.
The web was not originally built for applications: Its technology stack was designed for – and remains steeped in – a linked-static-document use case. Think blogs, newspapers, and marketing or informational sites like this one. Most JS-MVC frameworks represent varying degrees of compromise between the needs of an application, and the web’s history of document-focused best practices and talent base.
SproutCore doesn’t compromise. It ditches the document-focused cruft, replacing it with decades of well-established best practices from the application development space instead. SproutCore reimagines web development from the perspective of the application.
For many projects, compromise is exactly what you’re looking for. If your web development team wants to add a little data-heavy widget to an existing page, AngularJS is a great option. For a fancier, more dynamic app-like web page, you might want something like Ember.
But if you want to deliver a cross-platform, desktop-level productivity experience like Apple’s iCloud.com, or a data-heavy marketing service like Oracle’s Eloqua, or rich, interactive dashboards and internal business applications like dozens of other companies; if your project is a no-compromise, feature-packed application, then you want to build with SproutCore.
It gives you the tools you need to build rock-solid, long-lived, single-page applications with features like fast, dynamic queries and infinitely-scrolling lists that your users expect from an app. SproutCore isn’t for blogs, and it isn't for fancying up your company's brand site. It's for applications... which happen to run in the browser.
Organized for Developers. Optimized for Deployment.
With any large codebase, the best practices for organizing readable, maintainable code are very different than the best practices for optimized serving. SproutCore optimizes fully for both cases, bridging the gap with the included set of build tools. You can organize your source code any way you like, for example with your model classes and your view classes living in small, readable files in separate folders. There’s even built-in support for shareable frameworks and lazy-loading modules.
When it’s time to deploy your application, combining, minifying, auto-spriting and optimizing it is as easy as sc-build myapp
. Like a native executable, SproutCore builds your application’s code into a small number of static files, suitable for hosting anywhere, and compatible with back end data APIs built on any server-side technology. It wraps them in a build-numbered, highly cacheable folder for incredible load speed.
Great Power. Great Community.
No framework is complete without a vibrant community of passionate developers eager to help. The mailing list is an active question-and-answer center, and core team members are active on the IRC channel and the Gitter channel nearly 24/7. And our strong developer base can provide any consulting, mentoring, or development services that your team needs.
The Bottom Line.
If you're looking to build the next generation of native-caliber applications for the web, SproutCore is not only the best, it's alone in its class. Download SproutCore today and start developing the best web applications on the planet.
If you have technical questions or need help with SproutCore:
For Consulting Inquiries:
The world’s most innovative apps are using SproutCore. Here are some examples.
Show us some love by using our badges anywhere you use or support SproutCore.
SproutCore Logo
Powered By SproutCore
Designed For SproutCore
The SproutCore Framework Is MIT Licensed
Copyright (c) 2011 Strobe Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.