Nimble AB is a lightweight NextJS AB testing platform designed to streamline AB testing on NextJS apps that want to take advantage of SSG load times in UX experiments. The platform's goal is to make the developer experience of configuring and implementing AB tests on static sites fast and painless so that businesses can optimize load times on AB tests without sacrificing the dynamicism required for high-impact testing.
For more info visit our website or read our Medium article
Mac Users, If you are unable to open the app make sure to drag the application to the Applications folder and run the following command:
sudo xattr -r -d com.apple.quarantine /Applications/nimbleAB.app
Nimble AB offers an NPM package for SSG decisioning that can be installed here (placeholder)
Our Desktop app can be used for full end to end test construction and variant creation. Download link is above. Create experiments, build and edit variants, and use config files generated to your local repo on your CDN to serve pages.
NPM Package Usage
Install the package below
npm install nimbleab
The package expects a config object in the following format:
{
"experiment_path": "/pages",
"experiment_name": "Blog test 2",
"experiment_id": "57056b01-39bd-43c5-85e1-fba6611bb2b2",
"device_type": "desktop",
"variants": [
{
"id": "333896e0-09e7-4b29-9398-e250b60941c4",
"fileName": "testa",
"weight": 25
},
{
"id": "05e1af45-b7a2-417c-a43d-d1b29d6a4b15",
"fileName": "testb",
"weight": 25
},
{
"id": "b6205652-b885-47b6-968b-1635d2e6dc48",
"fileName": "testc",
"weight": 50
}
]
}
A user can either configure a static test independent of our underlying experiment platform by adjusting weights and URLs on the static config deployed on an edge function that can run Javascript. The package will not function properly without weights summing to 100 so be sure to validate this. Verbose erroring in this case is a future roadmap feature. Make sure that all IDs are valid UUID Version 4.
A user can also call our API to return variants using their experiment Id. This can be found in the nimble.config.json file on your local repo after experiment creation in the Electron app.
Desktop app usage
Nimble Labs is proud to offer our open source Desktop app for public use. Download link is above. To use:
- Dowload the desktop app (links above)
- Create an experiment
- Name your experiment something semantic
- Press the Open Directory button
- Navigate to a Next JS project
- Choose your project's src or app directory
- Once the directory is selected, then select the path that you would like to run the experiment on
- Press create experiment to be taken to the variants config page
- Configure variants
- Add variants using the inputs at the top of the page. The file path will be the name of the file storing the variant, so naming in a semantically useful way is recommended.
- Create the weight for the variant. Many tests will be 50/50 or 33/33/34 but customize the weights as needed to achieve the randomness desired to meet business requirements.
- Once all variants have been configured, hit edit to make adjustments as needed
- Edit variant code
- Hit edit on the variants table to make changes to the variants. Ensure to save when finished; these changes will save down to your local.
- Deploy
- Once all edits are complete, the necessary middleware will be automatically saved down into the nimble.config.json file and the variants folder inside your local repo. Just deploy the new pages to your hosting infrastructure, and the middleware will perform decisioning according to the weights previously configured.
Open issues for any issues encountered and the team will investigate and implement fixes as able.
Our longer term features roadmap is as follows:
Highest priority
- Backwards compatibility to older versions of NextJs (<13.0)
- Github deploys from the UI
- Support for Typescript projects
- Ability to delete experiments
- Validation improvements on our Front End (weights validation doesn't take place currently and is on the user)
- Project validation (provide user feedback if their project isn't NextJs validated)
Future facing
- Adding file tree into the editor
- CLI support for experiment maintenance
- Verbose error handling on client
- End to End Testing
Contributions are appreciated and will be reviewed as fast as we are able. Merged contributions will be credited as authors.
Developed By | Github | |
---|---|---|
Andrew Kraus | ||
Zhenwei Liu | ||
James Boswell |