Background
I'm facing the challenge to adapt many VF pages already built to S1. After a long research I realised that there are many options to transforme a VF Page to be S1 compatible.
I understand that we have to avoid certain VF tags and controller/js actions. Also it is important to detect the application client in order to render the page best options (layout and controls).
Then I should render one "responsive" page or redirect the client to an specific Desktop/S1 page.
I also known that Lightning and Aura components will solve part of this but I have discarded that option because it is in beta/pilot and we need to deliver this now.
Question
What is the best patter to follow when you have to create a VF S1 page in order to maximize the UX and minimize the development/maintenance effort ?
Options
1) One responsive page: Creating one page using a responsive framework like bootstrap and Angular. This page should contains the entire functionality.
Pros:
- I only have to develop on VF
Cons:
- I don't have some standard components and we have to reduce the amount of items that the user can view/work in the desktop. Making the user experience worse in some cases.
- I am not able to use apex:detail and this increase the amount of time to add a field or make a simple change in the page.
- It will be very challenging to handle navigation in a unique way.
2) Two specific pages: The idea here is to detect the client and redirect to an specific page for that platform. Desktop could still using the existing one. S1 could use a new page built based on the previous responsive scheme.
Pros:
- I will have a full user experience
- I could use some standard components in desktop version
- I will be able to remove some trivial fields and related fields on mobile.
Cons:
- I will have to develop and maintain twice the same functionality.
Summing up
Probably there are not a silver bullet patter and we will be force to choose depending the content of each page. However, I would like to know if is there other options or pros/cons to consider before start the project.
Thanks