Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…
Cannot retrieve contributors at this time
160 lines (90 sloc) 6.48 KB


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

November 23, 2012: GRMustache 6.1.2 is out. Release notes

Don't miss a single release: follow @GRMustache on Twitter.

How To

1. Download and add to your Xcode project

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

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

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

armv6 architecture: The last GRMustache static library that embeds the armv6 slice is GRMustache 5.0.1. You now have to compile GRMustache yourself, or to use CocoaPods.

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"]


Mustache syntax



  • Introduction: a tour of the library features, and most common use cases.

Loading templates:

Rendering templates:

  • Runtime: how to provide data to templates

Advanced Mustache:

Sample code


  • Reference: the GRMustache reference, automatically generated from inline documentation, for fun and profit, by appledoc.


  • Forking: the forking guide tells you everything about GRMustache organization.


  • Q: How do I render array indexes?

    A: Check the Collection Indexes Sample Code

  • Q: How do I format numbers and dates?

    A: Check the Number Formatting Sample Code

  • Q: How do I render partial templates whose name is only known at runtime?

    A: Check the Rendering Objects Guide

  • Q: Does GRMustache provide any layout or template inheritance facility?

    A: Check the Partials Guide.

  • Q: How do I localize templates?

    A: Check the Localization Sample Code

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

    A: Check the Tag Delegate Guide.

  • 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 the Runtime Guide.

  • 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 the Runtime Guide.

What other people say


I'm loving grmustache


Oh man GRMustache saved my ass once again. Awesome lib.


GRMustache filters extension saved us from great escaping PITAs. Thanks @groue.


Thank fucking christ for decent iOS developers who ship .lib files in their Github repos. #GRMustache

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 the Forking Guide.


Released under the MIT License.

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