a single source, nothing corroborates it
Take one platform at a time and stay native
Ship to a single platform, let years pass, then add the next, because a developer product that sells on feeling like a system component cannot use a cross-platform toolkit no matter how much engineering it would save. How fast you can adopt a new platform version is capped by the wrapper ecosystems your customers reach you through, so budget for maintaining the previous release while they catch up.
The method
- 01
Take a developer product to one platform at a time and let years pass between them rather than launching everywhere at once.
- 02
If your SDK sells on feeling native, cross-platform UI toolkits are off the table no matter how much engineering they would save, because the moment it stops feeling like a system component the main reason to buy it is gone.
- 03
Your ability to adopt a new platform version is capped by the wrapper ecosystems your customers reach you through, so budget for maintaining the previous major release while those third parties catch up.
- 04
Judge a new technology by what it forces on the people who buy from you, not by whether your own team enjoys it: if adopting it constrains their toolchain or inflates their binary, that cost is a reason not to buy.
- 05
Keep the public interface of a developer product in the idiom your buyer already knows and hide the shared internals, so adopting it demands no unfamiliar skills.
What it returned
- 2011
The iOS SDK shipped in 2011, Android followed three years later in 2014, and the web version was still in beta in 2016
- 2010
PSPDFKit shares a C++ core across iOS, Android and the browser but keeps every user interface layer native; the company went from one person in 2010 to 28 people in 2016
- 4.8
Adopting AndroidX early blocked their Cordova, Xamarin and React Native wrappers, so they kept shipping patches of 4.8 carrying fixes from 5.0 and 5.1 while waiting on Apache, Microsoft and Facebook
- 6
Shipping the SDK in Swift before a stable ABI would have pinned customers to the exact compiler version they built with and added roughly 6 MB per architecture, so the 600k line codebase stayed on Objective-C
Sources
- A Pragmatic Approach to Cross-Platform | Peter SteinbergerPeter Steinberger · steipete.me · Choosing The Right Strategy · 2016-04-12
- Real-time collaboration, Apple, and you | Peter SteinbergerPeter Steinberger · steipete.me · Putting It All Together · 2016-09-08
- Swifty Objective-C | Peter SteinbergerPeter Steinberger · steipete.me · Why not simply use Swift? · 2016-05-26
- How We Work at PSPDFKit | Peter SteinbergerPeter Steinberger · steipete.me · Backporting · 2019-07-03
the second source
Three plays a week, for the phase you are in
No roundup of links, no news. Three tactics more than one builder arrived at separately, with the numbers each one returned and the disagreements left in.
More in product
- Give away a tool that pulls its own audience7 unconnected
- Take many small shots instead of one big bet6 unconnected · contested
- Get it into real hands, or shape it first6 unconnected · contested
- Cap the hours and let the ceiling design the business6 unconnected · contested
- Set the bar for writing code deliberately high6 unconnected
- Buy nothing until there is revenue6 unconnected