Flipper FAP Studio
A GUI-first VS Code extension for building Flipper Zero .fap apps with uFBT.
No command line required — just buttons, status, and output logs.
Why I built this
I created this tool to speed up my own Flipper app development — mainly to easily
build and test the same app across the popular firmwares (OEM, RogueMaster, Momentum,
Unleashed) without juggling command lines and SDK paths. Sharing it free with the
community that Flipper's open source ecosystem was built on, in the hope it helps
others build and test their own apps too. More free tools to come.
Requirements
- Python 3 installed and on PATH
- uFBT — install via the extension's Install / Update uFBT button or manually:
pip install ufbt
- VS Code 1.85 or newer
Install
- VS Code Marketplace — search for Flipper FAP Studio in the Extensions view (
Ctrl+Shift+X)
- From VSIX —
Ctrl+Shift+P → Extensions: Install from VSIX and pick the downloaded file
Quick Start
- Click the Flipper icon in the Activity Bar
- Click Create starter app — give it a name, choose a parent folder
- Click Build .fap
- Plug in your Flipper Zero, click Build + Launch on Flipper
Panel Layout
The sidebar shows the current app and target at the top, one-click build actions, your Recent Projects, and live Firmware SDK status (installed version, up-to-date check, path found/missing) with inline install/update buttons.
| Button |
What it does |
| Build .fap |
Runs ufbt against the active firmware target |
| Build + Launch on Flipper |
Builds then runs ufbt launch to push and start the app on the connected Flipper |
| Clean |
Runs ufbt clean to remove build artifacts |
| Open Working Directory |
Opens dist/ in Explorer (falls back to app root if dist doesn't exist yet) |
| Create starter app |
Creates a new folder with application.fam + working main.c boilerplate and opens it in the workspace |
| Select firmware target |
QuickPick to choose OEM, RogueMaster, Momentum, Unleashed, or a custom SDK path |
| Guide |
Opens the step-by-step usage guide |
| Settings |
Opens the extension's settings panel (build output, new-app defaults, SDK paths) |
The Recent Projects view lists every valid Flipper app you've created, opened, or built, newest first. Click one to switch the extension to that app folder instantly; inline buttons open the project in a new VS Code window or remove it from the list. Only folders containing an application.fam are tracked.
The Firmware SDKs view below the buttons shows each SDK's status live — whether uFBT is installed and up to date (checked against PyPI), and whether each custom-firmware SDK path exists on disk — with inline buttons to install/update uFBT, set paths, and open release pages. Build failures are matched against common problems (Flipper not detected, API mismatch, missing includes, …) and shown as actionable hints.
Firmware Targets
| Target |
Default SDK path |
| OEM / uFBT |
Uses the official uFBT SDK (no path needed) |
| RogueMaster |
C:\Flipper\RogueMaster |
| Momentum |
C:\Flipper\Momentum |
| Unleashed |
C:\Flipper\Unleashed |
| Custom |
Any folder you point it at |
Paths can be changed in VS Code Settings (Ctrl+,) under Flipper FAP Studio.
Settings
| Setting |
Default |
Description |
flipperFapStudio.defaultAppFolder |
"" |
Remembered app folder path |
flipperFapStudio.defaultTarget |
"oem" |
Active build target |
flipperFapStudio.askOnBuildOutput |
false |
Prompt for a destination folder after each successful build |
flipperFapStudio.buildOutputDir |
"" |
Auto-copy the built .fap here after each build (ignored when ask is on) |
flipperFapStudio.defaultCreateAppDir |
"" |
Default parent folder offered when creating a starter app |
flipperFapStudio.targets.rogueMasterPath |
C:\Flipper\RogueMaster |
RogueMaster SDK path |
flipperFapStudio.targets.momentumPath |
C:\Flipper\Momentum |
Momentum SDK path |
flipperFapStudio.targets.unleashedPath |
C:\Flipper\Unleashed |
Unleashed SDK path |
flipperFapStudio.targets.custom |
[] |
Array of custom {name, path} targets |
Security
The extension never silently sends code or files anywhere.
- No auto-upload to GitHub
- No auto-download of firmware
- No auto-run of unknown scripts
- No token storage
- No secrets shown in logs
- Sensitive files (
.env, *.pem, *.pfx, credentials.json, etc.) are excluded from release ZIPs and flagged with a warning before packaging
Developer Workflow (editing the extension itself)
- Open
Flipper App Tool/ as a folder in VS Code
- Press F5 — launches Extension Development Host with live extension
- Edit any
.ts file and save — watch mode recompiles automatically
- Press Ctrl+R in the dev host window to reload changes
To package a .vsix for sharing or permanent install:
npm run compile
npx vsce package --allow-missing-repository
Planned Features
- [ ] Package Release ZIP (excludes secrets, confirms before packaging)
- [ ] Detect connected Flipper (
ufbt cli)
- [ ] Multi-target batch build (OEM + all custom targets at once)
Links
License
MIT