Skip to content

Commit 46505dc

Browse files
[all hosts] (iPad) Refresh iPad design article (#5305)
* Merge iPad design article * Fix redirection link * Add the iPad article back * Add property links * Update docs/concepts/add-in-development-best-practices.md Co-authored-by: Sam Ramon <[email protected]> --------- Co-authored-by: Sam Ramon <[email protected]>
1 parent 645423a commit 46505dc

File tree

2 files changed

+114
-81
lines changed

2 files changed

+114
-81
lines changed

docs/concepts/add-in-development-best-practices.md

Lines changed: 66 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -2,108 +2,115 @@
22
title: Best practices for developing Office Add-ins
33
description: Apply the best practices when developing Office Add-ins.
44
ms.topic: best-practice
5-
ms.date: 10/10/2024
5+
ms.date: 07/28/2025
66
ms.localizationpriority: medium
77
---
88

99
# Best practices for developing Office Add-ins
1010

11-
Effective add-ins offer unique and compelling functionality that extends Office applications in a visually appealing way. To create a great add-in, provide an engaging first-time experience for your users, design a first-class UI experience, and optimize your add-in's performance. Apply the best practices described in this article to create add-ins that help your users complete their tasks quickly and efficiently.
11+
Great add-ins provide unique, compelling functionality that extend Office apps in visually appealing ways. To build a successful add-in, you'll need to create an engaging first-time user experience, design a polished UI, and optimize performance. Follow the best practices in this article to help your users complete tasks quickly and efficiently.
1212

1313
[!INCLUDE [publish policies note](../includes/note-publish-policies.md)]
1414

1515
## Provide clear value
1616

17-
- Create add-ins that help users complete tasks quickly and efficiently. Focus on scenarios that make sense for Office applications. For example:
18-
- Make core authoring tasks faster and easier, with fewer interruptions.
19-
- Enable new scenarios within Office.
20-
- Embed complementary services within Office applications.
21-
- Improve the Office experience to enhance productivity.
22-
- Make sure that the value of your add-in is clear to users right away by [creating an engaging first-run experience](#create-an-engaging-first-run-experience).
23-
- Learn how to create an [effective AppSource listing](/partner-center/marketplace-offers/create-effective-office-store-listings) to promote your add-in.
24-
- Make the benefits of your add-in clear in your title and description. Don't rely on your brand to communicate what your add-in does.
25-
- Your add-in must provide sufficient value to justify users' investment. Your add-in shouldn't be a simple utility or of limited scope.
26-
- [!INCLUDE [AppSource enterprise info](../includes/appsource-enterprise.md)]
17+
Build add-ins that help users complete tasks quickly and efficiently. Focus on scenarios that make sense for Office apps, such as:
18+
19+
- Make core authoring tasks faster and easier with fewer interruptions.
20+
- Enable new scenarios within Office.
21+
- Embed complementary services within Office apps.
22+
- Improve the Office experience to enhance productivity.
23+
24+
Make sure users understand your add-in's value immediately by [creating an engaging first-run experience](#create-an-engaging-first-run-experience).
25+
26+
When you're ready to promote your add-in, learn how to create an [effective AppSource listing](/partner-center/marketplace-offers/create-effective-office-store-listings).
27+
28+
- Make your add-in's benefits clear in the title and description. Don't rely only on your brand to communicate what your add-in does.
29+
- Ensure your add-in provides sufficient value to justify users' investment. It shouldn't be just a simple utility or have limited scope.
30+
- [!INCLUDE [AppSource enterprise info](../includes/appsource-enterprise.md)]
2731

2832
## Create an engaging first-run experience
2933

30-
- Engage new users with a highly usable and intuitive first experience. Note that users are still deciding whether to use or abandon an add-in after they download it from the store.
34+
New users are still deciding whether to use or abandon your add-in after downloading it from the store. Here's how to win them over.
3135

32-
- Make the steps that the user needs to take to engage with your add-in clear. Use videos, placemats, paging panels, or other resources to entice users.
36+
- **Make the next steps clear.** Use videos, placemats, paging panels, or other resources to guide users through your add-in.
3337

34-
- Reinforce the value proposition of your add-in on launch, rather than just asking users to sign in.
38+
- **Lead with value, not registration.** Reinforce your add-in's value proposition when it launches rather than immediately asking users to sign in.
3539

36-
- Provide teaching UI to guide users and make your UI personal.
40+
- **Provide helpful guidance.** Include teaching UI to guide users and make the experience feel personal.
3741

3842
![A "Do" versus "Don't" comparison on how to guide your users to use the UI. The "Do" example shows an add-in that includes a button users can click to get started. The "Don't" example shows an add-in with no introductory steps or buttons.](../images/contoso-part-catalog-do-dont.png)
3943

40-
- If your content add-in binds to data in the user's document, include sample data or a template to show users the data format to use.
44+
- **Show users what to expect.** If your content add-in binds to data in the user's document, include sample data or a template to show users the expected data format.
4145

4246
![A "Do" versus "Don't" comparison on including an option to insert sample data in your add-in. The "Do" example shows an add-in that includes a button users can click to insert sample data. The "Don't" example shows an add-in without sample data or buttons.](../images/add-in-title.png)
4347

44-
- Offer [free trials](/partner-center/marketplace-offers/monetize-addins-through-microsoft-commercial-marketplace). If your add-in requires a subscription, make some functionality available without a subscription.
48+
- **Offer free trials.** If your add-in requires a subscription, make some functionality available without one.
4549

46-
- Make the sign-up experience simple. Prefill information, such as email and display name, and skip email verifications.
50+
- **Simplify sign-up.** Prefill information like email and display name, and skip email verifications when possible.
4751

48-
- Avoid pop-up windows. If you have to use them, guide the user to enable your pop-up window.
52+
- **Avoid pop-ups.** If you must use them, guide users on how to enable your pop-up window.
4953

50-
For patterns that you can apply as you develop your first-run experience, see [UX design patterns for Office Add-ins](../design/first-run-experience-patterns.md).
54+
For patterns you can apply when developing your first-run experience, see [UX design patterns for Office Add-ins](../design/first-run-experience-patterns.md).
5155

5256
## Use add-in commands
5357

54-
- Provide relevant UI entry points for your add-in by using add-in commands. For details, including design best practices, see [add-in commands](../design/add-in-commands.md).
58+
Provide relevant UI entry points for your add-in by using add-in commands. These commands help users discover and access your add-in's functionality directly from the Office ribbon. For details and design best practices, see [add-in commands](../design/add-in-commands.md).
5559

5660
## Apply UX design principles
5761

58-
- Ensure that the look and feel and functionality of your add-in complements the Office experience. See [Design the UI of Office Add-ins](../design/add-in-design.md).
62+
Follow these key principles to create add-ins that feel native to Office:
63+
64+
- **Match the Office experience.** Ensure your add-in's look, feel, and functionality complement the Office experience. See [Design the UI of Office Add-ins](../design/add-in-design.md).
5965

60-
- Favor content over chrome. Avoid superfluous UI elements that don't add value to the user experience.
66+
- **Prioritize content over chrome.** Avoid unnecessary UI elements that don't add value to the user experience.
6167

62-
- Keep users in control. Ensure that users understand important decisions, and can easily reverse actions the add-in performs.
68+
- **Keep users in control.** Make sure users understand important decisions and can easily reverse actions your add-in performs.
6369

64-
- Use branding to inspire trust and orient users. Don't use branding to overwhelm or advertise to users.
70+
- **Use branding thoughtfully.** Inspire trust and help orient users, but don't overwhelm or advertise to them.
6571

66-
- Avoid scrolling. Optimize for 1366 x 768 resolution.
72+
- **Minimize scrolling.** Optimize for 1366 x 768 resolution.
6773

68-
- Don't include unlicensed images.
74+
- **Use licensed images only.** Avoid legal and branding issues that come from unlicensed images.
6975

70-
- Use [clear and simple language](../design/voice-guidelines.md) in your add-in.
76+
- **Write clearly.** Use [clear and simple language](../design/voice-guidelines.md) in your add-in.
7177

72-
- Account for [accessibility](../design/accessibility-guidelines.md) - make your add-in easy for all users to interact with, and accommodate assistive technologies such as screen readers.
78+
- **Design for accessibility.** Make your add-in easy for all users to interact with and accommodate assistive technologies like screen readers. See our [accessibility guidelines](../design/accessibility-guidelines.md).
7379

74-
- Design for all platforms and input methods, including mouse/keyboard and [touch](#optimize-for-touch). Ensure that your UI is responsive to different form factors.
80+
- **Support all platforms and input methods.** Design for mouse/keyboard and [touch](#optimize-for-touch). Ensure your UI responds well to different form factors.
7581

7682
### Optimize for touch
7783

78-
- Use the [Context.touchEnabled](/javascript/api/office/office.context#office-office-context-touchenabled-member) property to detect whether the Office application that your add-in runs on is touch enabled.
84+
Touch support is essential for modern Office add-ins.
85+
86+
- **Detect touch support.** Use the [Context.touchEnabled](/javascript/api/office/office.context#office-office-context-touchenabled-member) property to detect whether the Office app your add-in runs on is touch-enabled.
7987

8088
> [!NOTE]
8189
> This property isn't supported in Outlook.
8290
83-
- Ensure that all controls are appropriately sized for touch interaction. For example, buttons have adequate touch targets, and input boxes are large enough for users to enter input.
84-
85-
- Don't rely on non-touch input methods like hover or right-click.
91+
- **Size controls appropriately.** Make sure all controls work well with touch interaction. For example, buttons need adequate touch targets, and input boxes should be large enough for users to enter text easily.
8692

87-
- Ensure that your add-in works in both portrait and landscape modes. Be aware that on touch devices, part of your add-in might be hidden by the soft keyboard.
93+
- **Don't rely on hover or right-click.** These input methods aren't available on touch devices.
8894

89-
- Test your add-in on a real device by using [sideloading](../testing/sideload-an-office-add-in-on-ipad.md).
95+
- **Support both orientations.** Ensure your add-in works in both portrait and landscape modes. Remember that on touch devices, the soft keyboard might hide part of your add-in.
9096

91-
> [!NOTE]
92-
> If you're using [Fluent UI React](../quickstarts/fluent-react-quickstart.md) for your design elements, many of these elements are built into the design system.
97+
- **Test on real devices.** Use [sideloading](../testing/sideload-an-office-add-in-on-ipad.md) to test your add-in on actual touch devices.
9398

9499
## Optimize and monitor add-in performance
95100

96-
- Create the perception of fast UI responses. Your add-in should load in 500 ms or less.
101+
Performance directly impacts user satisfaction. Follow these guidelines to keep your add-in fast and responsive:
97102

98-
- Ensure that all user interactions respond in under one second.
103+
- **Aim for quick loading.** Your add-in should load in 500 ms or less to create the perception of fast UI responses.
99104

100-
- Provide loading indicators for long-running operations.
105+
- **Respond quickly to interactions.** All user interactions should respond in under one second.
101106

102-
- Use a content delivery network (CDN) to host images, resources, and common libraries. Load as much as you can from one place.
107+
- **Show progress for long operations.** Provide loading indicators for operations that take time.
103108

104-
- Follow standard web practices to optimize your web page. In production, use only minified versions of libraries. Only load resources that you need, and optimize how resources are loaded.
109+
- **Use a CDN.** Host images, resources, and common libraries on a content delivery network (CDN). Load as much as possible from one place.
105110

106-
- If operations take time to execute, provide feedback to users. Note the thresholds listed in the following table. For additional information, see [Resource limits and performance optimization for Office Add-ins](../concepts/resource-limits-and-performance-optimization.md).
111+
- **Follow web optimization best practices.** In production, use only minified versions of libraries. Load only the resources you need and optimize how they're loaded.
112+
113+
- **Provide feedback for longer operations.** When operations take time to execute, give users feedback based on the thresholds in the following table. For more information, see [Resource limits and performance optimization for Office Add-ins](../concepts/resource-limits-and-performance-optimization.md).
107114

108115
|Interaction class|Target|Upper bound|Human perception|
109116
|:-----|:-----|:-----|:-----|
@@ -116,31 +123,32 @@ For patterns that you can apply as you develop your first-run experience, see [U
116123
|Extended|>500 ms|>10 seconds|Long enough to do something else while waiting. Might need feedback.|
117124
|Long running|>5 seconds|>1 minute|Users will certainly do something else.|
118125

119-
- Monitor your service health, and use telemetry to monitor user success.
126+
- **Monitor your service.** Use telemetry to monitor service health and user success.
120127

121-
- Minimize data exchanges between the add-in and the Office document. For more information, see [Avoid using the context.sync method in loops](correlated-objects-pattern.md).
128+
- **Minimize data exchanges.** Reduce data exchanges between your add-in and the Office document. For more information, see [Avoid using the context.sync method in loops](correlated-objects-pattern.md).
122129

123130
## Publish and market your add-in
124131

125-
- Create a [Partner Center account](/partner-center/marketplace-offers/open-a-developer-account). This could take some time. If you plan to publish your add-in to AppSource, get this process going as soon as possible.
126-
127-
- Create an [effective AppSource listing](/partner-center/marketplace-offers/create-effective-office-store-listings).
132+
Ready to share your add-in with the world? Here's how to get started.
128133

129-
- Use succinct and descriptive add-in titles. Include no more than 128 characters.
134+
- **Create a Partner Center account.** This process can take time, so if you plan to publish to AppSource, start early. See [Partner Center account](/partner-center/marketplace-offers/open-a-developer-account).
130135

131-
- Write short, compelling, and accurate descriptions of your add-in. Answer the question "What problem does this add-in solve?".
136+
- **Create an effective AppSource listing.** Follow these tips:
132137

133-
- Convey the value proposition of your add-in in your title and description. Don't rely on your brand.
138+
- Use succinct, descriptive titles (128 characters or fewer).
139+
- Write short, compelling descriptions that answer "What problem does this add-in solve?"
140+
- Convey your add-in's value proposition clearly in the title and description. Don't rely only on your brand.
134141

135-
- Create a website to help users find and use your add-in.
142+
Learn more about [creating effective AppSource listings](/partner-center/marketplace-offers/create-effective-office-store-listings).
136143

137-
- Publish your add-in to [AppSource](/partner-center/marketplace-offers/submit-to-appsource-via-partner-center). Be sure to follow the AppSource [prepublish checklist](/partner-center/marketplace-offers/checklist) and [submission guide](/partner-center/marketplace-offers/add-in-submission-guide).
144+
- **Publish to AppSource.** Follow the AppSource [prepublish checklist](/partner-center/marketplace-offers/checklist) and [submission guide](/partner-center/marketplace-offers/add-in-submission-guide). Make sure to:
138145

139-
- Ensure that your add-in works error-free in all operating systems, browsers, and devices supported by the minimum set of APIs declared in your add-in manifest.
146+
- Test your add-in thoroughly on all supported operating systems, browsers, and devices.
147+
- Provide detailed testing instructions and resources for certification reviewers.
140148

141-
- Provide detailed testing instructions and resources for certification reviewers to verify the functionality of your add-in.
149+
- **Create a website.** Help users discover your add-in outside of AppSource.
142150

143-
- [Promote your add-in](/partner-center/marketplace-offers/promote-your-office-store-solution) from your website.
151+
- **Promote your add-in** from your website. See [how to promote your add-in](/partner-center/marketplace-offers/promote-your-office-store-solution).
144152

145153
> [!IMPORTANT]
146154
> [!INCLUDE [AppSource enterprise info](../includes/appsource-enterprise.md)]

0 commit comments

Comments
 (0)