Notes About Our New PHP/JS Category

First, Hello, I’m James and I’m currently the reviewer for the PHP and JavaScript component categories. I thought it’d be a good idea to post something about these categories and exactly what we expect and what kind of items we approve.

Both the JavaScript and PHP categories essentially have the same objective; to provide a top-notch repository for quality PHP/JavaScript components.

We’re looking for a variety of components. Here are some qualities that come to mind:

  • Useful!
  • Fully-operable
  • Well-tested
  • Cleanly-coded
  • Easy-to-install

I can’t stress the “well-tested” point enough; we’ve received dozens of submissions that seem lacking in this crucial development phase, so, please make sure you take the time to test!

Another very important aspect is that your component is “easy-to-install”. Documentation and intuitive configuration files play a part – remember, the person using your component might not know PHP or JavaScript to the level that you do! You need to create something that caters to the vast cross-section of buyers we have here at ThemeForest.


Yes, I will look at your code. Normally, before I test your script locally, I will have a peek at the code. If it’s acceptable then I go on to testing the script’s functionality. So, make sure you’re using best practices in your code.

If, for some reason, your component is rejected, then please read the rejection message carefully. Sometimes, with PHP components, I’ll mention “separation of concerns”, by which, I mean that you probably haven’t separated your concerns. You’ll get this message if you’ve stuck all the HTML/CSS/JavaScript in one PHP file and you’re just echoing out all that stuff. Please don’t do this. It makes your component extremely difficult to customize! Sometimes, I realize, it’s very complicated to separate out these different things but I like to see a bit of effort. For instance, CSS should ALWAYS be in its own stylesheet; I’m not going to accept a component that just echos out all the CSS rules.

What Not to Submit

Most of the rejected JavaScript components have simply not been suitable for the category. If you submit a fading/whizzing/popping drop-down menu that uses jQuery then it’s normally not going to get approved. Anyone half-decent at jQuery can piece together something like that in 5 minutes. The net is already full of these types of things. If, on the other hand, you were to submit a fully-featured and customizable jQuery plugin that enhances a website in some totally unique way then it’ll almost definitely get approved – key words: “fully-featured” & “customizable” & “unique!”

(I know other JavaScript libraries exist but jQuery has been the most popular with the category thus far; feel free to submit non-jQuery scripts.)

Most of the components submitted so far have been quite good; some of them have been fantastic, and others leave a lot to be desired. Here’s a part out of a recent rejection message I sent to an author:

“Not re-inventing the wheel certainly does have its benefits and I can see you’ve taken advantage of many open-source/free scripts in your component (JW player, Uploadify etc.). The only problem is, with every open-source/free script you are, in fact, lowering the conceived value of your component. A couple of these scripts is perfectly okay and will probably benefit the component itself but when the component is, in essence, just an amalgamation of open-source/free scripts it suddenly becomes monetarily worthless.”

Remember, we want YOU to create the component! :)

Generally, assuming you’re proficient, the amount of time and effort put into a component will directly correlate with that component’s chance of being approved. So, if you knocked together a PHP class or jQuery plugin in 5 minutes then it probably won’t be good enough. Great things take to time to create.

One more thing; If something similar in functionality to your component can be found for free elsewhere online then it probably won’t be approved; we’re looking for unique items that don’t already exist on the bathroom-wall-of-code.

I also would like to say that I’ve been really impressed with many of the components submitted so far. A lot of effort has been put into them and for that I am grateful; we have a bunch of fantastic authors within this community; please continue your work because it’s awesome!


  • Vasili says:

    I think it’s extremely hard to find something that people would like to use, make it pretty, customizable, AND make it unique in the way that it’s nowhere else online. Even though I can code, I’m always at a road block because I don’t want to make something that you can easily get somewhere.

    I’ve had people ask me to make a “simple CMS”, but I don’t see the point because there are (probably) thousands of CMSes out there!

  • Bill Labus says:

    I didn’t have anything to do with this post, did I? :)

    But seriously, I do agree with Vasili, in that I think the hardest part is creating something that can’t be found elsewhere online. Perhaps not as much of an issue with PHP, but Javascript as a language is only so powerful, and there are only so many things that can be done with it. It seems highly unlikely that there are too many javascript plugin-like chunks of code that haven’t already been created in one form or another somewhere on the world wide web.

  • GreeD says:

    Almost all of the current scripts on themeforest can be found elsewhere online either in tutorials or as free pre-made scripts. I mean, look at them, Download counter, Guestbooks… 1000s are already online and free. There needs to be something that is new and usable that it not found anywhere else, or ThemeForest will not be a unique library.

  • Addy says:

    Hey James. I was very glad to hear that ThemeForest had added a new JavaScript/PHP section so I signed up to start uploading. I’m a Senior Web Developer that enjoys developing components and I have to say I’m disappointed with the level of service so far. I got together all the materials required for an application (as per the guidelines) and spent half an hour trying to upload an app through your system but an error keeps popping up saying that I haven’t uploaded a ZIP file. I’ve tried uploading a ZIP using many different compression apps but its the same issue across any browser at the moment. Could you guys take a look at it?

  • Fatma_qatar says:

    Vasili :the same here .. I can code but I can’t think of something unique that you can’t get for free around the web .. good luck hope you find what you are looking for :)

    Thanks James .. that was helpful .

  • will says:


    I like the cms idea, not because i will use it , but learn from it aswell.

    you should try get it added to the tuts+

    regarding PHP and javascript, i am glad theme forest have high standards , tho i dont mind paying for scripts i can pick up for free

    as i feel 90% of items on this site come fully commented and with support

    something that you simply dont get anywhere else

  • “we’re looking for unique items that don’t already exist on the bathroom-wall-of-code.”

    Looks like someone is reader of Coding Horror :P

    I’ve just submitted one of my PHP scripts so I’ll show how it goes and I might have some more up if it does quite well.

  • jc says:

    I really wish it were possible to filter this stuff out. These “templates” have been polluting the RSS feed. Can you guys offer an RSS feed that excludes PHP scripts?

  • Raymonn says:

    I have some ideas for you Vasili. I’m not a coder that’s why I can’t do it. But I’m a designer. I can design and HTML/CSS you to death, but I can’t make PHP work for me.

    So if you have time…I can surely tell you a few ideas that can be really cool ideas for scripts.

    I love the new script category. Can’t wait to see what people start to do.

  • kiziel says:

    If you submit a fading/whizzing/popping drop-down menu that uses jQuery then it’s normally not going to get approved.

    As i dont know jquery id like to see some extended fading/whizzing/popping dropdown menus, that could be easily customiazed and styled with css.