RudderTyper
Detailed technical documentation on RudderTyper - focusing on the supported commands, configuration reference, and using it with your app.
RudderTyper is a tool that lets you generate strongly-typed RudderStack analytics library wrappers based on your Tracking Plan spec.
Simply put, it uses an event from your specified tracking plan and generates an analytics call in the supported languages.
RudderTyper currently generates native clients for the JavaScript , Node.js , Android , and iOS SDKs

Key Features
Some key features of RudderTyper are:
Allows you to contextualize your analytics instrumentation and validate it with your event spec, before deploying to production.
You can access and validate your event names, properties, types, etc.
It provides compile-time errors and warns you about any missing required properties, data mismatch, and any issues in the JSON schema configured in your tracking plan.
This feature is currently in a closed beta. If you're interested, please contact your account representative for more information.
Get Started
To fire up a quick start wizard to create a ruddertyper.yml and generate your first client with the specified configuration details, run the following command:
$ npx rudder-typer init | initialize | quickstartOther Commands
Update
This command syncs plan.json with RudderStack to pull the latest changes in your tracking plan and then generates an updated development client.
Build
This command generates a development client from plan.json.
Production
This command generates a production client from plan.json.
Token
This command prints the local RudderStack API token configuration.
Version
This command prints the RudderTyper CLI version.
Help
This command prints the help message describing different commands available with RudderTyper.
CLI Arguments
config
string
An optional path to a ruddertyper.yml (or a directory with ruddertyper.yml).
debug
boolean
An optional (hidden) flag for enabling Ink debug mode.
version
boolean
Standard --version flag to print the version of this CLI.
v
boolean
Standard -v flag to print the version of this CLI.
help
boolean
Standard --help flag to print help on a command.
h
boolean
Standard -h flag to print help on a command.
Configuration Reference
RudderTyper stores its configuration in a ruddertyper.yml file in the root of your repository.
A sample configuration looks like the following:
How to integrate RudderTyper-generated client with your app?
This section includes steps to integrate your RudderTyper-generated client with your app across different RudderStack SDKs.
RudderStack Android SDK
Import all the files in the client generated by RudderTyper as a package in your project.
Then, you can directly make the calls using the RudderTyper client as shown below:
RudderStack iOS SDK
Import your RudderTyper client into your project using XCode.
NOTE: If you place your generated files into a folder in your project, import the project as a group not a folder reference.
Then, you can directly make the calls using the RudderTyper client as shown:
RudderStack JavaScript SDK
Import the RudderTyper-generated client using
require()and make the calls if your framework supports them. Otherwise, you can use Browserify to generate a bundle that supports your implementation. The implementation for each of the alternatives mentioned above will be as shown:
Using the require()method
require()methodUsing browserify
browserifyExecute the following command to generate a bundle from the RudderTyper client:
Now you can make calls from your
htmlfile as shown:
If you are using an older version of the JavaScript SDK (v1), refer to the Version Migration Guide to migrate to v1.1.
RudderStack Node.js SDK
Import the the RudderTyper-generated client and start making calls using RudderTyper as shown:
Contribute
To submit a bug report or feature request, file an issue here.
To develop on
ruddertyperor propose support for a new language, see our contributors documentation.
Contact us
For queries on any of the sections in this guide, start a conversation in our Slack community.
Last updated
Was this helpful?