@jobber/components-native 0.105.2 → 0.105.4-addeditor-cab44cf.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,385 @@
1
+ # Voice & tone
2
+
3
+ If you work with Jobber — whether you're writing product copy, designing an
4
+ interface, building an AI feature, or crafting a marketing email — there's a
5
+ good chance you're speaking on behalf of the brand. To make sure we all sound
6
+ like the same Jobber, we have guidelines for voice and tone.
7
+
8
+ Our **voice** is our personality. It's consistent, recognizable, and doesn't
9
+ change regardless of who we're talking to or what we're building. Our **tone**
10
+ is how we apply that voice in a given moment. It shifts based on context and
11
+ audience, but it always operates within the boundaries the voice sets.
12
+
13
+ Think of it like this: you're the same person whether you're talking to a new
14
+ client or a longtime friend. Your personality doesn't change, but how you
15
+ express it does.
16
+
17
+ This document covers the foundational layer: what Jobber's voice is, how tone
18
+ works as a system, and the principles that apply everywhere. Audience-specific
19
+ guidance builds on this foundation and lives separately.
20
+
21
+ ## Jobber's voice
22
+
23
+ Jobber's voice is confident and direct, but never cold. We're loyal to our users
24
+ and hungry for their success, and that comes through in everything we write.
25
+ We're not especially cute, gentle, or goofy. There's a time and place for that,
26
+ but we're here to help people run better businesses, and our voice reflects
27
+ that.
28
+
29
+ We're also a collaborator, not just a tool. That means we show up with relevant
30
+ knowledge when it's needed, back users up when they're busy, and earn trust by
31
+ being consistent and transparent. We never make users feel talked down to, and
32
+ we never make them feel like they're on their own.
33
+
34
+ If something sounds stiff or unnatural out loud, it's probably not in our voice.
35
+
36
+ In practice, that means:
37
+
38
+ * **Lead with what matters.** Don't make people work to find the point.
39
+ * **Use the simplest word that does the job.** Never use jargon to sound
40
+ credible.
41
+ * **Be direct without being blunt.** Say what you mean, but stay human about it.
42
+ * **Show the work, not the complexity.** If something happens behind the scenes,
43
+ say what it did, not how it did it.
44
+ * **Don't perform positivity.** Sincerity lands better than enthusiasm.
45
+ * **Meet frustration with honesty and a clear path forward.**
46
+
47
+ ## Our priorities
48
+
49
+ When writing for Jobber, two things should always be true.
50
+
51
+ **Clarity first.** Every word should earn its place. If a message isn't
52
+ immediately understood, it isn't doing its job. Pick one thing to say and say it
53
+ well.
54
+
55
+ **Empathy always.** Put yourself in the user's position. What are they trying to
56
+ do right now? What do they already know? What would make this moment harder or
57
+ easier? Let those answers shape what you write.
58
+
59
+ Tone, energy, and detail level all follow from these two.
60
+
61
+ ## Tone
62
+
63
+ Our voice stays constant. Our tone adapts.
64
+
65
+ In product, tone shifts based on two things: the context the user is in, and
66
+ where they are in their journey with Jobber. Getting both right is the
67
+ difference between copy that feels generic and copy that feels like it was
68
+ written for this moment and this person.
69
+
70
+ ## Getting started
71
+
72
+ This is often the first time a user encounters a feature or flow. It's a moment
73
+ of potential — they're here because they want to do something. Don't waste it
74
+ with technical explanations or feature descriptions.
75
+
76
+ **Lead with the action.** Start with a verb. The user should know what to do
77
+ before they know why.
78
+
79
+ **Front-load the value.** Put the most important information first. Users scan
80
+ before they read — if the value isn't in the first few words, it may not land at
81
+ all.
82
+
83
+ **One idea at a time.** Don't bundle multiple instructions or benefits into a
84
+ single message. If there's more to say, expose the steps without explaining them
85
+ all upfront. Take it one at a time.
86
+
87
+ **Keep it short.** Aim for one sentence. Two at most.
88
+
89
+ **Avoid technical language.** Write for someone encountering this for the first
90
+ time. If a word needs explaining, replace it.
91
+
92
+ | ✅ **Do** | ❌ **Don't** |
93
+ | -------------------------------------------- | ------------------------------------------------------------------------- |
94
+ | Add your first client to get started | The client management module allows you to store and organize client data |
95
+ | Set up your schedule to start booking jobs | Welcome to the scheduling feature |
96
+ | Create a quote to start winning work | Quote creation is now available |
97
+ | Connect your bank account to get paid faster | Payment integration setup required |
98
+
99
+ ## Taking action
100
+
101
+ The user is focused and moving. Copy should serve the action, not compete with
102
+ it. Keep it minimal when the task is clear. Add context only when the
103
+ consequences aren't obvious or the stakes are high.
104
+
105
+ **Use active voice.** The user is the subject. They do things — things don't
106
+ happen to them.
107
+
108
+ **Be specific.** Generic labels create doubt. Tell the user exactly what will
109
+ happen when they act.
110
+
111
+ **Lead with a verb.** Button labels should start with an action word and use
112
+ title case. No punctuation.
113
+
114
+ **Match the weight of the action.** A routine task needs a short label. A
115
+ significant or irreversible action warrants a brief line of context — enough to
116
+ feel considered, not alarming.
117
+
118
+ **Never use filler labels.** Vague labels like "Click here" or "OK" tell the
119
+ user nothing. Even "Submit" on its own is ambiguous — "Submit Documents" or
120
+ "Submit Request" is always clearer. Every label should be meaningful on its own.
121
+
122
+ **Active voice applies to everything.** Not just buttons — confirmations,
123
+ instructions, helper text, error messages. If Jobber is doing something, say
124
+ "we." If the user is doing something, say "you." Passive voice creates distance
125
+ and ambiguity.
126
+
127
+ | ✅ **Do** | ❌ **Don't** |
128
+ | -------------------------------------------- | ----------------------------- |
129
+ | Send Quote | Submit |
130
+ | Schedule Job | OK |
131
+ | Add Line Item | Click here |
132
+ | Save Changes | Yes |
133
+ | Delete Client | Click here to proceed |
134
+ | Submit Documents | Submit |
135
+ | Your quote has been sent to Sarah | The quote was sent |
136
+ | We drafted this quote based on your last job | A draft has been generated |
137
+ | You haven't added any line items yet | No line items have been added |
138
+
139
+ ## Success
140
+
141
+ Most success states are routine. A job was scheduled, a quote was sent, changes
142
+ were saved. Acknowledge it clearly and move on. Users don't need enthusiasm —
143
+ they need confirmation.
144
+
145
+ **Be brief and specific.** Say what happened. Don't editorialize.
146
+
147
+ **Don't over-celebrate the ordinary.** Completing a normal workflow isn't an
148
+ achievement. Treating it like one feels hollow and, over time, erodes trust.
149
+
150
+ **Save celebration for milestones that actually matter.** First job booked,
151
+ first payment received, hitting a revenue goal — these are moments worth
152
+ marking. Celebrate the user's achievements, not Jobber's processes. Completing a
153
+ sync or finishing a setup step is Jobber doing its job, not the user doing
154
+ theirs.
155
+
156
+ ### Routine acknowledgment
157
+
158
+ | ✅ **Do** | ❌ **Don't** |
159
+ | ------------------------- | ---------------------------------------- |
160
+ | Quote sent to Sarah | Quote sent successfully! |
161
+ | Job scheduled for Tuesday | Great job! Your job has been scheduled! |
162
+ | Changes saved | Done! Everything's saved and good to go! |
163
+
164
+ ### Success with additional context
165
+
166
+ Sometimes completing an action unlocks something new. When it does, use the
167
+ moment to tell the user what's most relevant to them right now — not everything
168
+ that's changed, just what matters most in that moment.
169
+
170
+ | ✅ **Do** | ❌ **Don't** |
171
+ | -------------------------------------------------------------- | ---------------------------------- |
172
+ | Jobber Payments is set up. You can now accept payments online. | Integration successful! Great job! |
173
+
174
+ ### Milestone moments
175
+
176
+ | ✅ **Do** | ❌ **Don't** |
177
+ | ---------------------------------------------------------- | ------------------------------------ |
178
+ | Congrats, you've booked your first job. | Woohoo! First job unlocked! 🎉 |
179
+ | Milestone achieved: $100k in revenue this year. Nice work. | Amazing work! You're a superstar! 💰 |
180
+ | Your first payment just came in. That's a big deal. | 🎉 You got paid! Congrats!! |
181
+ | 100 jobs completed. You're building something real. | 100 jobs! You're on fire! 🔥 |
182
+ | Your first 5-star review. That's what it's all about. | Woohoo! Someone loves you! ⭐⭐⭐⭐⭐ |
183
+
184
+ ## Guidance
185
+
186
+ Good guidance is invisible. Users shouldn't notice it — they should just feel
187
+ like the product is easy to use. That means offering help at the right moment,
188
+ in the right amount, and then stepping back.
189
+
190
+ **Only guide when it adds something.** If the UI makes the next step obvious,
191
+ don't add text just to fill the space. Unnecessary guidance creates noise and
192
+ teaches users to ignore it.
193
+
194
+ **Be specific.** Generic instructions tell the user nothing they couldn't
195
+ already see. Guidance should relate directly to what the user is trying to do
196
+ and why it matters.
197
+
198
+ **Don't repeat the label.** Helper text exists to add context, not echo what's
199
+ already on screen. If a field is labelled "Business Name", the helper text
200
+ shouldn't say "enter your business name."
201
+
202
+ **Let the component and the moment guide you.** A tooltip is a quick answer to a
203
+ specific question. Helper text adds context before someone acts. An empty state
204
+ orients someone who has nothing to work with yet. Each has a different job —
205
+ match what you write to that purpose, not to how much space you have.
206
+
207
+ **Headlines and body copy work together, not in parallel.** The headline carries
208
+ the main idea. Body copy adds context that the headline can't. If you find
209
+ yourself repeating the headline in different words, you don't need body copy.
210
+ Every line should earn its place.
211
+
212
+ | ✅ **Do** | ❌ **Don't** |
213
+ | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
214
+ | **Get paid faster** / Accept card payments directly from quotes and invoices. | **Get paid faster** / Get paid faster with Jobber Payments. |
215
+ | **New in scheduling** / You can now drag and drop jobs directly on the calendar. | **New in scheduling** / We've made some improvements to the scheduling feature in Jobber. |
216
+
217
+ ### Empty states
218
+
219
+ | ✅ **Do** | ❌ **Don't** |
220
+ | ------------------------------------------------------------------------ | --------------------- |
221
+ | No jobs scheduled yet. Add your first job to get started. | No data to display |
222
+ | You haven't added any team members. Add someone to start assigning jobs. | No team members found |
223
+ | No clients yet. Add your first one to start sending quotes. | Nothing here yet |
224
+
225
+ ### Helper text
226
+
227
+ | ✅ **Do** | ❌ **Don't** |
228
+ | ----------------------------------------------------------------- | ------------------------ |
229
+ | This is the name your clients will see on quotes and invoices. | Enter your business name |
230
+ | Add your hourly rate so we can calculate job costs automatically. | Enter a number |
231
+ | Choose how far you're willing to travel for a job. | Set your service area |
232
+
233
+ ### General body copy
234
+
235
+ | ✅ **Do** | ❌ **Don't** |
236
+ | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
237
+ | Turn on automatic reminders to follow up with clients who haven't responded to a quote. | This feature allows you to configure automated reminder functionality for outstanding quotes. |
238
+ | Your team can see their schedule, update job status, and log time — all from the mobile app. | The mobile application provides team members with access to various job management capabilities. |
239
+ | Connect Jobber to QuickBooks Online to keep your books up to date without the double entry. | This integration enables synchronization between Jobber and QuickBooks Online accounting software. |
240
+
241
+ ## Errors
242
+
243
+ Something has gone wrong. This is not the moment for technical language, humor,
244
+ or vague reassurance. Users are frustrated or confused — meet them with clarity
245
+ and a way forward.
246
+
247
+ **Explain what happened in plain language.** You don't need to surface the
248
+ technical cause, but you do need to tell the user what went wrong in terms that
249
+ mean something to them.
250
+
251
+ **Always give a path forward.** An error without a next step leaves the user
252
+ stuck. Even if the fix is outside Jobber's control, tell them what to do.
253
+
254
+ **Don't blame the user.** Focus on the fix, not the fault. "That email address
255
+ is already in use" is better than "you entered a duplicate email."
256
+
257
+ **Don't be vague to avoid being technical.** "Something went wrong" on its own
258
+ is not helpful. Be as specific as the situation allows.
259
+
260
+ **Be human, not dramatic.** Errors are frustrating enough without the product
261
+ making them feel worse. Stay calm, stay clear.
262
+
263
+ | ✅ **Do** | ❌ **Don't** |
264
+ | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
265
+ | We couldn't save your quote. Check your connection and try again. | An error occurred while attempting to save the record. Please retry the operation. |
266
+ | That email address is already linked to an account. Try signing in instead. | The value entered in the email field already exists in the system. |
267
+ | We couldn't process your payment. Check your card details and try again. | Payment processing failed due to an invalid response from the payment gateway. |
268
+ | Something went wrong on our end. Try again or contact support. | Whoopsie! The servers are taking a little nap. Try again soon! 😴 |
269
+
270
+ ## High stakes moments
271
+
272
+ When an action is irreversible or has significant consequences, say so clearly.
273
+ Don't soften it to the point of ambiguity and don't dramatize it to the point of
274
+ panic. Just be direct about what's about to happen.
275
+
276
+ **State the consequence, not just the action.** "Delete" on its own isn't
277
+ enough. Tell the user what they'll lose.
278
+
279
+ **Don't bury the risk.** The consequence should be the first thing the user
280
+ reads, not a footnote.
281
+
282
+ **If something can't be undone, say so.** Don't leave users to assume the
283
+ consequences. A single clear line — "This can't be undone" — is better than
284
+ silence.
285
+
286
+ **Give a genuine out.** Cancel should always be an option, and it should be easy
287
+ to find.
288
+
289
+ **When a headline is present, let it name the action. Use the body to state the
290
+ consequence.**
291
+
292
+ | ✅ **Do** | ❌ **Don't** |
293
+ | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
294
+ | **Delete client** / Sarah Johnson and all her jobs, invoices, and history will be permanently removed. This can't be undone. | **Are you sure?** / Are you sure you want to delete this client? This action will delete the client. |
295
+ | **Cancel your plan** / Your team will lose access at the end of your current billing period. | **Cancel plan** / Canceling your plan will cancel your plan and all associated features. |
296
+ | You're over your team member limit. Purchase additional members or upgrade your plan. | User limit exceeded. Please review your subscription. |
297
+
298
+ ## AI insights
299
+
300
+ Jobber AI has access to two things most tools don't: knowledge of your business
301
+ and knowledge of the industry. A good insight draws on both. A generic one
302
+ wastes the moment.
303
+
304
+ **Be specific to the user.** An insight that could apply to anyone adds no
305
+ value. Ground it in what Jobber actually knows — their clients, their jobs,
306
+ their patterns.
307
+
308
+ **Ask before acting.** Where an action has consequences, check in first. A
309
+ prompt that says "want me to handle this?" respects the user's autonomy. One
310
+ that acts without asking undermines it.
311
+
312
+ **Surface yourself at the right moment.** An insight offered mid-task is an
313
+ interruption. One offered at a natural pause is a collaborator checking in.
314
+
315
+ **Say less.** If it takes more than two sentences to explain an insight, it
316
+ probably isn't ready to be surfaced yet.
317
+
318
+ | ✅ **Do** | ❌ **Don't** |
319
+ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
320
+ | You haven't followed up with 3 clients since last week. Want me to send a reminder? | Jobber AI has detected potential follow-up opportunities in your client list. |
321
+ | Jobs like this one usually take 2 hours. Want to update the estimate? | Based on historical data analysis, your time estimation may require adjustment. |
322
+ | Brian typically prefers morning appointments. Want to schedule accordingly? | Customer preference data suggests scheduling optimization may be beneficial. |
323
+
324
+ ## Motivation
325
+
326
+ Jobber's users are building something. There are moments in the product where
327
+ acknowledging that progress genuinely matters — not as a default tone, but as a
328
+ response to something real happening in their business.
329
+
330
+ **Identify the moment.** Motivation is earned, not assumed. The right moment is
331
+ one where the user has done something meaningful — hit a milestone, made a
332
+ decision, or is close to achieving a goal. Generic encouragement feels hollow.
333
+ Specific acknowledgment feels human.
334
+
335
+ **Match the energy to the moment.** A user closing in on a revenue goal deserves
336
+ more than a neutral confirmation. A user completing a routine task doesn't need
337
+ a pep talk.
338
+
339
+ | ✅ **Do** | ❌ **Don't** |
340
+ | ---------------------------------------------------- | -------------------------------------- |
341
+ | You're $2k away from your revenue goal. Keep going. | Great job completing your tasks today! |
342
+ | 10 quotes sent this week. That's your best week yet. | You're doing amazing! Keep it up! 🌟 |
343
+
344
+ ### Humor
345
+
346
+ A light touch can make Jobber feel human, but only when the moment genuinely
347
+ calls for it. Warmth and humor are not the same thing — a well-timed observation
348
+ that shows Jobber is paying attention will always land better than a joke.
349
+
350
+ Never use humor when a user is frustrated, confused, or at risk of losing
351
+ something. And never let it get in the way of clarity.
352
+
353
+ **In AI interactions**
354
+
355
+ These examples rely on Jobber knowing enough about the user to feel genuine
356
+ rather than generic.
357
+
358
+ | ✅ **Do** | ❌ **Don't** |
359
+ | ------------------------------------------------------- | -------------------------------------------------- |
360
+ | Still at it at 11pm. Let's get this done quickly. | Burning the midnight oil! You're a rockstar! 🌟 |
361
+ | Quiet week — looks like you've got some breathing room. | Wow, not many jobs this week! Hope things pick up! |
362
+
363
+ ## Technical rules
364
+
365
+ For full guidance on capitalization, punctuation, spelling, pronouns, dates, and
366
+ numbers, see [Formatting](../formatting/formatting.md). A few reminders on the rules
367
+ that most directly affect voice and tone:
368
+
369
+ * **American English spelling.** Labor, not labour. Customize, not customise.
370
+ * **Use "you" and "we".** Address users as "you". Refer to Jobber as "we". Avoid
371
+ referring to Jobber in the third person.
372
+ * **Oxford comma.** Use a comma before "and" or "or" in a list. "Jobs, quotes,
373
+ and invoices" not "jobs, quotes and invoices."
374
+
375
+ A few additional rules not covered in formatting:
376
+
377
+ **Use active voice.** Covered in taking action, but it applies everywhere. If
378
+ you find yourself writing "was" or "has been", check if active voice would be
379
+ clearer.
380
+
381
+ **Avoid absolute statements.** Don't make promises you can't keep. "Always",
382
+ "never", "guaranteed" set expectations that erode trust when they aren't met.
383
+
384
+ **Use contextual links.** Link meaningful words or phrases, not "click here" or
385
+ "read more". The link text should make sense on its own.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components-native",
3
- "version": "0.105.2",
3
+ "version": "0.105.4-addeditor-cab44cf.11+cab44cfa",
4
4
  "license": "MIT",
5
5
  "description": "React Native implementation of Atlantis",
6
6
  "repository": {
@@ -71,7 +71,7 @@
71
71
  "devDependencies": {
72
72
  "@babel/runtime": "^7.29.2",
73
73
  "@gorhom/bottom-sheet": "^5.2.8",
74
- "@jobber/design": "0.102.0",
74
+ "@jobber/design": "0.103.1-addeditor-cab44cf.11+cab44cfa",
75
75
  "@jobber/hooks": "2.21.0",
76
76
  "@react-native-community/datetimepicker": "^8.4.5",
77
77
  "@react-native/babel-preset": "^0.82.1",
@@ -122,5 +122,5 @@
122
122
  "react-native-screens": ">=4.18.0",
123
123
  "react-native-svg": ">=12.0.0"
124
124
  },
125
- "gitHead": "c76d3cfd8af83d2700a0e78c3bc2fc549771a471"
125
+ "gitHead": "cab44cfa1430ab6784636b2d3db8ad771db0999a"
126
126
  }