Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
96 lines (54 sloc) 3.66 KB


GRMustache is a production-ready implementation of Mustache templates for MacOS Cocoa and iOS.

September 6th, 2012: GRMustache 4.3.4 is out. Release notes

Breaking news on Twitter:

How To

1. Download and add to your Xcode project

$ git clone
  • For MacOS development, add include/GRMustache.h and lib/libGRMustache4-MacOS.a to your project.
  • For iOS development, add include/GRMustache.h and lib/libGRMustache4-iOS.a to your project.

Alternatively, you may use CocoaPods: append pod 'GRMustache', '~> 4.3' to your Podfile.

GRMustache targets MacOS down to 10.6 Snow Leopard, iOS down to version 3, and only depends on the Foundation framework.

2. Start rendering templates

#import "GRMustache.h"

// Renders "Hello Arthur!"
NSString *rendering = [GRMustacheTemplate renderObject:[Person personWithName:@"Arthur"]
                                            fromString:@"Hello {{name}}!"

// Renders a document from the `Profile.mustache` resource
NSString *rendering = [GRMustacheTemplate renderObject:[Person personWithName:@"Arthur"]


Documentation starts here: Guides/


  • Q: How do I render array indexes?

    A: Check Guides/sample_code/

  • Q: How do I format numbers and dates?

    A: Check Guides/sample_code/

  • Q: How do I localize templates?

    A: Check Guides/sample_code/

  • Q: How do I render default values for missing keys?

    A: Check Guides/

  • Q: Does GRMustache provide any layout facility?

    A: No. But there is a sample Xcode project that demonstrates how to do that.

  • Q: What is this NSUndefinedKeyException stuff?

    A: When GRMustache has to try several objects until it finds the one that provides a {{key}}, several NSUndefinedKeyException are raised and caught. Let us double guess you: it's likely that you wish Xcode would stop breaking on those exceptions. This use case is covered in Guides/runtime/

  • Q: Why does GRMustache need JRSwizzle?

    A: GRMustache does not need it. However, you may happy having GRMustache swizzle valueForUndefinedKey: in the NSObject and NSManagedObject classes when you invoke [GRMustache preventNSUndefinedKeyExceptionAttack]. The use case is described in Guides/runtime/

Contribution wish-list

I wish somebody would review my non-native English, and clean up the guides, if you ask.


Please fork. You'll learn useful information in Guides/


Released under the MIT License.

Jump to Line
Something went wrong with that request. Please try again.