BLOG

Salesforce App Development: Package Types, Publishing to Appexchange, and Considerations

• Date: September 2023 •
Estimated reading time: 10 minutes
Salesforce Developer at Twistellar
Subscribe for more useful content
We promise we'll not spam your mailbox!
By submitting you agree to receive a newsletter from Twistellar. You can unsubscribe anytime.
One of the great things about Salesforce is its infinite customization options. Not only can you tailor it to suit your unique business needs but also create a universal solution for others to benefit from as well.
In this article, we will delve into the different types of packages and discuss the process of publishing packages to the Salesforce AppExchange, highlighting the advantages, disadvantages, time requirements, and potential challenges associated with package development. Let's go!
Contents:

Prepare for Salesforce App Development

You've got an idea, but before building your app, it's important to take into consideration all the steps you need to take before it is actually launched.
1. Define Package Scope. Clearly define the scope of your package by identifying the specific features, functionalities, and components it will include. This helps establish boundaries and ensures that the package meets the intended purpose.
2. Gather Requirements. Collaborate with stakeholders, including end users and business representatives, to gather requirements for the package. Understand their needs, pain points, and desired outcomes to shape the functionality and user experience of the package.
3. Design and Architecture. Based on the gathered requirements, create a design and architecture plan for the package. This plan should outline the structure, data model, workflows, user interface, and integration points of the package. Consider best practices, scalability, and extensibility while designing the package.
4. Develop and Configure Package Components. Use Salesforce development tools and metadata to implement the desired features and functionalities within the package. This includes writing Apex code, creating custom objects, configuring workflows, creating visualforce pages or Lightning components, and integrating with external systems if necessary.
5. Testing and Quality Assurance. Perform thorough testing to ensure the package functions as intended and meets quality standards. This includes unit testing, integration testing, system testing, and user acceptance testing. Test different scenarios, edge cases, and user workflows to identify and fix any issues or bugs.
6. Documentation. Create comprehensive documentation to guide users on installing, configuring, and using the package. This includes user guides, installation guides, release notes, and any other relevant documentation. Clear and concise documentation helps users understand the package and maximize its benefits.
7. Versioning and Release Management. Implement a versioning strategy to manage different releases of the package. Assign version numbers and maintain a release management process to track changes, enhancements, bug fixes, and new features. This ensures proper version control and allows users to keep track of updates.
8. Security and Permissions. Consider security requirements for the package. Define appropriate user permissions, access controls, and data security measures to ensure the package aligns with security best practices and meets compliance requirements since you'll have to pass the security review.
9. Licensing and Packaging. Determine the licensing model for your package, whether it's free, paid, or subscription-based. Utilize Salesforce packaging tools to create a package that bundles all the necessary components, dependencies, and configurations. This facilitates easy installation and deployment of the package in different orgs.
10. Distribution and Deployment. Decide on the distribution method for your package. It can be distributed through the listing on the Salesforce AppExchange, a private distribution channel, or directly to specific orgs. Plan and execute the deployment process, ensuring smooth installation and configuration of the package in target orgs.
Once your plan is ready, it's time to delve into the building phase.

Types of Packages: 1st Generation and 2nd Generation

1st Generation Packages (1GP) were the original packaging format in Salesforce. They are associated with a specific organization and contain metadata components and Apex code. However, 1GP packages have limitations in terms of version control and dependency management.
2nd Generation Packages (2GP) is a newer packaging format that offers enhanced features for packaging and distributing applications. They provide better version control, dependency management, and modular development. 2GP allows developers to create packages with flexible namespaces, making it easier to manage conflicts and dependencies.
Comparison of 1st Generation Packages (1GP) and 2nd Generation Packages (2GP)
Comparison of 1st Generation Packages (1GP) and 2nd Generation Packages (2GP)
Considering the advantages and disadvantages, it is recommended to use 2nd Generation Packages (2GP) for Salesforce package development. 2GP offers significant improvements over 1GP in terms of version control, dependency management, and customization options.
It provides a more streamlined development process, easier upgrades, and better scalability. Additionally, 2GP is designed for commercial distribution on the Salesforce AppExchange, making it a suitable choice for developers looking to reach a broader audience and monetize their applications.
While there may be a learning curve for developers transitioning from 1GP to 2GP, the benefits and long-term advantages outweigh the initial challenges. By leveraging 2GP, developers can take advantage of advanced packaging features, improve the maintainability of their packages, and provide a more flexible and customizable experience for subscribers.
It's important to thoroughly evaluate your specific requirements and consider factors such as project complexity, scalability needs, and future growth when making the decision to use 2GP.

