Packaging managé (Managed Packages) : bonnes pratiques

Le Managed Package est le format de distribution obligatoire pour toute application vendue sur AppExchange. Contrairement à un package non managé, il protège votre propriété intellectuelle (code masqué chez le client), autorise les mises à jour contrôlées, et impose une discipline architecturale stricte dès le premier jour. Voici les bonnes pratiques qui font la différence entre un package fragile et un package pérenne.

1. Choisir le bon type de package : 1GP ou 2GP

Salesforce propose deux générations de packaging managé :

Pour tout nouveau projet, 2GP managé est fortement recommandé : il s'intègre nativement aux pipelines CI/CD et facilite grandement la gestion des dépendances entre packages (unlocked packages internes, package de base + extensions).

2. Structurer le namespace et les métadonnées

Toute API exposée (objets, champs, classes Apex globales, composants LWC exposés) est préfixée par votre namespace. Quelques règles à suivre :

// Une classe globale devient un contrat public permanent
global class FactureService {
    global static Decimal calculerTotal(Id factureId) {
        // implémentation
    }
}

3. Gérer les dépendances proprement

Un package managé peut dépendre d'un autre package (interne ou tiers). Documentez explicitement ces dépendances dans sfdx-project.json et évitez les références circulaires. Pour les intégrations avec des API standard Salesforce, privilégiez toujours les interfaces publiques documentées plutôt que des contournements non supportés qui casseront lors des releases saisonnières (Spring, Summer, Winter).

4. Configurer les Custom Settings et Custom Metadata correctement

Pour la configuration propre à chaque client, distinguez bien :

Ne stockez jamais de secrets (clés API, identifiants) dans des Custom Settings ou Custom Metadata en clair : utilisez des Custom Metadata protégés combinés à des Named Credentials, ou un stockage chiffré dédié.

5. Anticiper la désinstallation et les limites partagées

Votre package cohabite dans un org avec d'autres applications et le code natif du client. Quelques précautions essentielles :

Un packaging managé bien conçu se reconnaît à sa capacité à évoluer sans casser les clients existants. Cela commence dès l'architecture initiale : namespace soigné, API publique minimale et volontairement restreinte, dépendances documentées. Revenir sur ces choix après la première publication est toujours plus coûteux que de les poser correctement dès le départ.

Besoin d'aide sur ce sujet ?

Notre équipe DevToSpace développe et publie des applications AppExchange de bout en bout, de l'idée à la Security Review.

Parler à un expert