
Finding the enterprise deal-breaker hidden in 50+ feature requests
“We love Appsmith, but without environments, it's a security risk that we can't tolerate.”

Finding the enterprise deal-breaker hidden in 50+ feature requests
“We love Appsmith, but without environments, it's a security risk that we can't tolerate.”

Finding the enterprise deal-breaker hidden in 50+ feature requests
“We love Appsmith, but without environments, it's a security risk that we can't tolerate.”

Finding the enterprise deal-breaker hidden in 50+ feature requests
“We love Appsmith, but without environments, it's a security risk that we can't tolerate.”
Setting the scene
Setting the scene
Appsmith lets teams build internal tools connected to their own databases, but building apps without using production data meant creating and maintaining same application across various workspaces connected via git.
Appsmith lets teams build internal tools connected to their own databases, but building apps without using production data meant creating and maintaining same application across various workspaces connected via git.
Appsmith lets teams build internal tools connected to their own databases, but building apps without using production data meant creating and maintaining same application across various workspaces connected via git.
Project Summary
Project Summary
Gave developers native environment switching - turning their multi-workspace Git nightmare into a simple toggle.
Gave developers native environment switching - turning their multi-workspace Git nightmare into a simple toggle.
Project outcome
Project outcome
Business
Business
Enterprise deals works 27% of ARR were unblocked.
Appsmith passed enterprise security and technical audit increasing top of the funnel.
Enterprise deals works 27% of ARR were unblocked.
Appsmith passed enterprise security and technical audit increasing top of the funnel.
User
User
78% adoption within first month of new customers.
Weeks worth of effort saved to build production ready internal apps.
78% adoption within first month of new customers.
Weeks worth of effort saved to build production ready internal apps.
🕵🏻♂️ The detective work
🕵🏻♂️ The detective work
Uncovering the problem
Uncovering the problem
I started digging through our GitHub issues, Discord messages, and support tickets. Found 50+ requests - all asking for something different like environment variables. data source profile, programmatic control of data source configurations.
Everyone had their own solution in mind. So I scheduled
call with 12 of them and asked to.
Describe the pain point and the problem, not the solve.
Walk me through your current app building workflow.
Explain any hacks or workaround they’ve implemented.
I started digging through our GitHub issues, Discord messages, and support tickets. Found 50+ requests - all asking for something different like environment variables. data source profile, programmatic control of data source configurations.
Everyone had their own solution in mind. So I scheduled
call with 12 of them and asked to.
Describe the pain point and the problem, not the solve.
Walk me through your current app building workflow.
Explain any hacks or workaround they’ve implemented.








The ‘aha!’ moment
The ‘aha!’ moment
Every customer described the same workaround,
Every customer described the same workaround,
“We’ve created different workspace with same data sources configured for different environments. Same application is built in each workspace connected via git. We build app in staging workspace and then push changes to production workspace. This back and forth happens countless times for each app to be built.”
“We’ve created different workspace with same data sources configured for different environments. Same application is built in each workspace connected via git. We build app in staging workspace and then push changes to production workspace. This back and forth happens countless times for each app to be built.”
That's when the pattern emerged. They weren't asking for different features - they were describing how to solve for a similar pain point. Our sales and customer support team also validated our findings.
“Building apps with ability to easily switch data flowing into it”.
A few actually needed environment variables, most didn’t.
That's when the pattern emerged. They weren't asking for different features - they were describing how to solve for a similar pain point. Our sales and customer support team also validated our findings.
“Building apps with ability to easily switch data flowing into it”.
A few actually needed environment variables, most didn’t.
Technical challenges
Technical challenges
While engineers agreed on the problem they also pointed out the enormity of solving this problem which estimated timelines across multiple quarters.
Major challenges included
It required a major overhauling architecture of the core product.
All existing integrations to data sources needed to be updated along with provisions for all new ones to come.
Soft reloading of the entire application and rerunning all queries when data source environments were switched.
Updating GAC to accommodate additional permissions layers for secure access.
While engineers agreed on the problem they also pointed out the enormity of solving this problem which estimated timelines across multiple quarters.
Major challenges included
It required a major overhauling architecture of the core product.
All existing integrations to data sources needed to be updated along with provisions for all new ones to come.
Soft reloading of the entire application and rerunning all queries when data source environments were switched.
Updating GAC to accommodate additional permissions layers for secure access.
👨🏻 Managing the project
👨🏻 Managing the
project
👨🏻 Managing
project
Engineering estimated multiple quarters for the full solution. That wasn't just too long for users - it was a massive risk. One giant project that could fail after months of work.
So we broke it into milestones, each one solving a real problem while validating the next.
Engineering estimated multiple quarters for the full solution. That wasn't just too long for users - it was a massive risk. One giant project that could fail after months of work.
So we broke it into milestones, each one solving a real problem while validating the next.
Each milestone de-risked the next. If users didn't adopt milestone 1, we'd pivot without wasting quarters on the wrong solution. But if they did, we'd have confidence to build further.
Each milestone de-risked the next. If users didn't adopt milestone 1, we'd pivot without wasting quarters on the wrong solution. But if they did, we'd have confidence to build further.




👷🏻 Building the solution
👷🏻 Building the solution



Explorations
We had to decide on a crucial problem on which solution direction to be taken, there were two main contenders.
We had to decide on a crucial problem on which solution direction to be taken, there were two main contenders.
Option 1
Option 1
Data source configuration scoped environment variables.
Data source configuration scoped environment variables.
A partial implementation of milestone 3, users would create and bind environment variables but they existed only for that data source.
A partial implementation of milestone 3, users would create and bind environment variables but they existed only for that data source.
Future-proof
Scales perfectly.
Future-proof
Scales perfectly.
Months to build.
Complex mental model.
No reusability.
If users didn't need variables, we'd have wasted months.
Months to build.
Complex mental model.
No reusability.
If users didn't need variables, we'd have wasted months.




Option 2
Option 2
Separate configuration profiles for each environment.
Separate configuration profiles for each environment.
Separate forms for each environment. No variables, just simple forms.
Separate forms for each environment. No variables, just simple forms.
Ships in weeks.
Dead simple.
Matches competitor patterns.
Ships in weeks.
Dead simple.
Matches competitor patterns.
More work later to add variables.
Gets clunky beyond 5 environments.
More work later to add variables.
Gets clunky beyond 5 environments.




We chose option 2. Ship fast, validate the need, then build the complex version if proven. Weeks to value, not months.
We chose option 2. Ship fast, validate the need, then build the complex version if proven. Weeks to value, not months.
Solution delivered
Solution delivered
䷾ After we shipped
䷾ After we shipped
Learnings
Learnings
Enterprise adoption is slow until switching becomes cheaper than maintaining workarounds.
Chunking project helped, we observed users asking for deeper integration between git branches and environments rather than environment variables. We swiftly pivoted and realigned goals after delivering milestone 2.
Enterprise adoption is slow until switching becomes cheaper than maintaining workarounds.
Chunking project helped, we observed users asking for deeper integration between git branches and environments rather than environment variables. We swiftly pivoted and realigned goals after delivering milestone 2.
Next steps...
Next steps...
We released the ability to create and manage multiple environments for each data sources as per requirements of the organisation.
Git and environments project got clubbed to provide deeper integration between the two as per the insights collected after milestone 1.
We released the ability to create and manage multiple environments for each data sources as per requirements of the organisation.
Git and environments project got clubbed to provide deeper integration between the two as per the insights collected after
milestone 1.