Managed and Unmanaged Packages

Once your application is built, you'll have to package it using either managed (in most cases) or unmanaged types:
  • Managed Packages: Managed packages are designed for commercial distribution on the Salesforce AppExchange. They offer features like versioning, upgradability, and license management. Developers can protect their intellectual property by preventing access to the source code. Managed packages provide a clear separation between the package and the subscriber's org, ensuring easier maintenance and support.
  • Unmanaged Packages: Unmanaged packages are primarily used for distributing applications within an organization or for sharing code snippets. They do not offer the same level of versioning and upgradability as managed packages. Unmanaged packages provide full access to the source code, allowing customization and modification in the subscriber's org. However, this can result in potential challenges during upgrades and maintenance.

Prepare your Package for AppExchange

To create a Salesforce package and maintain it, you will need various resources and involve different roles. Here are the key resources and roles involved in building and maintaining a package, along with an overview of package preparation.

Tools Needed:

1. Salesforce Developer Edition Org. A dedicated Salesforce org for development and testing purposes. It provides a sandbox environment to build, package, and test your application.
2. Salesforce Metadata and Tools. Utilize Salesforce metadata types and tools such as Salesforce CLI, Salesforce DX, or Metadata API to create and manage your package components.
3. Version Control System. Implement a version control system like Git to track changes, collaborate with team members, and manage different versions of your package.
4. Testing Frameworks (not required). Implement automated testing using Apex unit tests, Selenium, or other testing frameworks to ensure the quality and stability of your package.
5. Documentation. Utilize tools like Markdown or a documentation platform to create user guides, installation guides, release notes, and any other documentation required for your package.
6. Packaging and Deployment Tools. Leverage Salesforce packaging tools, such as Salesforce CLI or the Packaging UI, to create and manage your package. These tools help define package metadata, dependencies, and versioning.
Roles Involved in Salesforce App Development
Roles Involved in Salesforce App Development

Pricing Considerations

Pricing for Salesforce packages varies based on several factors, including the package type, functionality, target market, and licensing models. Some packages are offered for free, while others are priced on a per-user basis or have tiered pricing structures. Pricing models can also include one-time fees, monthly subscriptions, or revenue-sharing arrangements with Salesforce.
Note! Beginning March 16, 2023, Salesforce has made changes to the pricing structure for security reviews on the AppExchange.
The updated pricing information is as follows:
1. The previous $2,550 initial review fee has been eliminated. Package developers will no longer be required to pay this fee when submitting their managed packages for security review.
2. The $150 annual fee, which was previously charged for maintaining security reviews on an annual basis, has also been eliminated. Developers will no longer need to pay this fee to keep their security reviews active.
3. For paid apps, the security review fee is now set at $999 per attempt. This fee will be charged for each security review attempt made for a paid solution on the AppExchange.
4. Salesforce is currently in the process of redefining the policy for Security Reviews for free solutions. As of the mentioned date, there are no fees for Security Reviews for free solutions. Salesforce will provide further information and guidelines regarding the new policy for free solutions in the near future.
It's important to note that pricing and policies may be subject to change, and it's always recommended to refer to the official Salesforce documentation or consult with Salesforce representatives for the most accurate and up-to-date pricing information regarding security reviews for managed packages on the AppExchange.

To Wrap Up

Salesforce package development offers a powerful way to distribute and monetize applications on the Salesforce platform.
Understanding the different package types, the process of publishing to AppExchange, pricing considerations, and the associated advantages, disadvantages, time requirements, and potential challenges is crucial for successful package development.
Our team has three successful products currently available on the AppExchange platform, and a vast experience of building apps for our partners and clients. If you need help in developing your Salesforce application for AppExchange, Twistellar's consultants and developers are here to guide you through the whole process.
Twistellar's team has carried out a number of industry-oriented projects and we are always open to discuss yours!
Chief Executive Officer at Twistellar Europe

Our deep understanding of Salesforce platform ensures successful handling of projects in any domain
By submitting you agree to receive a newsletter from Twistellar. You can unsubscribe anytime.
Our Best Articles and Salesforce Overviews
Feeling like teaming up with us at Twistellar? We are excited too! Whether you'd like to customize your org, build a bespoke application or integrate a third-party tool, Twistellar is ready to help you.
Get in touch to discuss your Salesforce ideas!