
Why I Built This Tool: Because "Already There" Does Not Mean "Good Enough"
Why I built a cartridge audit tool to help Salesforce Commerce Cloud teams evaluate the engineering health, performance, maintainability, security, and technical debt of existing cartridges before bringing them into production.
During my extensive work as a Solution Architect, I have worked with many clients, many implementations, and many different integration requirements.
And I started noticing one common pattern.
A client would come with a requirement to integrate a particular platform or service.
Someone would find a cartridge for it.
And the conversation would usually end with:
“The cartridge is already available, so let's use it.”
It makes sense.
Why build something from scratch when someone has already built it?
That is one of the biggest benefits of cartridges.
They can save development time, reduce implementation effort, and give teams a starting point for integrations that would otherwise take considerable effort to build.
But there is a catch.
Just because a cartridge already exists does not mean it is necessarily good enough for your production site.
The question I started asking
One of my favourite questions during Solution Architect interviews is:
“Your client comes with a requirement to integrate a vendor's officially provided cartridge. What would be your next step?”
Most of the time, I get a very common answer:
“Since it is an official cartridge, we should use it as it is.”
And this is exactly where I think we need to change our thinking.
Being an official cartridge tells us who provided it.
It does not necessarily tell us:
- how well it is engineered
- how maintainable it is
- how it performs under load
- whether it contains technical debt
- whether it is still compatible with the current platform
- whether old code and metadata have been removed
- whether there are security concerns
- or whether it fits well into our particular implementation
I am not saying an official cartridge is bad.
I am saying that it should still be reviewed.
Because I have seen what happens when we don't
During different implementations, I have seen cartridges carrying old compatibility logic that was no longer required.
I have seen old metadata that was never cleaned up.
I have seen duplicated code.
I have seen unnecessary loops and inefficient processing.
Individually, some of these things may not look like a big deal.
But think about where the code is running.
If an integration is part of a customer-facing request, that code can execute again and again.
And when your customers are on your storefront, they don't care whether the slow code belongs to your team or to a third-party cartridge.
They just experience a slower website.
You can spend a lot of time optimizing your own implementation.
You can optimize queries.
You can improve caching.
You can reduce unnecessary processing.
You can optimize your integrations.
But if one cartridge is doing unnecessary work on every request, it can still become a bottleneck.
One poorly implemented integration can undo a lot of good engineering elsewhere.
“It works” is not enough
I think this is another important distinction.
A cartridge can work perfectly from a functional perspective.
The integration works.
The data comes back.
The feature works.
The client is happy.
But that doesn't necessarily mean the implementation is healthy.
There is a difference between:
“It works.”
and
“It is well engineered.”
As architects and engineers, we should care about both.
Then comes the next problem
Let's say you discover an issue with the cartridge after implementing it.
Maybe there is a performance problem.
Maybe there is an implementation issue.
Maybe there is some outdated code that is causing problems.
Now you generally have two choices.
You modify the cartridge yourself.
Or you wait for the vendor to release a new version.
I have seen this happen many times.
The client decides to wait.
“Let's wait for the next release. They will probably fix it.”
Maybe they will.
But until then, the problem remains.
And that means the technical debt remains too.
Sometimes the next release comes quickly.
Sometimes it doesn't.
And sometimes you end up building workarounds around the cartridge while waiting.
Eventually, those workarounds become part of your implementation.
And now the problem is no longer just inside the cartridge.
It has become part of your architecture.
This is what made me think about building something
I started thinking:
Why don't we review cartridges before we decide to depend on them?
Not just functionally.
Not just:
“Does it provide the integration we need?”
But from an engineering perspective.
How is the code structured?
How much duplication is there?
Are there performance concerns?
Is there old compatibility code?
Is the implementation maintainable?
Does it follow good SFCC patterns?
Are there security concerns?
Is it upgrade-friendly?
Are there things that an architect should know before bringing this code into a production storefront?
That is where the idea for this tool came from.
The goal is not to say “don't use this cartridge”
This is important.
The purpose of the audit is not to say:
“This cartridge is bad. Don't use it.”
Software is rarely that simple.
A cartridge might have some excellent engineering practices and still have areas that need attention.
It might solve a very complex problem extremely well while having some technical debt.
It might be perfectly suitable for one implementation but require additional consideration for another.
So instead of simply saying good or bad, I wanted to provide more context.
What is good?
What needs attention?
What could become a problem?
What should an architect know?
What are you actually taking on when you decide to use this cartridge?
Because reuse doesn't mean zero responsibility
I think this is the bigger idea behind the project.
We love reusing software.
And we should.
There is no reason to build everything from scratch.
But when we reuse something, we are not just reusing its functionality.
We are also inheriting its engineering decisions.
The architecture.
The code.
The dependencies.
The assumptions.
The technical debt.
The compatibility decisions.
The performance characteristics.
And sometimes, the problems.
So I built this tool to make those things more visible.
Not to replace an architect's judgment.
Not to tell someone what they should or should not use.
But to give architects and engineering teams another piece of information before they make that decision.
Because I would rather discover a problem before a cartridge becomes part of a production storefront than discover it six months later when customers are already using it.
That is why I built this tool.
Because “the cartridge already exists” should be the beginning of the conversation — not the end of it.
Savan Koradia
Salesforce B2C Commerce Architect
Sharing practical, experience-driven insights on Salesforce Commerce Cloud, performance optimization, and modern web architecture.
Read full bio & view all posts →