16 Ugly Bugs Snap Didn’t Bother To Fix For Snap Kit And Lessons They Teach
Tags: snapchat, snapkit, mobiledevelopment, ios
Published: 2018-09-26 17:34:21

---
title: 16 Ugly Bugs Snap Didn’t Bother To Fix For Snap Kit And Lessons They Teach
published: true
description: Snapchat has many business problems, including the poor rollout of Snap Kit SDK
tags: snapchat, snap kit, mobile development, ios
---
[Original appears on Medium](https://medium.com/adventures-in-ios-mobile-app-development/16-ugly-bugs-snap-didnt-bother-to-fix-for-snap-kit-and-lessons-they-teach-4dd6c1aa567)
![](https://cdn-images-1.medium.com/max/880/0*-xvbtrI9d5aRFYR4.png)
![](https://cdn-images-1.medium.com/max/880/0*I33vVGAVcpNuyCVF.jpg)
## Snap has many business problems, including the poor rollout of Snap Kit SDK
I’m an iOS Hobbyist developer using Swift 4 and iOS 12 and have been working with Snap Kit now for many months. With over 10 Medium posts, I have been chronicling my struggles and victories with the SDK. I have run into a number of problems.

## Snapchat Snap Kit SDK Primer
Snap Kit is Snap’s attempt to go beyond its primary app offering. To grow and stay relevant, Snap login must be as prevalent as Facebook, Twitter, or Google’s authentication on Apps. GIFY has inserted itself into many other apps and Snap has the opportunity to do the same thing with AR content, Stories, Lenses, and Filters.

Snap Kit SDK is Snap’s attempt to become sticky.

The bugs described are purposefully written in “Bug Style” with the hope that each will actually get filed against Snap Kit SDK for Snapchat App

Some of the bugs documented below are nit-picky, however, Snap is in no position to allow even the slightest developer friction to occur. Snap’s future is partly riding on the success of Snap Kit, and the business has very little wiggle room to get things wrong. Winning over the developer community is paramount to Snap Kit SDK adoption.

Also, some of these could be considered feature requests, documentation requests or things that are “not bugs”. As someone with 20 years of software industry experience, I say these are “FAILURES” that need to be addressed (aka Bugs).

## Business Lessons
For each of the bugs, I have added advice on improving the business approach to software release
![](https://cdn-images-1.medium.com/max/880/0*6i1aTGVmYQm7Mcgs.jpg)
# Bugs
## 1 — Single Point Of Support
**Steps To Reproduce**

1. Go to https://docs.snapchat.com/docs/
2. Note the text
> Feedback?
We regularly update our documentation to give you everything you need for creative, easy integrations. If something’s not working for you, please report it to snapkit-support@snap.com.

Automated response text says:

>Hi there!” Learn more about Snap Kit by visiting support.snapchat.com/news/snapkit. If you have further questions please reach out to us at support.snapchat.com/i-need-help. Thanks!

There are a few issues with the automated response:

* Tells the customer who is seeking customer support to look at the news blog. The news blog is not designed as a customer support tool.
* Tells the customer if they need further assistance to go to “I need help”. This part of the Snapchat website is not designed to deliver developer nor customer facing support for Snap Kit. A look at that URL will show that there is no way to report a specific Snap Kit SDK issue and the user will feel like anything they report there will end up in a black hole.
* The automated response does not say that anyone will actually read the email the customer sent nor help. It only talks about where to go and what to read. It is far from customer friendly.

**Suggested Mitigation**

Reword the automated response:

Thank you for contacting Snap Kit Support. This automated response is to let you know we received your request and will be reaching out to you shortly

**Business Lesson**

When introducing a product that is outside current offerings, review all customer engagement vectors. Staff appropriately. Involve Quality Assurance and Technical Support from the start (involve all stakeholders)

![](https://cdn-images-1.medium.com/max/880/0*4cskYBastNPTg8De.jpg)

## 2 — Add Snap Kit SDK Support Options To ‘I Need Help’

**Steps To Reproduce**

1.  Go to
[http://support.snapchat.com/i-need-help](http://support.snapchat.com/i-need-help)

**Result**

Note the available options:

> What can we help you with?

> - My account login

> - Report a safety concern

> - My Snapchat isn’t working

> - My Snapstreaks disappeared . . .

None of these provide a clear option for someone seeking Snap Kit SDK assistance

**Suggested Mitigation**

Add an option for Snap Kit SDK Support

**Business Lesson**

Same as bug #1. A release of any product is more than just the product. It is
much more than just an announcement. A product launch team must be holistic and
represent every part of the company that has customer touchpoints or is
otherwise a stakeholder

![](https://cdn-images-1.medium.com/max/880/0*35rDznurqWcluDNq.png)

## 3 — Snapchat Support On Twitter Not Providing SDK Support

**Steps to Reproduce**

1. Go to
[https://twitter.com/snapchatsupport](https://twitter.com/snapchatsupport)<br>
2. Ask a Snap Kit question such as “Do we ask this account for help with Snap
Kit?”

**Result**

A number of problematic results occur. However, the key is that the team
delivering support through twitter is clearly not staffed to handle Snap Kit SDK
questions.

The initial response after step #2 above was a bot with a link to
[https://kit.snapchat.com/](https://kit.snapchat.com/). Clearly not a helpful
response to the question. Also, see the image directly above this bug writeup

The next response also seemed canned and perhaps a bot

> *We’ll need to look further into this. Head over to spr.ly/help and select the
> options that match your issue . . .*

That URL leads to the ‘I Need Help’ page and yields bug #2 above and is somewhat
related to bug #1 as well.

**Suggested Mitigation**

Modify the bots/automated response on Snapchat Support Twitter account such that
it handles Snap Kit queries appropriately.

**Business Lesson**

Think like your target customer. Follow the workflow of your target and test,
test, test. The website experience, the licensing experience, the onboarding,
test everything that could be an interaction with a customer — especially when
delivering a product whose likeness is brand new to your product line.

Stakeholders should have sign off authority on every customer touch point prior
to release

![](https://cdn-images-1.medium.com/max/880/0*I_OIaePwnPZ2k41X.jpg)

## 4 — Code Sample Error in Creative Kit Documentation

**Steps To Reproduce**

1.  Go to
[https://docs.snapchat.com/docs/creative-kit/](https://docs.snapchat.com/docs/creative-kit/)
1.  Scroll down to this


**Result**

This line is not correct


It should be **SCSDKPhotoSnapContent** rather than SCSDKSnapPhotoContent (see
also bug #5 below)

**Suggested Mitigation**

Please correct the documentation.

There is a larger issue with the SDK itself. The naming is inconsistent — see
bug #5

**Business Lesson**

All documentation should be tested by professional Quality Assurance Engineers.
Documentation is a product. Documentation is just as much a part of the product
as any other piece.

Also, eat your own dogfood!

![](https://cdn-images-1.medium.com/max/880/0*9zjf-1Su1udkgWJa.jpg)

## 5 — Naming Inconsistencies with Creative Kit

In Creative Kit there is a method with the name ‘SCSDKSnapPhoto’

Carefully notice the pattern of the name. The first word is **Snap** and second
the word **Photo**

Creative Kit also has the method ‘SCSDKPhotoSnapContent’

Notice the naming method is not consistent. The word **Snap** comes before
**Photo**, but in this case, the word **Photo** comes before the word **Snap**

SCSDK**Snap***Photo*<br>  SCSDK*Photo***Snap**Content

This same issue is repeated with these pairs of methods from Creative Kit:<br> 
‘SCSDKSnapVideo’ and ‘SCSDKVideoSnapContent’

In ‘SCSDKSnapVideo’ the word **Snap** comes before **Video**, however here
‘SCSDKVideoSnapContent’ the word **Video** comes before the word **Snap**

**Suggested Mitigation**

1.  Scan all documentation and sample code for accuracy
1.  Consider renaming such that the pairs are consistent
1.  Provide multiple paths for developers to learn about the change and conduct a
comprehensive documentation review

**Business Lesson**

Have multiple code reviews and involve people in the organization with fresh
eyes and perspectives

![](https://cdn-images-1.medium.com/max/880/0*0P_WzVsrzHwHjYKG.jpg)

## 6 — Login Scopes Information Misplaced

**Steps To Reproduce**

1.  Go to
[https://docs.snapchat.com/docs/login-kit/](https://docs.snapchat.com/docs/login-kit/)

**Result**

The entire section titled **Understanding Scopes** seems misplaced. The section
is the first section for Login Kit.

Further, the section provides code for iOS Info.plist **yet** this page is a
generic page contains both iOS and Android instruction. So starting the document
off with strictly iOS information is odd at best.

**Suggested Mitigation**

Move this text to the **Getting Started** section on this page to a more logical
location.

**Business Lesson**

Test the documentation. Run “eat your own dogfood” testing sessions.

![](https://cdn-images-1.medium.com/max/880/0*AVKd7RXnfSCUKcyK.jpg)

## 7 — Embedded Binaries Documentation Can Be Replaced Or Augmented To Include
Cocoapod

**Steps To Reproduce**

1. Go to
[https://docs.snapchat.com/docs/login-kit/](https://docs.snapchat.com/docs/login-kit/)<br>
2. Inspect the **Getting Started** section

**Result**

> *In your app project in Xcode, add SCSDKCoreKit.framework and
> SCSDKLoginKit.framework into General — Embedded Binaries.*

The above text is correct, yet incomplete. Snap Kit now offers a Cocoapod
install solution.

**Suggested Mitigation**

Add information about how to use the Cocoapod option for installing Snap Kit

**Business Lesson**

Put in place checklists, sign-offs, and workflows such that when a change occurs
(such as releasing a cocoapod) others who have customer reach can act and review
customer-facing assets.

![](https://cdn-images-1.medium.com/max/880/0*_OSPtTa9JlCDDYAi.jpg)

## 8 — Snap Kit SDK Naming

**Steps To Reproduce**

1.  Go to [https://github.com/SnapKit/SnapKit](https://github.com/SnapKit/SnapKit)
or [http://snapkit.io/](http://snapkit.io/)

**Result**

The name of this well-established code line is SnapKit, which can cause
confusion with Snap Kit.

**Suggested Mitigation**

Although it is late, it is important to note this issue. SnapKit has existed for
at least 4 years and is fairly popular with iOS developers. A google search
prior to choosing the name of Snap Kit would have been wise. Further, if Snap is
not using an outside name search service, it would be helpful to consider doing
that for future naming

**Business Lesson**

Run naming searches

![](https://cdn-images-1.medium.com/max/880/0*TdEUjfYdsF1JEb2t.jpg)

## 9 — UI of Developer Portal Confusing

1.  With a user id and password login at
[http://kit.snapchat.com](http://kit.snapchat.com/)

![](https://cdn-images-1.medium.com/max/880/0*Ek7Kh-GhwZuWxVXg.png)

This UI does not lend itself to a clear understanding that there are two
distinct areas. The above image explains the problem best. It is not very clear
that there are two sections here. There is no line between them and the title
*App Info* on the right side does not clearly denote the left side as applying
to production (rather than development on the right side).

**Suggested Mitigation**

At a minimum, place a vertical line between the two areas *App Info* and
*Development App Info*.

Also, change the titles of the OAUTH2 CLIENT ID fields so that they read
**PRODUCTION **OAUTH2 CLIENT ID and **DEVELOPMENT **OAUTH2 CLIENT ID

**Business Lesson**

Don’t assume anything. Involve professional Quality Engineers in **all** aspects
of the product launch. Hire UX/UI designers when a UX/UI is part of the product.
And yes, consider anything customer facing — such as a dev portal — to be **part
of the product!**

![](https://cdn-images-1.medium.com/max/880/0*GvPd0vyVc79b7vLQ.jpg)

## 10 — Unlink Sessions Methods Do Not Include Thrown Errors

1. Go to
[https://docs.snapchat.com/docs/login-kit/](https://docs.snapchat.com/docs/login-kit/)<br>
2. Inspect the information on unlinking Sessions


**Result**<br> Neither of the two methods throws errors in the case of unlink
failure

* SCSDKLoginClient.unlinkCurrentSessionWithCompletion
* SCSDKLoginClient.unlinkAllSessionsWithCompletion

### Suggested Mitigation

Include code to throw errors

**Business Lesson**

Think through the use cases for the product. Think through the possible failure
points.

![](https://cdn-images-1.medium.com/max/880/1*GMVgcavj4mdFRxMwF4kqWw.jpeg)

## 11— Snap Kit Twitter Account Not Active Nor Informative For Devs

**Steps To Reproduce**

1.  Go to [https://docs.snapchat.com/docs/](https://docs.snapchat.com/docs/)
1.  Note the text

> To stay up to date with our SDKs, see what’s new and follow @snapkit on Twitter.

1.  Review the tweets from @snapkit on Twitter

Although the twitter account @snapkit was established on May 2018, and it is now
September 2018, there are 4 total tweets. None are directed to software
developers

**Suggested Mitigation**

The marketing team who owns this account needs to start producing and posting
more content and the account should also post with information that reflects the
“see what’s new” statement in the documentation.

**Business Lesson**

As with bug #7 and others, there must be a cohesive release strategy that
includes all aspects of the product and its delivery to market. All departments
that could have customer facing assets should be consulted

![](https://cdn-images-1.medium.com/max/880/1*Xrfkf3IP0RDMI3wVlYaSCQ.jpeg)

## 12 — API Reference For iOS First Paragraph Seems Out Of Date

**Steps To Reproduce**

1. Go to
[https://docs.snapchat.com/docs/api/ios/](https://docs.snapchat.com/docs/api/ios/)<br>
2. Note the text

**Result**

> This documentation assumes you already made contact with us

I think this text was written when Snap Kit was in beta or had a small and
managed audience. And, the text is confusing. There are no instructions here
about how someone makes contact.

**Suggested Mitigation**

Remove the sentence or, if contact is required, explain how and why

**Business Lesson**

Test the documentation.

![](https://cdn-images-1.medium.com/max/880/1*pDrmvNLp72HkYT9KhumJ1g.jpeg)

## 13— Snap Kit Support Boilerplate Not Helpful

**Steps To Reproduce**

1.  Send a support request to
[snapkit-support@snap.com](mailto:snapkit-support@snap.com)
1.  After the initial automated response documented in bug #1 above and others, wait
for and then read the “live human” support response

**Result**

> *Chuck (Snap Connect) Hello there, Thanks for reporting this! In order for us to
> debug this better, could you please provide the following information*

> *- Username*

> *- Client ID*

> *- Specific URLs or assets used*

> *- Info.plist (if there’s no sensitive information) Code sample if possible
> Screen recording and or screenshots*

> *- IP address*

**Suggested Mitigation**

I have sent a number of different requests to support and have seen this
boilerplate response from Chuck. Since every SDK engagement is different, this
text is not helpful. In face, I had asked a specific question about the
developer portal and then saw this text. It made me feel that my support issue
was not even read, and that the support tech did not bother to read or care
about my issue.

Either modify the text for inclusiveness, or change SOP such that support reps
no longer use the boilerplate (or use it with greater thought)

(IP Address .. really? For what? This isn’t an enterprise app.)

**Business Lesson**

Walk through mock customer experiences prior to release. Test the customer
workflows.

![](https://cdn-images-1.medium.com/max/880/1*LXboWKmfr0857092m2rEWg.png)

## 14 — Missing Example Code

**Steps To Reproduce**

1.  Go to [https://github.com/Snap-Kit](https://github.com/Snap-Kit)

**Result**

* No code samples for Android
* One sample exists for iOs, but only covers Bitmoji

**Suggested Mitigation**

Supply Example Code For All Kits and both iOS and Android

**Business Lesson**

Over-support your target customer, rather than under-support. This is even more
critical when the product is new and when the product is an important piece of
the wider company strategy. Clearly Snap Kit is a critical part of Snap’s
marketplace moves

![](https://cdn-images-1.medium.com/max/880/1*4xzADAmZ6Xuam0ir2l1uHQ.jpeg)

## 15 — Snap Kit Support (more) Boilerplate Not Helpful

**Steps To Reproduce**

1.  Send a support request to
[snapkit-support@snap.com](mailto:snapkit-support@snap.com)
1.  After the initial automated response documented in bug #1 above and others, wait
for and then read the “live human” support response

**Result**

> Our team is investigating and will follow up if we need more information.<br>
> Thanks, Chuck

This response does not include any information on timing for a response. The
customer has no idea what to expect.

**Suggested Mitigation**

Either do not use boilerplate or change the boilerplate text to include verbiage
for expectation setting

**Business Lesson**

See bug #13 and others. Technical Support and Quality Assurance should act as
the last line of defense for the customer prior to releasing any product

## 16 — Unexpected status code

**Steps To Reproduce**

I’m working with snap support now on this. I do not currently know how to
reproduce other than the fact that my code can reproduce this at will. The code
segment related is:

    let api = SCSDKSnapAPI(content: snap)

    api.startSnapping { error in

    if let error = error {
             print(error.localizedDescription)
         }

**Result**

> Snap Kit Server responded with an unexpected status code.

> 2018–09–14 15:22:22.249561–0700 FunSnap[7881:4578160] [SnapKit]
> path=/v1/sdk/metrics/operational headers_subset={

> “X-Cloud-Trace-Context” = “D55DD084290C4941BB1149CE33521F98/0;o=1”;

**Suggested Mitigation**

1.  Errors need to be human readable and text should, as much as possible, assist in
self-service troubleshooting
1.  Whatever the root cause is, there is a bug here
1.  Publish a Knowledge Base or other customer-facing self-service tool

## TL;DR

Snap’s release of Snap Kit is faulty in almost every conceivable aspect

Business Lessons Include:

* Release management must bring all stakeholders to the table early in the release
process. They must also consult with these stakeholders throughout the release
cycle
* Stakeholders for a release include representatives from all customer-facing
departments as well as Quality Assurance
* Documentation is a part of the product and must undergo the same rigorous review
as any other part
* A web portal is part of the product and must undergo the same rigorous review as
any other part
* Conduct “eat your own dogfood” prior to releases
* Test the end to end customer experience, which includes technical support
engagement, website, social media platforms where you have an outlet,
documentation, licensing and more
* Conduct a “blind corner” review to help root out incomplete, inaccurate or out
of date documentation and announcements. For example, there may be code on
GitHub that requires updating.

## If You Liked This Post, Try One Of These

* [Snapchat Snapkit Developer Support Sadly
Sad](https://medium.com/adventures-in-ios-mobile-app-development/snapchat-snapkit-developer-support-sadly-sad-89d63011c6ad)
* [Introducing Snapchat Snapkit DIY
Docs](https://medium.com/adventures-in-ios-mobile-app-development/introsnapkitdiy-d7b1b677c7d9)
* [The Very Broken Silicon Valley Hiring Process And How To Fix
It](https://medium.com/adventures-in-ios-mobile-app-development/the-very-broken-silicon-valley-hiring-process-and-how-to-fix-it-683e0c851f14)

## Contact

* [LinkedIn](http://linkedin.com/in/brucebookman)
* Twitter: [@](https://medium.com/@brucebookman)brucebookman
* Mastodon: @brucebookman@mastodon.technology
* [GitHub](https://github.com/bbookman)

[←
Previous](https://medium.com/adventures-in-ios-mobile-app-development/the-very-broken-silicon-valley-hiring-process-and-how-to-fix-it-683e0c851f14)
| [Next
→](https://medium.com/adventures-in-ios-mobile-app-development/snapchat-snap-kit-sdk-tutorial-for-ios-swift-311863074bab)

* [iOS](https://medium.com/tag/ios?source=post)
* [Snap Kit](https://medium.com/tag/snapkit?source=post)
* [Snapchat](https://medium.com/tag/snapchat?source=post)
* [Android](https://medium.com/tag/android?source=post)
* [Augmented Reality](https://medium.com/tag/augmented-reality?source=post)

From a quick cheer to a standing ovation, clap to show how much you enjoyed this
story.

## [Bruce Bookman](https://medium.com/@brucebookman)

## [Adventures in iOS mobile app
development](https://medium.com/adventures-in-ios-mobile-app-development?source=footer_card)

One iOS Swift developer's journey. Problems, solutions, opinion and more